如何在创建 excel 时在 EPPLUS 库的 excel sheet 中添加相同的列名

How to add same column name in excel sheet in EPPLUS library while creating excel

我正在使用 EPPLUS 库创建包含数据 table 的 excel 文件。 我的存储过程中有这样的列:emp_name、sales、INR、marketing、INR 但在 excel 文件中,它生成的列名与列名类似 emp_name、销售额、INR、营销、INR1 等。 我如何防止打印数据中的任何列名 table 或我缺少的任何其他配置?

代码:

        string BasePath = ConfigurationManager.AppSettings["BasePath"];
        string fileName = Guid.NewGuid().ToString() + ".xlsx";
        string FilePath = BasePath + fileName;

        using (ExcelPackage excel = new ExcelPackage())
        {
            ExcelWorksheet ws = 
            excel.Workbook.Worksheets.Add("WorkingReport");

            ws.Cells["A1"].LoadFromDataTable(data,false);
            ws.Row(1).Style.Font.Bold = true;

            ws.Column(1).Width = 10;
            ws.Column(2).Width = 20;
            ws.Column(3).Width = 20;
            ws.Column(4).Width = 20;

            FileInfo excelFile = new FileInfo(FilePath);
            ws.Protection.IsProtected = false;
            excel.SaveAs(excelFile);
         }

打印 INR 和 INR1,因为您的数据表有这些列。当同一列在 select 列表中被多次 select 编辑时,SQL 通过在其末尾添加数字来自动为列名添加别名以区分两列。数据表不能有重复的列名。在您的例子中,第二个 INR 被重命名为 INR1。你可以试试

ws.Cells["A1"].LoadFromDataTable(data,true); //"PrintHeaders" true instead of false

但我想你会得到相同的结果。

如果你能以某种方式设法在加载数据后获取 header 的单元格地址,你可以将值重写为 ws.Cells["A5"].Value="INR" 将覆盖 "INR1"。 还有其他方法 https://github.com/JanKallman/EPPlus/wiki/Addressing-a-worksheet