1. 問題描述
存在很多 Excel 文件,要将它們轉成 cpt 模板,不想通過設計器手動一張張導入,希望用程序在後台批量轉換。
2. 解決方案
通過程序讀取 Excel 文件轉爲模板 TemplateWorkBook,然後把模板輸出爲 cpt 文件。
3. 示例
3.1 讀取 Excel 文件轉爲模板
TemplateWorkBook
File excelFile = new File("D:\\aa.xlsx"); // 獲取EXCEL文件
FileInputStream a = new FileInputStream(excelFile);
3.2 再輸出成 cpt 文件
2003 版 xcel
TemplateWorkBook tpl = new ExcelReportImporter().generateWorkBookByStream(a);
OutputStream outputStream = new FileOutputStream(new File("D:\\abc.cpt")); // 轉換成cpt模板
((WorkBook) tpl).export(outputStream);
2007 版 Excel
TemplateWorkBook tpl = new Excel2007ReportImporter().generateWorkBookByStream(a);
OutputStream outputStream = new FileOutputStream(new File("D:\\abc.cpt")); // 轉換成cpt模板
((WorkBook) tpl).export(outputStream);
3.3 準備 Excel 文件
分别另存爲 aa.xls 和 aa.xlsx 到對應的路徑,下面的代碼中需要根據實際 Excel 文件存放的路徑修改
3.4 2007 版 Excel 完整代碼如下:
注:這裏以 xlsx 代碼爲例,xls 代碼按照 3.2 進行修改,并修改 import 包即可
在一般情況下,若您希望在FineReport設計器基礎上進行二次開發,我們可以在 Eclipse 或 IDEA 中通過調用 FineReport 啓動類來啓動設計器,以便於開發過程中的調試和二次開發的準備。
注意需要引入 FineReport 設計器下的 JAR 包,詳細點擊 編譯Java程序。
注:定義報表運行環境需要根據實際設計器的安裝路徑,比如安裝在 C 盤,即 String envPath = "C://FineReport_10.0//webapps//webroot//WEB-INF"
另:Excel 文件路徑也需要根據實際情況修改,例如文件在 D 盤,即D:\\aa.xlsx
代碼詳見:
https://code.fanruan.com/demo/example/src/release/10.0/src/main/java/com/fr/io/ExcelToCpt.java
3.4 編譯并運行
編譯并運行該程序,就會在對應路徑下導出 abc.cpt 模板文件,我們用設計器打開模板,可以看到,Excel 裏面的數據已經保存至模板文件裏面了。