【发布时间】:2018-08-02 12:21:11
【问题描述】:
在这里,我尝试使用下面提到的代码(Spire.Xls dll)将两个 excel 文件合并到一个 excel 表中,它工作正常。
这是两个excel合并的代码。
workbook = new Workbook();
//load the first workbook
workbook.LoadFromFile(ArrayExcelFiles[0]);
//load the second workbook
Workbook workbook2 = new Workbook();
workbook2.LoadFromFile(ArrayExcelFiles[1]);
//import the second workbook's worksheet into the first workbook using a datatable
Worksheet sheet2 = workbook2.Worksheets[0];
DataTable dataTable = sheet2.ExportDataTable();
Worksheet sheet1 = workbook.Worksheets[0];
sheet1.InsertDataTable(dataTable, false, sheet1.LastRow + 1, 1);
workbook.SaveToFile(OutputPath + "Merged.xls", ExcelVersion.Version2007);
但问题是,当我尝试使用相同的逻辑合并三个 excel 文件时,输出与两个合并的 excel 输出相同,第三个 excel 未合并。
这是三个excel文件的代码。
Workbook workbook1 = new Workbook();
//load the first workbook
workbook1.LoadFromFile(ArrayExcelFiles[0]);
//load the second workbook
Workbook workbook2 = new Workbook();
workbook2.LoadFromFile(ArrayExcelFiles[1]);
//load the third workbook
Workbook workbook3 = new Workbook();
workbook3.LoadFromFile(ArrayExcelFiles[2]);
//import the second workbook's worksheet into the first workbook using a datatable
Worksheet sheet3 = workbook3.Worksheets[0];
DataTable dataTable = sheet3.ExportDataTable();
Worksheet sheet2 = workbook2.Worksheets[0];
dataTable = sheet2.ExportDataTable();
Worksheet sheet1 = workbook1.Worksheets[0];
sheet1.InsertDataTable(dataTable, false, sheet1.LastRow + 1, 1);
workbook1.SaveToFile(OutputPath + "Merged.xls", ExcelVersion.Version2007);
【问题讨论】:
-
您没有合并第三个文件。您没有将其中的数据导出到 DataTable 中并且没有将其插入到目标中。
-
我建议您在尝试修改代码之前尝试了解代码的作用。然后尝试clean它——如果你需要将两张或更多张合并为一张,为什么不把它变成一个循环呢?
-
@Panagiotis Kanavos 谢谢先生的快速回复。但是同样的逻辑也适用于上面提到的两个 excel 合并代码。我没有将第二个文件(即 sheet1)导出到 DataTable,但它工作正常。
-
@vinodkarampuri 但问题是您没有在代码中正确应用逻辑......请参阅我的答案(或其他答案)。了解逻辑是一回事,实现它是另一回事。