首先引入依赖
org.apache.poi
poi
4.1.0
org.apache.poi
poi-ooxml
4.1.0
下面是工具类,供参考使用
package cn.stylefeng.guns.core.util;
import org.apache.poi.hssf.usermodel.HSSFFont;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.streaming.SXSSFSheet;
import org.apache.poi.xssf.streaming.SXSSFWorkbook;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import java.io.IOException;
import java.io.OutputStream;
import java.math.BigDecimal;
import java.util.List;
import java.util.Map;
/**
* excel导出工具
*
* @author hexm
* @date 2019/9/5 9:29
*/
public class ExcelExportUtil {
//sheet各个列的表头
private String[] headList;
//各个列的元素key值
private String[] headKey;
//sheet需要填充的数据信息
private List
调用代码示例:
/**
* 导出excel
*
* @param ids
* @return
* @throws IOException
*/
@RequestMapping("/exportExcel")
public void exportExcel(String ids, HttpServletResponse response) throws IOException {
if (StringUtils.isNotEmpty(ids)) {
List idList = Arrays.stream(ids.split(",")).map(Integer::parseInt).collect(Collectors.toList());
String[] head = {"title1", "title2"};
String[] keys = {"key1", "key2"};
List> data = service.findList(idList);
OutputStream os = response.getOutputStream();
//不缓存
response.setHeader("Cache-Control", "no-cache, no-store, must-revalidate");
response.setHeader("Pragma", "no-cache");
response.setHeader("Expires", "0");
//内容标识
response.setContentType("application/vnd.ms-excel");
String name = String.format("%s(总计-%s).xlsx", DateUtil.getDateFormat(DateUtil.SQL_FORMAT), data.size());
//下载/另存为时,展示
response.setHeader("content-disposition", "attachment;filename=" + URLEncoder.encode(name, "UTF-8"));
//需要先设置响应头,然后再写入数据流,不然格式上会有问题
ExcelExportUtil.of("清单", head, keys, data)
.setTitleBackgroundColor(HSSFColor.HSSFColorPredefined.GREY_25_PERCENT.getIndex())//设置标题背景灰度25%
.writeXlsxTo(os,1000);//将数据写入到流中,始终保持内存最大1000条数据,防止内存溢出
os.flush();
os.close();
}
}
代码仅供参考,如果业务需支持复杂度更高的,需要自定义修改工具
贴上效果图,不然老是觉得自己没有说服力!
