如何使用EPPlus对ExcelRange执行FillDown操作?
用EPPlus实现ExcelRange的FillDown操作
嘿,用EPPlus做FillDown其实和Excel里手动操作或者VBA的逻辑完全一致,我给你捋捋具体怎么实现:
首先得明确,EPPlus的ExcelRange对象本身就自带了FillDown()方法,作用就是把选中范围顶部的单元格内容(包括值、公式、格式)向下填充到该范围的其他单元格里。
基础用法示例
比如你要把A1单元格的值填充到A2到A5,代码可以这么写:
// 记得引用EPPlus的命名空间 using OfficeOpenXml; // 创建新工作簿(也可以用ExcelPackage.Open()打开现有文件) using var package = new ExcelPackage(); var worksheet = package.Workbook.Worksheets.Add("FillDownDemo"); // 先给顶部单元格赋值 worksheet.Cells["A1"].Value = "Product A"; // 选中包含源单元格和目标区域的范围:A1到A5 var fillRange = worksheet.Cells["A1:A5"]; // 执行FillDown操作 fillRange.FillDown(); // 保存工作簿到指定路径 package.SaveAs(new FileInfo(@"C:\Temp\FillDownExample.xlsx"));
关键注意事项
- 一定要确保选中的范围包含有内容的顶部单元格,不然FillDown不会有任何效果。比如单独选A2:A5调用FillDown,因为没有可填充的源内容,结果还是空的。
- 这个方法不仅能填充文本、数值,还能同步填充公式、单元格格式(比如字体颜色、背景色),和Excel手动拖拽填充的行为完全一致。
进阶:公式填充示例
如果是公式的场景,比如B1有公式=A1*2,要填充到B2到B5,逻辑也是一样的:
// 先给A列填充基础数据 worksheet.Cells["A1:A5"].Values = new object[] { 10, 20, 30, 40, 50 }; // 设置B1的公式 worksheet.Cells["B1"].Formula = "=A1*2"; // 选中B1到B5执行FillDown worksheet.Cells["B1:B5"].FillDown();
执行后B2到B5的公式会自动调整为=A2*2、=A3*2这类对应单元格的公式,完全符合预期。
内容的提问来源于stack exchange,提问作者TiPa
相关产品推荐
相关产品推荐

