我们目前正在开发一个在C#中使用COM Interop将数据导入Excel工作簿的应用程序。这些数据相当复杂和冗长,因此我们一直在使用Excel中的从XML导入功能。由于在服务器上运行Excel的问题,我们现在正在寻求为我们的工作簿创建转移到第三方解决方案,例如SpreadsheetGear或Aspose。
SpreadsheetGear和Aspose不支持XML导入。有没有人知道另一个第三方,服务器友好的工具呢?
- Edit-- 数据来自DB2数据库,我们将这些数据放入C#类,然后序列化为XML。然后,我们将XML导入大约30个表和其他单元格。然后我们将表复制并粘贴到输出表并重复使用原件导入更多。
- Edit-- 输出是一个表单上有多个表和字段的表单。 XML地图帮助的部分原因是跟踪单元格的位置,而不必将单元格坐标大量硬编码到代码中。
答案 0 :(得分:1)
你可以看一下SSIS。这样就可以将XML设置为数据源,将电子表格设置为目标。 (反之亦然)。
答案 1 :(得分:1)
EPPlus是一个非常好的库,但我不是你可以直接导入XML,但你可以直接导入csv文件,样本中有例子。
实施起来仍然相当容易。
答案 2 :(得分:1)
虽然我没有找到允许此功能的第三方工具,但Aspose.Cells具有“智能标记”功能,允许您以类似于XML地图的方式指定特定单元格。我相信这可能是我一直在寻找的解决方案。
答案 3 :(得分:0)
将XML加载到数据集中,然后使用EPPlus从excel中取出数据表并从中创建excel文件:
DataSet ds = new DataSet();
DataTable dt = ds.Tables[0];
using (ExcelPackage pck = new ExcelPackage())
{
//Create the worksheet
ExcelWorksheet ws = pck.Workbook.Worksheets.Add("Calls");
//Load the datatable into the sheet, starting from cell A1. Print the column names on row 1
ws.Cells["A1"].LoadFromDataTable(dt, true);
Byte[] bin = pck.GetAsByteArray();
string file = filePath;
File.WriteAllBytes(file, bin);
}