需要预先新建编辑好一个excel文件,设置好样式。
编辑好输出的数据,根据excel坐标一一对应。
支持列表数据输出,列表中列合并。
代码如下:
package com.icourt.util;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.ss.util.CellRangeAddress;
import java.io.*;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class ExcelExportUtil {
//模板map
private Map tempWorkbook = new HashMap();
//模板输入流map
private Map tempStream = new HashMap();
public void writeData(String templateFilePath, Map dataMap, int sheetNo) throws IOException, InvalidFormatException {
if (dataMap == null || dataMap.isEmpty()) {
return;
}
//读取模板
Workbook wbModule = getTempWorkbook(templateFilePath);
//数据填充的sheet
Sheet wsheet = wbModule.getSheetAt(sheetNo);
for (Entry entry : dataMap.entrySet()) {
String point = entry.getKey();
Object data = entry.getValue();
TempCell cell = getCell(point, data, wsheet);
//指定坐标赋值
setCell(cell, wsheet);
}
//设置生成excel中公式自动计算
wsheet.setForceFormulaRecalculation(true);
}
public void writeDateList(String templateFilePath, String[] heads, List
大体思路:
最主要是制作好模版
代码根据模版,读取设置好的列的格式,在循环数据行,读取模版中的对应的行,存在该行就取得,不存在看是否需要copy某一行,不需要就手动创建无制定格式的行,后面在为该行的每一列对应的给个单元格制定格式和数据。
以上这篇基于apache poi根据模板导出excel的实现方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持考高分网。