我正在使用EPPLUS库来创建带有数据表的excel文件。 我的存储过程中有这样的列:emp_name,sales,INR,marketing,INR 但是在excel文件中,它生成列名,如列名,如emp_name,sales,INR,marketing,INR1等。 如何防止在数据表中打印任何列名称或我缺少的任何其他配置?
代码:
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);
}
答案 0 :(得分:1)
打印INR和INR1,因为您的数据表具有这些列。当在选择列表中多次选择同一列时,SQL会自动为列名添加别名,方法是在其末尾添加数字以区分两列。数据表不能具有重复的列名称。在您的情况下,第二个INR正在重命名为INR1。你可以试试
ws.Cells["A1"].LoadFromDataTable(data,true); //"PrintHeaders" true instead of false
但我认为你会得到相同的结果。
如果您可以以某种方式设法在加载数据后获取标题的单元格地址,则可以将值重写为
ws.Cells["A5"].Value="INR"
将覆盖" INR1"。
还有其他方法https://github.com/JanKallman/EPPlus/wiki/Addressing-a-worksheet