我写了一个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";
这是一个bug还是我错过了什么?
解决方法
你打开现有文件吗?在打开之前,它可能已经应用于其他列的格式.或者像阿斯坦这样的模板说.
清除所有的格式,以防万一如下:
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() { //https://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(); }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。