导出Excel文件要求的表头太复杂怎么办?easyPoi提供了一种可以使用模板导出数据的方法。
这里是我自己抽取的一个工具类,用于单条数据导出。使用多条的数据导出详见官方API.
package com.yonyou.aco.cpas.indp.util;
import java.io.File;
import java.io.FileOutputStream;
import java.util.Map;
import org.apache.poi.ss.usermodel.Workbook;
import cn.afterturn.easypoi.excel.ExcelExportUtil;
import cn.afterturn.easypoi.excel.entity.TemplateExportParams;
/**
* TODO: ExportExcelTemplete工具类
* TODO: 根据读取模板信息导出Excel文件
* @Date 2019-10-15
* @author ***
* @since 1.0.0
*描述:添加参数字段一定要注明用途,添加人,以及添加时间
*
*/
public class ExportExcelTemplate {
/**
*
* @param templatePath 模板文件路径
* @param filePath 导出Excel文件路径
* @param map 传入需要导出的数据
* @throws Exception
*/
public static void templateToExcel( String templatePath,String filePath,Mapmap) throws Exception {
try {
TemplateExportParams params = new TemplateExportParams(templatePath);
/* List> listMap = new ArrayList>();//循环写入模板,暂时用不到
for (int i = 0; i < 4; i++) {
Maplm = new HashMap();
lm.put("id", i + 1 + "");
listMap.add(lm);
}
map.put("maplist", listMap);*/
Workbook workbook = ExcelExportUtil.exportExcel(params, map);
File savefile = new File("D:/mediaFile/excel/");
if (!savefile.exists()) {
savefile.mkdirs();
}
FileOutputStream fos = new FileOutputStream(filePath);
workbook.write(fos);
fos.close();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
附上模板Excel文件图片。
注意:需要导出文件的字段名需与模板中对应