EPPlus 4.5.3.3 InsertColumn函数样式复制异常 求原因及解决方案
问题解答
EPPlus 4.5.3.3版本确实存在InsertColumn方法样式复制不完整的已知问题,该问题与InsertRows的已知bug同源,是旧版本处理行列插入逻辑时,仅同步了首行单元格样式,未遍历整列所有已使用单元格导致的,你当前的代码没有配置遗漏。
可行变通方案
插入列后手动同步参考列的整列样式即可,调整后的代码如下:
FileInfo newFile = new FileInfo(outputName); ExcelPackage excel = new ExcelPackage(newFile); ExcelWorkbook wb = excel.Workbook; ExcelWorksheet y = wb.Worksheets.First(); // 插入1列到第1位,参考第2列的样式 y.InsertColumn(1, 1, 2); // 手动同步整列样式 int maxRow = y.Dimension.End.Row; // 同步列宽 y.Column(1).Width = y.Column(2).Width; // 同步所有行的单元格样式 for (int row = 1; row <= maxRow; row++) { y.Cells[row, 1].StyleID = y.Cells[row, 2].StyleID; } // 赋值单元格内容 y.Cells[1, 1].Value = "Test1"; y.Cells[2, 1].Value = "Test2"; y.Cells[3, 1].Value = "Test3"; // 保存修改 excel.Save();
如果表格存在条件格式、数据验证等特殊配置,可额外补充对应规则的复制逻辑。
如果可以升级依赖版本,该bug在EPPlus 5及以上正式版中已经被修复,升级后直接调用原InsertColumn方法即可正常复制整列样式,无需额外处理。
内容的提问来源于stack exchange,提问作者Steve
相关产品推荐
相关产品推荐

