【问题标题】:Formatting a column with EPPLUS Excel Library使用 EPPLUS Excel 库格式化列
【发布时间】:2015-04-26 05:16:00
【问题描述】:

我编写了一个 C# 程序来创建一个 Excel 电子表格。工作表有多个列。我想格式化其中一列。

aFile = new FileInfo(excelDocName); // excelDocName is a string
ExcelPackage pck = new ExcelPackage(aFile);
var ws = pck.Workbook.Worksheets.Add("Content");
ws.View.ShowGridLines = true;
ws.Cells["B:B"].Style.Numberformat.Format = "0.00";
ws.Cells[1, 1].Value = "AA";
ws.Cells[1, 2].Value = "BB";
ws.Cells[1, 3].Value = "CC";
ws.Cells[1, 4].Value = "DD";
for (int row = 2; row <= 10; ++row)
  for (int col = 1; col <= 4; ++col)
  {
  ws.Cells[row, col].Value = row * col;
  }
ws.Row(1).Style.Font.Bold = true;
pck.Save();

问题是,虽然它正确格式化了列,但它也使用该格式格式化了其他列,而不仅仅是我指定的列。 我也试过了:

ws.Column(1).Style.Numberformat.Format = "0.00";

这是一个错误还是我遗漏了什么?

【问题讨论】:

  • 嗯,我看不出选择器有什么问题。您使用的是模板对吗?模板本身的格式是否可能错误?或者您设置的格式可能是数字的默认格式?抱歉,我帮不上什么忙
  • 我没有使用模板。知道我可以用一个。我可能会调查一下。谢谢

标签: c# export-to-excel epplus number-formatting


【解决方案1】:

您正在打开现有文件吗?在您打开它之前,它可能具有已应用于其他列的格式。或者像 astian 说的那样的模板。

清除所有格式以防万一:

ws.Cells["A:D"].Style.Numberformat.Format = null;
ws.Cells["B:B"].Style.Numberformat.Format = "0.00";

EPPlus 4.0.3 中的完整单元测试:

[TestMethod]
public void Format_Single_Column_Test()
{
    //http://stackoverflow.com/questions/28698226/formatting-a-column-with-epplus-excel-library
    var excelDocName = @"c:\temp\temp.xlsx";
    var aFile = new FileInfo(excelDocName); // excelDocName is a string

    if (aFile.Exists)
        aFile.Delete();

    ExcelPackage pck = new ExcelPackage(aFile);
    var ws = pck.Workbook.Worksheets.Add("Content");
    ws.View.ShowGridLines = true;
    ws.Cells["A:D"].Style.Numberformat.Format = null;
    ws.Cells["B:B"].Style.Numberformat.Format = "0.00";
    ws.Cells[1, 1].Value = "AA";
    ws.Cells[1, 2].Value = "BB";
    ws.Cells[1, 3].Value = "CC";
    ws.Cells[1, 4].Value = "DD";
    for (int row = 2; row <= 10; ++row)
        for (int col = 1; col <= 4; ++col)
        {
            ws.Cells[row, col].Value = row*col;
        }
    ws.Row(1).Style.Font.Bold = true;
    pck.Save();
}

【讨论】:

  • 我在没有模板的情况下从头开始创建电子表格。事实证明,我只格式化几列就足够了。我不喜欢它,因为我仍然不明白为什么,除了这可能是一个错误。现在它正在工作,我不会玩它。我仍然要记住这一点,我可以将格式设置为空。谢谢
  • @elbillaf 您正在运行什么版本的 EPPlus?我在 4.0.3 版本中尝试了上面添加的单元测试。
  • @elbillaf 你能运行上面的单元测试吗?或者你可以在不同的机器上测试你的代码吗?可能是您更改了新文档的默认 Excel 模板吗? answers.microsoft.com/en-us/office/forum/…
猜你喜欢
  • 2013-04-24
  • 1970-01-01
  • 2019-08-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多