C# EPPlus 多单元格格式不适用

C# EPPlus multiple cell formatting not applying

我正在使用 EPPlus 从数据 table 生成 excel 文件。我只有两行。我在第一行应用 % 格式,在第二行应用 $ 格式,但我的两行的前两行具有相同的 % 格式,这是错误的。我无法理解发生这种情况的原因。为什么第二种格式没有应用到第二行,即 $ 格式。

请参阅我使用范围应用格式的这一行。

    ws.Cells["C0:P0"].Style.Numberformat.Format = "#,###,##0.0%;(#,###,##0.0%)";
    ws.Cells["C1:P1"].Style.Numberformat.Format = "$##,##0.0;($##,##0.0)";

在上面的代码中,我提到了带有格式的单元格范围,但是我的两行只得到第一个格式和第二个格式,没有考虑...不清楚为什么会这样?

示例代码

using (OfficeOpenXml.ExcelPackage obj = new OfficeOpenXml.ExcelPackage(FileLoc))
{
                // creating work sheet object
                OfficeOpenXml.ExcelWorksheet ws = obj.Workbook.Worksheets.Add("Vertical");
                // freezing work sheet columns and rows
                ws.View.FreezePanes(2, 3);
                // exporting data to excel
                ws.Cells["A1"].LoadFromDataTable(selected, true);
                // setting calumns as autofit
                ws.Cells[ws.Dimension.Address].AutoFitColumns();
                //fixing height of column
                ws.Row(1).Height = 16;
                ws.Row(1).Style.Fill.PatternType = ExcelFillStyle.Solid;
                ws.Row(1).Style.Fill.BackgroundColor.SetColor(Color.LightGray);
                
                obj.Save();
                
                ws.Cells["C0:P0"].Style.Numberformat.Format = "#,###,##0.0%;(#,###,##0.0%)";
                ws.Cells["C1:P1"].Style.Numberformat.Format = "$##,##0.0;($##,##0.0)";  
}

excel 数据的屏幕截图。看到图片中的前两行,肯定能理解 #,###,##0.0%;(#,###,##0.0%) 这种格式适用于前两行但在我的代码中,我为第二条记录提供了不同的格式。

请帮我找出代码中的错误之处。谢谢

好吧,有几个错误。首先,您在设置格式之前进行了保存,因此未应用它。

其次,Excel地址是以1为基数,不存在“C0”和“P0”。另请注意,第一行是列标题,因此您可能需要第 2 行和第 3 行。请尝试以下操作:

ws.Cells["C2:P2"].Style.Numberformat.Format = "#,###,##0.0%;(#,###,##0.0%)";
ws.Cells["C3:P3"].Style.Numberformat.Format = "$##,##0.0;($##,##0.0)";
obj.Save();