如何以编程方式在C#中的Excel单元格中插入新行?

我正在使用Aspose库来创build一个Excel文档。 在某个单元格的某处,我需要在文本的两个部分之间插入一个新的行。

我试过“\ r \ n”但是不起作用,只是在单元格中显示两个方形符号。 但是,我可以按Alt + Enter在同一个单元格中创build一个新行。

如何以编程方式插入新行?

从Aspose Cells论坛: 如何在一个单元格中使用新的行字符?

提供文本后,您应该将单元格的IsTextWrapped样式设置为true

worksheet.Cells[0, 0].Style.WrapText = true; 
 cell.Text = "your firstline<br style=\"mso-data-placement:same-cell;\">your secondline"; 

如果您从DB获取文本,则:

 cell.Text = textfromDB.Replace("\n", "<br style=\"mso-data-placement:same-cell;\">"); 

您需要插入Excel使用的字符代码,其中IIRC是10(十)。


编辑 :好的,这是一些代码。 请注意,通过创build一个包含以下内容的单元格,我可以确认所使用的字符代码的确是10:

一个

…然后select它并在VBA立即窗口中执行:

 ?Asc(Mid(Activecell.Value,2,1)) 

因此,您需要将该值插入到VBA中的另一个单元的代码将是:

 ActiveCell.Value = "A" & vbLf & "B" 

(因为vbLf是字符码10)。

我知道你正在使用C#,但是我发现如果你先在VBA中做什么,找出该做什么容易得多 ,因为你可以“交互式”地进行testing,而不必编译任何东西。 无论你在C#中做什么,只是复制你在VBA中所做的事情,所以几乎没有任何区别。 (请记住,C#interop的东西只是使用与VBA相同的底层COM库)。

无论如何,C#为此将是:

 oCell.Value = "A\nB"; 

指出不同 :-)


编辑2 :啊! 我只是重新读这篇文章,看到你正在使用Aspose库。 对不起,在这种情况下,我不知道。

内部Excel使用U + 000D U + 000A(CR + LF, \r\n )作为换行符,至less在其XML表示中。 我也无法直接在单元格中find值。 它被迁移到另一个包含共享string的XML文件。 也许包含换行符的单元格按文件格式进行不同的处理,并且库不知道这一点。

SpreadsheetGear for .NET是这样做的:

  IWorkbook workbook = Factory.GetWorkbook(); IRange a1 = workbook.Worksheets[0].Cells["A1"]; a1.Value = "Hello\r\nWorld!"; a1.WrapText = true; workbook.SaveAs(@"c:\HelloWorld.xlsx", FileFormat.OpenXMLWorkbook); 

请注意“WrapText = true” – Excel不会在没有这个的情况下包装文本。 我会假设Aspose有类似的API。

免责声明:我自己的SpreadsheetGear LLC

“\ n”正常工作。 如果input来自多行文本框,则新行字符将为“\ r \ n”,如果replace为“\ n”,则该行将起作用。

如果有人对Infragistics解决scheme感兴趣,请点击这里。

  1. 使用

    Environment.NewLine

  2. 确保你的细胞被包裹

    dataSheet.Rows[i].Cells[j].CellFormat.WrapText = ExcelDefaultableBoolean.True;

你有没有尝试“\ n”我想,它应该工作。

其实这很简单

你可以编辑一个xml版本的excel。 编辑一个单元格给它之间的新的文字行,然后保存它。 之后你可以在编辑器中打开这个文件,然后你会看到一个新的行由&#10;

试试….

使用PEAR“Spreadsheet_Excel_Writer”和“OLE”:

只有这样,我才能得到“ \n ”才能使单元$format->setTextWrap(); 然后使用“ \n ”将工作。

你可以使用Chr(13)。 然后用Chr(34)把整个东西包起来。 Chr(34)是双引号。

  • VB.Net示例:
  • TheContactInfo =“”
  • TheContactInfo = Trim(TheEmail)&chr(13)
  • TheContactInfo = TheContactInfo&Trim(ThePhone)&chr(13)
  • TheContactInfo = Chr(34)&TheContactInfo&Chr(34)