需要预先新建编辑好一个excel文件,设置好样式。
编辑好输出的数据,根据excel坐标一一对应。
支持列表数据输出,列表中列合并。
代码如下:
packagecom.icourt.util;
importorg.apache.commons.collections4.CollectionUtils;
importorg.apache.poi.openxml4j.exceptions.InvalidFormatException;
importorg.apache.poi.ss.usermodel.*;
importorg.apache.poi.ss.util.CellRangeAddress;
importjava.io.*;
importjava.util.ArrayList;
importjava.util.HashMap;
importjava.util.List;
importjava.util.Map;
importjava.util.Map.Entry;
importjava.util.regex.Matcher;
importjava.util.regex.Pattern;
/**
*描述:poi根据模板导出excel,根据excel坐标赋值,如(B1)
*/
publicclassExcelExportUtil{
//模板map
privateMaptempWorkbook=newHashMap();
//模板输入流map
privateMaptempStream=newHashMap();
/**
*功能:按模板向Excel中相应地方填充数据
*/
publicvoidwriteData(StringtemplateFilePath,MapdataMap,intsheetNo)throwsIOException,InvalidFormatException{
if(dataMap==null||dataMap.isEmpty()){
return;
}
//读取模板
WorkbookwbModule=getTempWorkbook(templateFilePath);
//数据填充的sheet
Sheetwsheet=wbModule.getSheetAt(sheetNo);
for(Entryentry:dataMap.entrySet()){
Stringpoint=entry.getKey();
Objectdata=entry.getValue();
TempCellcell=getCell(point,data,wsheet);
//指定坐标赋值
setCell(cell,wsheet);
}
//设置生成excel中公式自动计算
wsheet.setForceFormulaRecalculation(true);
}
/**
*功能:按模板向Excel中列表填充数据.只支持列合并
*/
publicvoidwriteDateList(StringtemplateFilePath,String[]heads,List
大体思路:
最主要是制作好模版
代码根据模版,读取设置好的列的格式,在循环数据行,读取模版中的对应的行,存在该行就取得,不存在看是否需要copy某一行,不需要就手动创建无制定格式的行,后面在为该行的每一列对应的给个单元格制定格式和数据。
以上这篇基于apachepoi根据模板导出excel的实现方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。