1、pom引入
<dependency> <groupId>org.jxls</groupId> <artifactId>jxls</artifactId> <version>2.4.7</version> </dependency> <dependency> <groupId>org.jxls</groupId> <artifactId>jxls-poi</artifactId> <version>1.0.16</version> </dependency> <dependency> <groupId>org.jxls</groupId> <artifactId>jxls-jexcel</artifactId> <version>1.0.7</version> </dependency>
2、創建excel管理工具類
public class JxlsUtils { /** * 根據模板生成excel,新文件放入download文件夾下 * @param templateFileName 模板文件名 * @param newFileName 新文件名 * @param model 填充數據 * @return 新文件名 * @throws IOException */ public static String exportExcel(String templateFileName,String newFileName, Map<String, Object> model) throws IOException{ // 獲取模板文件 InputStream is = new FileInputStream(new File("E://"+templateFileName)); // 輸出 OutputStream os = new FileOutputStream(RuoYiConfig.getDownloadPath() +newFileName); Context context = PoiTransformer.createInitialContext(); if (model != null) { for (String key : model.keySet()) { context.putVar(key, model.get(key)); } } JxlsHelper jxlsHelper = JxlsHelper.getInstance(); Transformer transformer = jxlsHelper.createTransformer(is, os); //獲得配置 JexlExpressionEvaluator evaluator = (JexlExpressionEvaluator)transformer.getTransformationConfig().getExpressionEvaluator(); //設置靜默模式,不報警告 evaluator.getJexlEngine().setSilent(true); //函數強制,自定義功能 Map<String, Object> funcs = new HashMap<String, Object>(); funcs.put("utils", new JxlsUtils()); //添加自定義功能 evaluator.getJexlEngine().setFunctions(funcs); //必須要這個,否則表格函數統計會錯亂 jxlsHelper.setUseFastFormulaProcessor(false).processTemplate(context, transformer); return newFileName; } }
3、controller中調用方法
public void exportExcel(){ // 綁定數據 Map<String, Object> model = new HashMap<String, Object>(); String fileName="test.xls"; model.put("yearT", 2021);//年份 model.put("monthT", 1);//月份 JxlsUtils.exportExcel(fileName, fileName, model);//根據模板生成excel }
4、創建excel模板
(注意:如果你是用的office 2007生成的excel模板,要另存為97-2003版本的。看網上說的。)
jxls官網:http://jxls.sourceforge.net/getting_started.html
創建時注意增加批注:例子
(lastCell的范圍要大於等於填充數據的最右下角單元格,增加批注的位置是變量開始的單元格。)
5、遇到的問題
a.m³單位輸入可以使用輸入法漢語模式下,輸入“立方米”,然后選中m³。
b.10的幾次方輸入模板后導出的excel會報錯,目前未解決。