如何使用RichText在EPPlus中的单个Cell中获取LineBreaks

时间:2018-03-14 17:15:33

标签: c# epplus

我使用以下代码:

using (var package = new ExcelPackage()) {    
    var worksheet = package.Workbook.Worksheets.Add("Test");    
    var cell = worksheet.Cells[1, 1];

    var r1 = cell.RichText.Add("TextLine1" + "\r\n");
    r1.Bold = true;
    var r2 = cell.RichText.Add("TextLine2" + "\r\n");
    r2.Bold = false;

    package.SaveAs(...);
}

但是在Excel文件中,newLines已经消失......

我也试过“\ n”和“\ r”,但没有任何工作......

2 个答案:

答案 0 :(得分:1)

最后我找到了解决方案。这是一个工作样本:

    using (var package = new ExcelPackage(fileInfo)) {    
         var worksheet = package.Workbook.Worksheets.Add("Test");    
         var cell = worksheet.Cells[1, 1];
         cell.Style.WrapText = true;
         cell.Style.VerticalAlignment = ExcelVerticalAlignment.Top;

         var r1 = cell.RichText.Add("TextLine1" + "\r\n");
         r1.Bold = true;
         var r2 = cell.RichText.Add("TextLine2" + "\r\n");
         r2.Bold = false;

         package.Save();
     }

但我认为我在Lib中发现了一个错误:此代码 NOT 正在运行:

    using (var package = new ExcelPackage(fileInfo)) {    
         var worksheet = package.Workbook.Worksheets.Add("Test");    
         var cell = worksheet.Cells[1, 1];
         cell.Style.WrapText = true;
         cell.Style.VerticalAlignment = ExcelVerticalAlignment.Top;

         var r1 = cell.RichText.Add("TextLine1" + "\r\n");
         r1.Bold = true;
         var r2 = cell.RichText.Add("TextLine2" + "\r\n");
         r2.Bold = false;

         cell = worksheet.Cells[1, 1];
         var r4 = cell.RichText.Add("TextLine3" + "\r\n");
         r4.Bold = true;

         package.Save();
     }

当我再次获得相同的范围并添加新的RichText标记时,旧的LineBreaks将被删除...(它们实际上已转换为“\ n”,这在Excel中无效。)

答案 1 :(得分:1)

excel单元格中新行的编码为10。 我想你必须做这样的事情:

var r1 = cell.RichText.Add("TextLine1" + ((char)10).ToString());