异常表名在c#中不是唯一的

时间:2013-12-02 07:57:10

标签: c# exception datatable epplus

我正在使用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

发生冲突

这个和解决方案的原因是什么?

2 个答案:

答案 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);