我正在使用Epplus在C#中编写.xlsx文件。 FirstIi将数据写入数据表,然后使用以下代码将数据表复制到文件中:
using (this.excelPackage = new ExcelPackage(new FileInfo(this.destinationPath)))
{
this.workBook = excelPackage.Workbook;
this.excelWorksheet = workBook.Worksheets["Chat Clients"];
this.excelWorksheet.Cells[1,1].LoadFromDataTable(this.existingFileTable, true,
OfficeOpenXml.Table.TableStyles.None);
this.excelWorksheet.Tables[0].ShowFilter = false;
this.excelWorksheet.Cells[this.excelWorksheet.Dimension.Address].AutoFitColumns();
this.excelPackage.Save();
}
抛出异常:
tablename不是唯一的
当我写入新文件时,它可以正常工作。当我尝试写入现有文件时存在问题。我更改了附加日期和时间的数据表的名称。然后它给出了例外:
表格范围与桌面聊天客户端02/12/2013 13:21:52
发生冲突
这个和解决方案的原因是什么?
答案 0 :(得分:0)
您可以尝试在将数据表导入Excel之前删除现有文件。
在using
范围
if (File.Exists(this.destinationPath))
{
File.Delete(this.destinationPath);
}
修改强>
请忽略第一个建议,然后尝试以下代码:
我认为你必须添加这一行
this.excelPackage.Load(new FileStream(this.destinationPath, FileMode.Open));
然后你的代码应该是:
using (this.excelPackage = new ExcelPackage(new FileInfo(this.destinationPath)))
{
this.excelPackage.Load(new FileStream(this.destinationPath, FileMode.Open));
this.workBook = excelPackage.Workbook;
this.excelWorksheet = workBook.Worksheets["Chat Clients"];
this.excelWorksheet.Cells[1,1].LoadFromDataTable(this.existingFileTable, true,
OfficeOpenXml.Table.TableStyles.None);
this.excelWorksheet.Tables[0].ShowFilter = false;
this.excelWorksheet.Cells[this.excelWorksheet.Dimension.Address].AutoFitColumns();
this.excelPackage.Save();
}
答案 1 :(得分:0)
尝试添加此内容:
**this.existingFileTable.TableName = "Chat Clients";**
在LoadFromDataTable之前:
this.excelWorksheet.Cells[1,1].LoadFromDataTable(this.existingFileTable, true,
OfficeOpenXml.Table.TableStyles.None);