我正在使用 Aspose 库来创建 Excel 文档。在某个单元格的某个地方,我需要在文本的两个部分之间插入一个新行。
我试过 "\r\n" 但它不起作用,只是在单元格中显示两个方形符号。但是,我可以按 Alt+Enter 在同一个单元格中创建一个新行。
如何以编程方式插入新行?
来自 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(十)。
编辑:好的,这里有一些代码。请注意,通过创建一个包含以下内容的单元格,我能够确认使用的字符代码确实是 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 库。对不起,在那种情况下我不知道。
Excel 在内部使用 U+000D U+000A (CR+LF, \r\n
) 作为换行符,至少在其 XML 表示中是这样。我也无法直接在单元格中找到该值。它已迁移到另一个包含共享字符串的 XML 文件。也许包含换行符的单元格被文件格式以不同方式处理,而您的库不知道这一点。
如果有人对 Infragistics 解决方案感兴趣,就在这里。
采用
Environment.NewLine
确保您的电池已包裹
dataSheet.Rows[i].Cells[j].CellFormat.WrapText = ExcelDefaultableBoolean.True;
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" 工作正常。如果输入来自多行文本框,则新行字符将为“\r\n”,如果将其替换为“\n”,它将起作用。
使用 PEAR 'Spreadsheet_Excel_Writer' 和 'OLE':
我可以让“”工作的唯一方法\n
是制作单元格$format->setTextWrap();
,然后使用“ \n
”将工作。
您可以使用 Chr(13)。然后将整个东西包裹在 Chr(34) 中。Chr(34) 是双引号。
什么对我有用:
worksheet.Cells[0, 0].Style.WrapText = true;
worksheet.Cells[0, 0].Value = yourStringValue.Replace("\\r\\n", "\r\n");
我的问题是 \r\n 逃脱了。
E.Run runForBreak = new E.Run();
E.Text textForBreak = new E.Text() { Space = SpaceProcessingModeValues.Preserve };
textForBreak.Text = "\n";
runForBreak.Append(textForBreak);
sharedStringItem.Append(runForBreak);
实际上,这真的很简单。
您可以编辑 xml 版本的 excel。编辑单元格以在文本之间添加新行,然后保存。稍后您可以在编辑器中打开文件,然后您会看到一个新行表示为
试试....
你试过“\n”我猜,它应该工作。