1. 程式人生 > >Chimm.Excel —— 使用Java 操作 excel 模板檔案生成 excel 文件

Chimm.Excel —— 使用Java 操作 excel 模板檔案生成 excel 文件

# Chimm.Excel —— 設定模板,填充資料,就完事兒了~

``` _____ _ _ _____ _ / __ \ | (_) | ___| | | | / \/ |__ _ _ __ ___ _ __ ___ | |____ _____ ___| | | | | '_ \| | '_ ` _ \| '_ ` _ \ | __\ \/ / __/ _ \ | | \__/\ | | | | | | | | | | | | | |_| |___> < (_| __/ | \____/_| |_|_|_| |_| |_|_| |_| |_(_)____/_/\_\___\___|_| ``` [toc] ## 1. 專案介紹 ### 1.1 專案簡介 1. `Chimm.Excel` 是什麼? 該程式是一個基於 Apache POI 和 Antlr4 打造的 excel 生成的 Java 工具,主要作用在於減少了開發人員通過程式生成表格的工作量,提高了工作效率。 2. `Chimm.Excel` 的優勢是什麼? - 和網上部分的開源軟體的區別是,該程式是基於 excel 模板進行工作的,並非基於註解。也就是說,我們首先需要在 office 中編寫好我們的 excel 模板才行,優勢在於,我們可以直接在 office 中就直接定製化表格的樣式,也就是說,樣式直接由 excel 軟體進行控制了,這大大降低了我們在程式中操作樣式的時間。 - 由於該程式是基於 `Antlr4` 進行開發的,所以在變數定義上面,非常的靈活,我們可以定義集合變數,甚至我們還可以在公式中定義變數。一個表格對應一個數據物件,開發人員只需查詢資料、組裝資料即可。 - 可以自定義模板樣式,該程式也提供了部分操作表格樣式的功能,如:複製一行、合併單元格、更改邊框樣式等等。 - 主要的重點功能暫時介紹這麼多,這些功能基本能解決絕大部分問題了。如果各位遇到了其他需要解決的應用場景,歡迎評論提出 `issue`,我們一起探討。 3. excel 模板如何生成? 模板生成非常的簡單,我們定義變數的時候,只需要使用 `$` + `大小括號` 包圍的形式即可,如:`${school.name}`。 4. `Chimm.Excel` 功能簡介(v1.0) - [x] 匯出excel二進位制檔案 - [x] 根據模板中的變數,將值寫入 - [x] 支援公式 - [x] 支援帶變數的公式,如:`SUM(A1,A2,${demo.value})` - [x] 操作表格新增/減少行 - [x] ⭐️新增行會自動更新公式 - [x] 合併單元格 - [x] 更改單元格邊框樣式(加粗、虛線等) ### 1.2 專案地址 - GitHub:[https://github.com/chimmhuang/chimm.excel](https://github.com/chimmhuang/chimm.excel) - 碼雲:[https://gitee.com/chimmhuang/chimm.excel](https://gitee.com/chimmhuang/chimm.excel) ## 2. 功能展示 ### 2.1 demo檔案演示 **模板檔案:** ![在這裡插入圖片描述](https://img-blog.csdnimg.cn/20201020225033960.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2NoaW1taHVhbmc=,size_16,color_FFFFFF,t_70#pic_center) **處理後的檔案:** ![在這裡插入圖片描述](https://img-blog.csdnimg.cn/20201020225049632.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2NoaW1taHVhbmc=,size_16,color_FFFFFF,t_70#pic_center) 我提供了一個 `demo` 測試類。 模板具體位置: `src/test/resources/demo.xlsx` 測試類的具體位置:`src/test/java/../demo/Demo.java` ### 2.2 詳細操作說明 1. wiki(GitHub):[點選前往](https://github.com/chimmhuang/chimm.excel/wiki) 2. wiki(碼雲):[點選前往](https://gitee.com/chimmhuang/chimm.excel/wikis) 3. 我在 `src/test/java/../demo/Demo.java` 中,寫了一個測試方法,該方法幾乎包含了最常用的方法,可以提供參照。 ## 3. 起步 1. 配置模板 我在該專案中提功能 demo 使用的模板,基本滿足絕大部分場景:`src/test/resources/demo.xlsx` 2. 匯入座標 ```xml ``` 3. 入門程式 ```java @Test public void testFillInTable() throws Exception { // 獲取檔案的二進位制 File file = new File("src/test/resources/demo.xlsx"); byte[] bytes = FileUtils.readFileToByteArray(file); // 通過 ExcelHelper 獲取 excel 表格物件 ExcelWorkbook excelWorkbook = ExcelHelper.createWorkbook(bytes); // 獲取指定的 sheet 頁 SheetTable table = excelWorkbook.getSheet(0); // 封裝表格資料物件 SchoolReportData tableData = new SchoolReportData(); // ... 填充資料 ... tableData.setTitle("xx中學成績單"); // ... 省略了新增資料的程式碼 ... // 將封裝好的表格物件,填充到 excel 表格中 ExcelHelper.fillInData(table, tableData); // 將表格物件轉換為二進位制,resultBytes 即是最終想要的結果 byte[] resultBytes = ExcelHelper.convert2Byte(table); } ``` ## 4. 參與貢獻 非常歡迎你的加入![提一個 Issue](https://github.com/chimmhuang/chimm.excel/issues/new) 或者提交一個 Pull Request。 ## 5. 聯絡作者 `QQ & 微信`:`905369866` `email`:`[email protected]` ## 6. 開源協議 [Apache 2.0](LICENSE) © Chi