如何在创建 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
我正在使用 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