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

微信注册重庆网站优化方式

微信注册,重庆网站优化方式,修改网站备案信息,wordpress 小工具制作方案简介 为了通过 EasyExcel 实现动态表头重命名&#xff0c;可以封装一个方法&#xff0c;传入动态的新表头名称列表&#xff08;List<String>&#xff09;&#xff0c;并结合 WriteHandler 接口来重命名表头。同时&#xff0c;通过 EasyExcel 将数据直接写入到输出流…

方案简介

为了通过 EasyExcel 实现动态表头重命名,可以封装一个方法,传入动态的新表头名称列表(List<String>),并结合 WriteHandler 接口来重命名表头。同时,通过 EasyExcel 将数据直接写入到输出流。

Powered by Moshow@https://zhengkai.blog.csdn.net/

核心实现说明

  1. 动态表头处理器:通过 DynamicHeaderWriteHandler 的构造方法接收表头列表,并在写入表头之前动态设置表头内容。

  2. 封装写入方法ExcelExportUtil 提供通用的导出方法,可以根据表头和数据生成 Excel 文件并写入到输出流。

  3. 直接写入输出流:通过 HttpServletResponse 将文件直接导出为响应内容,方便前端下载。

具体实现

1. 自定义动态表头处理器

我们实现一个动态表头处理器,将新表头通过构造方法传入。

import com.alibaba.excel.metadata.Head;
import com.alibaba.excel.write.handler.AbstractCellWriteHandler;
import org.apache.poi.ss.usermodel.Cell;import java.util.List;public class DynamicHeaderWriteHandler extends AbstractCellWriteHandler {private final List<String> newHeaders;// 构造方法传入动态表头列表public DynamicHeaderWriteHandler(List<String> newHeaders) {this.newHeaders = newHeaders;}@Overridepublic void beforeCellCreate(org.apache.poi.ss.usermodel.Workbook workbook,org.apache.poi.ss.usermodel.Sheet sheet,org.apache.poi.ss.usermodel.Row row,Head head,Integer columnIndex,Boolean isHead) {
​//Powered by Moshow@https://zhengkai.blog.csdn.net/​if (Boolean.TRUE.equals(isHead) && columnIndex < newHeaders.size()) {// 动态设置表头名称head.setHeadNameList(List.of(newHeaders.get(columnIndex)));}}
}

2. 封装写入方法

创建一个封装的方法,支持通过传入表头和数据,将结果直接输出到流中。

java

import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.write.metadata.WriteSheet;import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;public class ExcelExportUtil {/*** 导出 Excel 表格** @param response  HttpServletResponse 响应* @param data      数据列表* @param headers   动态表头* @param fileName  文件名* @author ​Powered by Moshow@https://zhengkai.blog.csdn.net/*/public static void exportExcel(HttpServletResponse response, List<?> data, List<String> headers, String fileName) throws IOException {response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");response.setCharacterEncoding("utf-8");response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".xlsx");// 创建动态表头处理器DynamicHeaderWriteHandler headerHandler = new DynamicHeaderWriteHandler(headers);// 写入数据到输出流EasyExcel.write(response.getOutputStream()).registerWriteHandler(headerHandler).head((Class<?>) data.get(0).getClass()) // 假设数据类已经标注了 @ExcelProperty.sheet("Sheet1").doWrite(data);}
}

3. 使用方法示例

在 Controller 中调用封装好的方法,传入动态表头和数据。

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;@RestController
public class ExcelExportController {@GetMapping("/export")public void export(HttpServletResponse response) throws IOException {//​Powered by Moshow@https://zhengkai.blog.csdn.net/
​// 模拟数据List<SampleData> data = new ArrayList<>();data.add(new SampleData("张三", 25, "北京"));data.add(new SampleData("李四", 30, "上海"));// 动态表头List<String> headers = List.of("姓名(新)", "年龄(新)", "地址(新)");// 导出 ExcelExcelExportUtil.exportExcel(response, data, headers, "示例文件");}// 数据类public static class SampleData {private String name;private Integer age;private String address;public SampleData(String name, Integer age, String address) {this.name = name;this.age = age;this.address = address;}// Getters 和 Setters 省略}
}

通过这种方式,你可以灵活设置动态表头,并实现直接导出到客户端的功能。

http://www.dtcms.com/a/568839.html

相关文章:

  • Spring Boot Web上下文工具类详解:获取Request、Response和参数
  • php购物网站开发实例源码杭州小程序制作公司排行榜
  • 测试开发话题09---自动化测试常用函数(1)
  • Linux - Fail2ban搭配 firewallcmd-rich-rules 完整部署教程
  • 使用 nvm 安装 Node.js
  • Arbess零基础学习 - 使用Arbess+GitLab实现Node.js项目自动化构建/主机部署
  • Linux 虚拟化技术 KVM/ESXI/Docker
  • C006基于博途西门子1200PLC机械手分拣物料控制系统仿真
  • 网站建设ui设计dw怎么做别人可以看的网站
  • 毕业生就业网站开发项目禁用wordpress默认编辑器
  • 服务器数据恢复—raid5阵列硬盘离线搞崩溃,分区数据恢复案例来袭
  • 基于springboot的新闻资讯系统
  • H3C AC+AP本地转发二层组网
  • JavaEE 进阶第五期:Maven 之道,项目的依赖艺术与构建哲学
  • Linux:五种IO模型与非阻塞IO
  • unity hub在ubuntu 22.0.4上启动卡住
  • 自己做个网站需要什么网页设计尺寸用怎么量
  • 青建设厅官方网站申请域名后怎样建设网站
  • 安装Conda并配置PX4无人机仿真环境
  • 微信小程序全局配置分享功能
  • Spring Boot3零基础教程,StreamAPI 更多用法,笔记100
  • Unity UGC IDE实现深度解析(六):子图系统与模块化设计
  • 嵌入式Linux新手入门:北京迅为3568开发板驱动开发第二章helloworld 驱动实验
  • 动态背景网站邗江区做网站
  • Milvus:向现有Collections更改和添加字段(十一)
  • ESP32C3开发指南(基于IDF):console控制台命令行交互功能
  • harmonyos的鸿蒙的跳转页面的部署参数传递
  • Git 简介和基础使用
  • HarmonyOS Marquee组件深度解析:构建高性能滚动视觉效果
  • 网站建设绿茶科技zencart 网站建设