最近的项目使用了很多的Excel 作为导出的数据报告,使用到 Aspose.Cells 插件,就顺便整理一下。
一:新建解决方案,目录如下
目录说明:
Program.cs - 入口类
ExcelGenerator.cs - Aspose.Cells 操作类
Aspose.Cell.dll - 基础dll【文件见文章底部源代码内】
License.lic - Aspose.Cells 破解证书【文件见文章底部源代码内】
ps:由于 Aspose.Cells 插件 是收费插件,需要在使用插件前,设置一下许可证,否则在生成的Excel 中 会出现一个名叫 Evaluation Warning 的 Sheet.如图所示:
二:Aspose.Cells 操作
2.1 引入 Aspose.Cell.dll
2.2 设置 Aspose.Cell.dll 证书 License.lic
2.2.1 设置证书。我一般都写在生成Excel类的构造函数中了。文件路径要和证书的位置保持一致
Excel.License l = new Excel.License(); l.SetLicense("Aid/License.lic");
2.2.2 修改证书属性。在解决方案中,右击 License.lic 选择属性,修改 Copy to Ouput Directory 属性为 Copy always
2.3 打开现有Execl 模板
//模板文件路径 string Template_File_Path = @".TemplateTemplate.xlsx"; // 打开 Excel 模板 Workbook CurrentWorkbook = File.Exists(Template_File_Path) ? new Workbook(Template_File_Path) : new Workbook(); // 打开第一个sheet Worksheet DetailSheet = CurrentWorkbook.Worksheets[0];
2.4 写入数据
2.4.1 填写数据到指定单元格
// 比如要在 A1 位置写入 Demo这个值 Cell itemCell = DetailSheet.Cells["A1"]; itemCell.PutValue("Demo");
2.4.2 把DataTable写入到Excel
// 获取 Table 数据 DataTable dt = GetData(); // 写入数据的起始位置 string cell_start_region = "C1"; // 获得开始位置的行号 int startRow = DetailSheet.Cells[cell_start_region].Row; // 获得开始位置的列号 int startColumn = DetailSheet.Cells[cell_start_region].Column; // 写入Excel。参数说明,直接查阅文章底部文档链接 DetailSheet.Cells.ImportDataTable(dt, false, startRow, startColumn, true, true);
2.5 保存Excel
// 设置执行公式计算 - 如果代码中用到公式,需要设置计算公式,导出的报表中,公式才会自动计算 CurrentWorkbook.CalculateFormula(true); // 生成的文件名称 string ReportFileName = string.Format("Excel_{0}.xlsx", DateTime.Now.ToString("yyyy-MM-dd")); // 保存文件 CurrentWorkbook.Save(@".Excel" + ReportFileName, SaveFormat.Xlsx);
三:参考资料以及源码
3.1 参考资料
3.2 源代码。文中用到的证书和dll 都可以在源码中找到