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会报错,目前未解决。