使用EPPlus修改Excel列值:通过列名获索引后如何修改指定列数值
EPPlus 按列索引修改指定列所有数值的实现方法
基础遍历修改方案
如果需要对列内每个单元格的值做差异化处理,可以先获取工作表最大有效行号,遍历行修改对应列的单元格,示例代码如下:
// 获取当前工作表的最大使用行号 int maxRow = ws.Dimension.End.Row; // 示例:将Birthdate列所有日期加1天,默认跳过第1行表头 for (int row = 2; row <= maxRow; row++) { if (DateTime.TryParse(ws.Cells[row, columnId].Text, out DateTime birthDate)) { // 修改单元格值 ws.Cells[row, columnId].Value = birthDate.AddDays(1); // 可选:统一设置列格式 ws.Cells[row, columnId].Style.Numberformat.Format = "yyyy-MM-dd"; } } // 操作完成后保存修改 package.Save();
批量操作方案
如果是给整列有效单元格统一赋值、设置格式,可以直接定位列范围,无需逐行遍历,性能更高:
// 定位该列除表头外的所有有效数据范围 var columnRange = ws.Cells[2, columnId, ws.Dimension.End.Row, columnId]; // 示例1:统一填充列值 columnRange.Value = "默认值"; // 示例2:统一设置日期格式 columnRange.Style.Numberformat.Format = "yyyy-MM-dd"; // 示例3:统一设置单元格样式 columnRange.Style.Font.Bold = true;
注意事项
- 上述示例默认跳过第1行表头,如果需要修改包含表头在内的整列,将行起始值改为1即可
- 若使用EPPlus 5及以上版本,非开源场景使用需要注意商业授权要求
- 所有修改完成后必须调用ExcelPackage的
Save()或SaveAs()方法才会写入文件
内容的提问来源于stack exchange,提问作者ararb78
相关产品推荐
相关产品推荐

