2015-11-21 7 views
3

Я читаю строку Split. Я отправляю данные из C# в Excel, и некоторые из этого текста могут быть довольно длинными. Таким образом, без использования переноса слов или автозапуска с помощью Excel. Я хотел бы, чтобы данные разрывались в определенный момент и продолжались до строки ниже нее. Можно ли это сделать? ProdDescription - это целевое поле здесь. Вот код, я использую, чтобы отправить основные данные по:C# Split String to Excel

 worksheet.Cells[3, "E"].Value = txtCustomer.Text; 
     worksheet.Cells[4, "E"].Value = txtDate.Text; 
     worksheet.Cells[5, "E"].Value = cboTerms.Text; 
     worksheet.Cells[6, "E"].Value = txtProposalID.Text; 
     worksheet.Cells[10, "D"].value = frmProposal.QtyMaintxt.Text; 
     worksheet.Cells[10, "E"].value = frmProposal.ProdName.Text; 
     worksheet.Cells[11, "E"].value = frmProposal.ProdDescription.Text;** 
     worksheet.Cells[10, "F"].value = frmProposal.ListPrice.Text; 
     worksheet.Cells[10, "G"].value = frmProposal.MaxDiscount.Text; 
+1

AFAIK, такого метода в BCL нет, из коробки. Вы хотите просто вставить разрывы строк, но оставить текст в отдельной ячейке в Excel или хотите, чтобы обернутые строки занимали соседние ячейки вниз? В любом случае было бы довольно сложно предсказать правильную границу, по которой вам нужно сломать линии, даже если вы планируете использовать шрифт фиксированной ширины в Excel. –

ответ

1

Попробуйте так:

 string s = "This is a rather long text. This is a rather long text. This is a rather long text. This is a rather long text. This is a rather long text. This is a rather long text. "; 
     s += "This is a rather long text. This is a rather long text. This is a rather long text. This is a rather long text. This is a rather long text. This is a rather long text. "; 
     s += "This is a rather long text. This is a rather long text. This is a rather long text. This is a rather long text. This is a rather long text. This is a rather long text. "; 

     var words = s.Split(new char[] { ' ' }); 

     int maxLineCount = 35; 
     var sb=new System.Text.StringBuilder(); 

     string part=words[0]; 
     int i=1; 
     while (true) { 
      if (i >= words.Length) 
       break; 
      if ((part + " " + words[i]).Length < maxLineCount) 
       part += " " + words[i]; 
      else { 
       sb.AppendLine(part); 
       part = words[i]; 
      } 
      i++; 
     } 
     var result = sb.ToString(); 

Вы можете написать сгенерированные «линии» в массив или непосредственно в клетки слишком , Я просто использовал Stringbuilder, чтобы легко проверить результат ...