我正在使用Aspose库来创建Excel文档。在某个单元格的某处,我需要在文本的两个部分之间插入一个新行。
我试过“\ r \ n”但它不起作用,只在单元格中显示两个方形符号。但是我可以按Alt + Enter在同一个单元格中创建一个新行。
如何以编程方式插入新行?
答案 0 :(得分:25)
来自Aspose Cells论坛:How to use new line char with in a cell?
提供文本后,应将单元格的IsTextWrapped样式设置为true
worksheet.Cells[0, 0].Style.WrapText = true;
答案 1 :(得分:8)
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;\">");
答案 2 :(得分:5)
您需要插入Excel使用的字符代码,IIRC为10(十)。
编辑:好的,这是一些代码。请注意,通过创建包含以下内容的单元格,我能够确认使用的字符代码确实是10。
A
乙
...然后选择它并在VBA立即窗口中执行:
?Asc(Mid(Activecell.Value,2,1))
因此,将该值插入VBA中的另一个单元格所需的代码为:
ActiveCell.Value = "A" & vbLf & "B"
(因为vbLf是字符代码10)。
我知道你正在使用C#,但我发现如果你第一次在VBA中做什么,很多更容易弄清楚该做什么,因为你可以“交互式地”试用它而无需编译任何东西。无论你在C#中做什么,只是复制你在VBA中所做的事情,所以很少有任何区别。 (请记住,C#interop的东西只是使用与VBA相同的底层COM库。)
无论如何,这个C#将是:
oCell.Value = "A\nB";
发现差异: - )
编辑2 :Aaaargh!我只是重新阅读帖子,看到你正在使用Aspose库。对不起,在那种情况下我不知道。
答案 3 :(得分:3)
内部Excel使用U + 000D U + 000A(CR + LF,\r\n
)进行换行,至少在其XML表示中。我也无法直接在单元格中找到该值。它已迁移到另一个包含共享字符串的XML文件。也许包含换行符的单元格的文件格式处理方式不同,而您的库也不知道这一点。
答案 4 :(得分:1)
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
答案 5 :(得分:1)
如果有人对Infragistics解决方案感兴趣,请点击这里。
使用
Environment.NewLine
确保您的手机已被包裹
dataSheet.Rows[i].Cells[j].CellFormat.WrapText = ExcelDefaultableBoolean.True;
答案 6 :(得分:0)
“\ n”工作正常。如果输入来自多行文本框,则新行字符将为“\ r \ n”,如果将其替换为“\ n”,则它将起作用。
答案 7 :(得分:0)
使用PEAR'Spreadsheet_Excel_Writer'和'OLE':
只有这样才能让“\n
”工作才能生成单元格$format->setTextWrap();
,然后使用“\n
”就可以了。
答案 8 :(得分:0)
您可以使用Chr(13)。然后将整个事物包裹在Chr(34)中。 Chr(34)是双引号。
答案 9 :(得分:0)
对我有用的东西
worksheet.Cells[0, 0].Style.WrapText = true;
worksheet.Cells[0, 0].Value = yourStringValue.Replace("\\r\\n", "\r\n");
我的问题是\ r \ n逃脱了。
答案 10 :(得分: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);
答案 11 :(得分:-1)
实际上,这很简单。
您可以编辑XML的xml版本。编辑单元格以在文本之间添加新行,然后保存。稍后您可以在编辑器中打开该文件,然后您将看到一个新行表示
试试....
答案 12 :(得分:-2)
你有没有试过“\ n”我猜,它应该有效。