代码之家  ›  专栏  ›  技术社区  ›  User

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

  •  21
  • User  · 技术社区  · 15 年前

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

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

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

    12 回复  |  直到 6 年前
        1
  •  24
  •   Christian Gollhardt    8 年前

    从Aspose Cells论坛: How to use new line char with in a cell?

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

    worksheet.Cells[0, 0].Style.WrapText = true;
    
        2
  •  8
  •   DarthJDG chetan borse    13 年前
    cell.Text = "your firstline<br style=\"mso-data-placement:same-cell;\">your secondline";
    

    如果从数据库获取文本,则:

    cell.Text = textfromDB.Replace("\n", "<br style=\"mso-data-placement:same-cell;\">");
    
        3
  •  5
  •   Gary McGill    15 年前

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


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

    …然后选择它并在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 啊!我刚刚重新阅读了这篇文章,看到你正在使用Aspose库。对不起,那样的话我不知道。

        4
  •  3
  •   Joey Gumbo    15 年前

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

        5
  •  1
  •   Joe Erickson    15 年前

    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);
    

    注意“wraptex=true”-没有这个Excel将不会自动换行文本。我假设aspose有类似的API。

    免责声明:我拥有SpreadsheetGear LLC

        6
  •  1
  •   Cosmin T.    12 年前

    如果有人对基础设施解决方案感兴趣,请看这里。

    1. 使用

      Environment.NewLine

    2. 确保你的手机被包裹起来

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

        7
  •  0
  •   t pck    15 年前

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

        8
  •  0
  •   j0k gauthamp    12 年前

    使用Pear“电子表格”Excel“Writer”和“Ole”:

    我唯一能得到的 \n “工作就是制造细胞 $format->setTextWrap(); 然后使用“ \n “会起作用的。

        9
  •  0
  •   Brian Daul    11 年前

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

    • VB.NET示例:
    • contactinfo=“”
    • contactinfo=修剪(邮件)&chr(13)
    • contactinfo=contactinfo&trim(电话)和chr(13)
    • contactinfo=chr(34)和contactinfo&chr(34)
        10
  •  0
  •   SubqueryCrunch    6 年前

    为我工作的是:

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

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

        11
  •  -1
  •       15 年前

    你试过了吗?我想应该可以。

        12
  •  -1
  •   DarthJDG chetan borse    13 年前

    实际上,这很简单。

    您可以编辑Excel的XML版本。编辑一个单元格,在文本之间换行,然后保存它。稍后,您可以在编辑器中打开该文件,然后您将看到一个新行由 &#10;

    试试。。。。