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();
我正在使用 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();