elb*_*laf 11 c# export-to-excel number-formatting epplus
我写了一个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();
Run Code Online (Sandbox Code Playgroud)
问题是,虽然它正确地格式化列,但它也使用格式而不仅仅是我指定的列格式化其他列.我也尝试过:
ws.Column(1).Style.Numberformat.Format = "0.00";
Run Code Online (Sandbox Code Playgroud)
这是一个错误还是我错过了什么?
Ern*_*e S 16
你打开一个现有的文件吗?在打开其他列之前,它可能已经应用于其他列.或像阿斯蒂安这样的模板说.
清除所有格式,以防万一:
ws.Cells["A:D"].Style.Numberformat.Format = null;
ws.Cells["B:B"].Style.Numberformat.Format = "0.00";
Run Code Online (Sandbox Code Playgroud)
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();
}
Run Code Online (Sandbox Code Playgroud)