24

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

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

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

4

13 回答 13

31

来自 Aspose Cells 论坛:如何在单元格中使用新行字符?

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

worksheet.Cells[0, 0].Style.WrapText = true;
于 2009-07-24T13:48:08.750 回答
9
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;\">");
于 2011-01-14T22:31:26.280 回答
5

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


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

一种

...然后选择它并在 VBA 即时窗口中执行它:

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

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

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

(因为 vbLf 是字符代码 10)。

我知道您使用的是 C#,但我发现如果您首先在 VBA 中执行此操作,则更容易弄清楚要做什么,因为您可以“交互式”地尝试它,而无需编译任何东西无论您在 C# 中做什么,都只是复制您在 VBA 中所做的,因此几乎没有任何区别。(请记住,C# 互操作只是使用与 VBA 相同的底层 COM 库)。

无论如何,用于此的 C# 将是:

oCell.Value = "A\nB";

指出不同 :-)


编辑 2:啊啊啊!我刚刚重新阅读了这篇文章,发现您正在使用 Aspose 库。对不起,在那种情况下我不知道。

于 2009-07-24T09:18:37.613 回答
3

Excel 在内部使用 U+000D U+000A (CR+LF, \r\n) 作为换行符,至少在其 XML 表示中是这样。我也无法直接在单元格中找到该值。它已迁移到另一个包含共享字符串的 XML 文件。也许包含换行符的单元格被文件格式以不同方式处理,而您的库不知道这一点。

于 2009-07-24T09:38:20.820 回答
2

如果有人对 Infragistics 解决方案感兴趣,就在这里。

  1. 采用

    Environment.NewLine

  2. 确保您的电池已包裹

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

于 2012-10-01T12:37:25.480 回答
1

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

于 2009-07-24T13:35:10.560 回答
0

"\n" 工作正常。如果输入来自多行文本框,则新行字符将为“\r\n”,如果将其替换为“\n”,它将起作用。

于 2009-09-17T13:27:10.047 回答
0

使用 PEAR 'Spreadsheet_Excel_Writer' 和 'OLE':

我可以让“”工作的唯一方法\n是制作单元格$format->setTextWrap(); ,然后使用“ \n”将工作。

于 2011-03-11T15:56:53.430 回答
0

您可以使用 Chr(13)。然后将整个东西包裹在 Chr(34) 中。Chr(34) 是双引号。

  • VB.Net 示例:
  • 联系信息 = ""
  • TheContactInfo = Trim(TheEmail) & chr(13)
  • TheContactInfo = TheContactInfo & Trim(ThePhone) & chr(13)
  • TheContactInfo = Chr(34) & TheContactInfo & Chr(34)
于 2013-08-30T14:01:20.977 回答
0

什么对我有用:

worksheet.Cells[0, 0].Style.WrapText = true;
worksheet.Cells[0, 0].Value = yourStringValue.Replace("\\r\\n", "\r\n");

我的问题是 \r\n 逃脱了。

于 2018-12-17T10:38:41.223 回答
0
E.Run runForBreak = new E.Run();

E.Text textForBreak = new E.Text() { Space = SpaceProcessingModeValues.Preserve };
textForBreak.Text = "\n";
runForBreak.Append(textForBreak);
sharedStringItem.Append(runForBreak);
于 2020-05-10T17:11:11.010 回答
-1

实际上,这真的很简单。

您可以编辑 xml 版本的 excel。编辑单元格以在文本之间添加新行,然后保存。稍后您可以在编辑器中打开文件,然后您会看到一个新行表示为 &#10;

试试....

于 2011-06-22T17:34:23.090 回答
-2

你试过“\n”我猜,它应该工作。

于 2009-07-24T10:43:12.107 回答