最近的項目使用了很多的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 = @".\Template\Template.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 都可以在源碼中找到
