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

时间:2009-07-24 09:13:06

标签: c# .net excel aspose

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

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

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

13 个答案:

答案 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)

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

答案 5 :(得分:1)

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

  1. 使用

    Environment.NewLine

  2. 确保您的手机已被包裹

    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)是双引号。

  • VB.Net示例:
  • TheContactInfo =“”
  • TheContactInfo = Trim(TheEmail)&amp; CHR(13)
  • TheContactInfo = TheContactInfo&amp;修剪(ThePhone)&amp; CHR(13)
  • TheContactInfo = Chr(34)&amp; TheContactInfo&amp; 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版本。编辑单元格以在文本之间添加新行,然后保存。稍后您可以在编辑器中打开该文件,然后您将看到一个新行表示 &#10;

试试....

答案 12 :(得分:-2)

你有没有试过“\ n”我猜,它应该有效。