【发布时间】:2020-01-06 09:38:00
【问题描述】:
我使用 Spreadsheetgear 将自定义 SQL 查询的结果导出为 excel 文件。
现在我想改进这个系统:用户将能够将 excel 模板文件上传到数据库中(目前为 varbinary)。例如,它可能有一个包含计算的工作表,然后在将数据导出到该模板时,它将使用来自查询的数据表填充另一个工作表。
电子表格可以做到这一点吗?如果是这样,它是如何工作的 - 主要是如何将现有的 excel 文件加载为 Spreadsheetgear 工作簿/工作簿集?我在他们的文档中找不到任何东西(尽管我仍在寻找)。
编辑:已解决。 我手动创建工作簿,从数据库中加载模板作为字节 [],然后使用 OpenFromMemory 函数打开所述模板:
// Create workbookSet
SpreadsheetGear.IWorkbookSet workbookSet = SpreadsheetGear.Factory.GetWorkbookSet();
// Create a new empty workbook in the workbookSet.
SpreadsheetGear.IWorkbook workbook = workbookSet.Workbooks.Add();
if(TemplateID != -1) // If this case requires a template
{
// Get template from SQL database (.xlsx stored as varbinary(max))
byte[] template = GetTemplateByID(VorlagenID);
workbook = workbookSet.Workbooks.OpenFromMemory(template);
}
// Create export worksheet
SpreadsheetGear.IWorksheet worksheet = workbook.Worksheets[0];
worksheet.Name = "Export";
[...]
在我的例子中,模板总是使用 Worksheet[1],但是为导出创建 Worksheet[1] 应该很容易。
【问题讨论】:
标签: c# .net spreadsheetgear