当前位置: 首页 > news >正文

excel导出,多列合并表头

1、maven依赖:

<easypoi-version>3.2.0</easypoi-version><!-- easypoi-->
<dependency><groupId>cn.afterturn</groupId><artifactId>easypoi-base</artifactId><version>${easypoi-version}</version>
</dependency>
<dependency><groupId>cn.afterturn</groupId><artifactId>easypoi-web</artifactId><version>${easypoi-version}</version>
</dependency>
<dependency><groupId>cn.afterturn</groupId><artifactId>easypoi-annotation</artifactId><version>${easypoi-version}</version>
</dependency>

2、定制表头:

public List<ExcelExportEntity> exportEnergyDetailDefineHead() {List<ExcelExportEntity> colList = new ArrayList<>();// 单个表头
ExcelExportEntity entity0 = new ExcelExportEntity("月份", "financialDate");
entity0.setOrderNum(0);
entity0.setWidth(20);
colList.add(entity0);ExcelExportEntity entity1 = new ExcelExportEntity("费项", "feeName");
entity1.setOrderNum(1);
entity1.setWidth(20);
colList.add(entity1);// 合并表头
String groupName1 = "自用用量";
ExcelExportEntity selfUseDosage1 = new ExcelExportEntity("尖", "selfUseDosage1");
selfUseDosage1.setOrderNum(2);
selfUseDosage1.setWidth(10);
selfUseDosage1.setGroupName(groupName1);
colList.add(selfUseDosage1);ExcelExportEntity selfUseDosage2 = new ExcelExportEntity("峰", "selfUseDosage2");
selfUseDosage2.setOrderNum(3);
selfUseDosage2.setWidth(10);
selfUseDosage2.setGroupName(groupName1);
colList.add(selfUseDosage2);ExcelExportEntity selfUseDosage3 = new ExcelExportEntity("平", "selfUseDosage3");
selfUseDosage3.setOrderNum(4);
selfUseDosage3.setWidth(10);
selfUseDosage3.setGroupName(groupName1);
colList.add(selfUseDosage3);ExcelExportEntity selfUseDosage4 = new ExcelExportEntity("谷", "selfUseDosage4");
selfUseDosage4.setOrderNum(5);
selfUseDosage4.setWidth(10);
selfUseDosage4.setGroupName(groupName1);
colList.add(selfUseDosage4);return colList;
}

3、导出方法:

@ApiOperation(value = "能耗-导出能耗明细")
@ApiResponse(code = 200, message = "返回结果")
@RequestMapping(value = "/finance/finEnergyBill/exportEnergyDetail", method = RequestMethod.POST)
public void exportEnergyDetail(@RequestBody FinEnergyBillSearchDto dto, HttpServletResponse response) {// 添加用户拥有的项目权限集合dto.setProjectAuthIdList(basProjectService.getAuthProjectIds());// 查询数据List<Map<String, Object>> exportList = finInvoiceBillClient.exportEnergyDetail(dto).getResult();// 设置表头List<ExcelExportEntity> colList = finEnergyBillService.exportEnergyDetailDefineHead();// 文件名String fileName = "能耗明细" + DateUtils.parseDateToStr("yyyyMMddHHmmss", new Date());// 生成excelExcelUtil.generateExcelActiveHead(response, exportList, colList, fileName, "能耗明细");}

4、excel工具类:

import cn.afterturn.easypoi.excel.ExcelExportUtil;
import cn.afterturn.easypoi.excel.entity.ExportParams;
import cn.afterturn.easypoi.excel.entity.params.ExcelExportEntity;
import com.alibaba.fastjson.JSON;
import lombok.extern.slf4j.Slf4j;
import org.apache.poi.ss.usermodel.Workbook;import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.util.List;/*** 导出excel 工具类.*/
@Slf4j
public class ExcelUtil {/*** 生成excel** @param response* @param list     导出的数据* @param clazz    list 中对应的泛型* @param fileName 导出的文件名*/public static void generateExcel(HttpServletResponse response, List<? extends Object> list, Class clazz, StringfileName, String sheetName) {log.info("======method:generateExcel list:{},", JSON.toJSONString(list));//生成Excel文件ExportParams exportParams = new ExportParams();exportParams.setStyle(ExcelExportStyler.class);Workbook workbook = ExcelExportUtil.exportExcel(exportParams, clazz, list);workbook.setSheetName(0, sheetName);response.setCharacterEncoding("UTF-8");response.setHeader("content-Type", "application/vnd.ms-excel");//通过输出流输出文件try {String fileName2 = URLEncoder.encode(fileName, "utf-8").replaceAll("\\+", "%20");response.setHeader("Content-Disposition", "attachment;filename*=utf-8''" + fileName2 + ".xls");ServletOutputStream out = response.getOutputStream();workbook.write(out);out.flush();out.close();} catch (UnsupportedEncodingException e) {log.error("======method:generateExcel exception:", e);} catch (IOException e) {log.error("======method:generateExcel exception:", e);}}/*** 生成excel (动态标题)** @param response* @param list     导出的数据* @param headList excel 标题* @param fileName 导出的文件名*/public static void generateExcelActiveHead(HttpServletResponse response, List<? extends Object> list,List<ExcelExportEntity> headList, String fileName, String sheetName) {log.info("======method:generateExcelActiveHead list:{},", JSON.toJSONString(list));//生成Excel文件ExportParams exportParams = new ExportParams();exportParams.setStyle(ExcelExportStyler.class);Workbook workbook = ExcelExportUtil.exportExcel(exportParams, headList, list);workbook.setSheetName(0, sheetName);response.setCharacterEncoding("UTF-8");response.setHeader("content-Type", "application/vnd.ms-excel");//通过输出流输出文件try {String fileName2 = URLEncoder.encode(fileName, "utf-8").replaceAll("\\+", "%20");response.setHeader("Content-Disposition", "attachment;filename*=utf-8''" + fileName2 + ".xls");// response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(fileName,"UTF-8")// +".xls");ServletOutputStream out = response.getOutputStream();workbook.write(out);out.flush();out.close();} catch (UnsupportedEncodingException e) {log.error("======method:generateExcelActiveHead exception:", e);} catch (IOException e) {log.error("======method:generateExcelActiveHead exception:", e);}}
}
http://www.dtcms.com/a/350937.html

相关文章:

  • 运行node18报错
  • 【JVM】类加载器都有哪些?
  • ChromaDB向量数据库Python教程:从入门到实战完整指南(含游戏资源管理系统案例
  • Java大厂面试实战:从Spring Boot到微服务架构的全链路技术拆解
  • 计算机视觉:从 “看见” 到 “理解”,解锁机器感知世界的密码
  • Windows 命令行:mkdir 命令
  • 【配置】CurSor使用Claude 4.0如何解除地域限制
  • [CS创世SD NAND征文] CS创世CSNP1GCR01-AOW在运动控制卡中的高可靠应用
  • 塞尔达传说 旷野之息 PC/手机双端(The Legend of Zelda: Breath of the Wild)免安装中文版
  • 深入了解linux系统—— 线程封装
  • podman启动mongdb的container因为权限问题导致changing ownership和读取storage.bson失败的解决方法
  • HarmonyOS image组件深度解析:多场景应用与性能优化指南(2.4详细解析,完整见uniapp官网)
  • week5-[循环结构]听歌
  • MAE——Masked Autoencoders Are Scalable Vision Learners/图像分类和去雨雾重建/
  • 【ElasticSearch】json查询语法
  • 每日一题——力扣498 对角线遍历
  • Mo 人工智能在线教学实训平台
  • Python训练营打卡Day43-Tensorboard使用介绍
  • 美团一面“保持好奇”
  • JavaScript 中类(class)的super 关键字
  • AMH和cyberpanel等管理软件,哪个里面可以部署AI软件?
  • 【STM32】CubeMX(十二):FreeRTOS消息队列
  • vue3+typescript:为表格生成唯一的Key/No
  • 二分|组合|旋转数组
  • SET FOREIGN_KEY_CHECKS=0
  • CentOS 部署 Prometheus 并用 systemd 管理
  • 似然函数对数似然函数负对数似然函数
  • 项目1:异步邮件发送系统实战
  • 自由学习记录(88)
  • 设计一个完整可用的 Spring Boot Starter