参考:Hutool参考文档 response模块 | magic-api
import response;
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DateUtil;
import cn.hutool.poi.excel.ExcelUtil;
import cn.hutool.poi.excel.ExcelWriter;
import cn.hutool.poi.excel.StyleSet;
import org.apache.poi.ss.usermodel.IndexedColors;
import org.apache.poi.ss.usermodel.Font;
import org.apache.poi.ss.usermodel.CellStyle;
Map row1 = new LinkedHashMap();
row1.put("姓名", "张三");
row1.put("年龄", 23);
row1.put("成绩", 88.32);
row1.put("是否合格", true);
row1.put("考试日期", DateUtil.date());
Map row2 = new LinkedHashMap();
row2.put("姓名", "李四");
row2.put("年龄", 33);
row2.put("成绩", 59.50);
row2.put("是否合格", false);
row2.put("考试日期", DateUtil.date());
ArrayList rows = new ArrayList();
rows.add(row1);
rows.add(row2);
// 创建输出 - 设置为true 是 xlsx的格式
ExcelWriter writer = ExcelUtil.getWriter(true);
// 定义单元格背景色
StyleSet style = writer.getStyleSet();
// 第二个参数表示是否也设置头部单元格背景
style.setBackgroundColor(IndexedColors.GREEN, false);
// 创建标题字体
Font font = writer.createFont();
font.setFontName("黑体");
font.setBold(true);
font.setColor(Font.COLOR_RED);
font.setItalic(true);
//第二个参数表示是否忽略头部样式
style.setFont(font, true);
// 跳过当前行,既第一行,非必须,在此演示用
// writer.passCurrentRow();
writer.merge(row1.size() - 1, "测试标题");
// 一次性写出内容,使用默认样式,强制输出标题
writer.write(rows, true);
// 全局 宽15
writer.setColumnWidth(-1, 15);
// 全局 高25
writer.setRowHeight(-1, 25);
// test.xls是弹出下载对话框的文件名,不能为中文,中文请自行编码
response.setHeader("Content-Disposition","attachment;filename=test.xlsx");
ServletOutputStream out=response.getOutputStream();
writer.flush(out, true);
// 关闭writer,释放内存
writer.close();