需求:

根据Execl模板文件导出Execl,填充红色框框部分.如下图:

资料参考位置:Java实现根据excel模板导出数据(适合导出结构复杂的excel)_名字看着办的博客-CSDN博客_java根据模板导出excel

1.添加pom

<!-- jxls poi --><dependency><groupId>org.jxls</groupId><artifactId>jxls-poi</artifactId><version>2.10.0</version><exclusions><exclusion><groupId>org.apache.poi</groupId><artifactId>poi</artifactId></exclusion><exclusion><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId></exclusion></exclusions></dependency><dependency><groupId>org.jxls</groupId><artifactId>jxls</artifactId><version>2.10.0</version></dependency><dependency><groupId>net.sf.jxls</groupId><artifactId>jxls-core</artifactId><version>1.0.6</version></dependency><dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>3.9</version></dependency>

2.创建实体类, 修改模板文件, 字段对应Execl位置  ${} 处理

@Data
@AllArgsConstructor
@NoArgsConstructor
public class TestExecl implements Serializable {private static final long serialVersionUID = 1L;private String  num;private String  success;private String  fail;private String  date;public static TestExecl getExecl(){return new TestExecl(RandomUtil.randomString(5),RandomUtil.randomString(5),RandomUtil.randomString(5),"2008-08-08 20:00:00");}
}

3.核心方法

public String testExecl(HttpServletResponse response) {//模拟单个数据TestExecl testExecl = new TestExecl("12","13","14","2022-05-05 15:15:16");//模拟集合数据List<TestExecl> list  = new ArrayList<>();for (int i = 0; i < 10; i++) {list.add(TestExecl.getExecl());}Map<String,Object> param = new HashMap<>();param.put("title","省份数据");param.put("testExecl",testExecl);param.put("list",list);try {TemplateExcelUtils.downLoadExcel("测试数据","test.xls",param,response);} catch (Exception e) {e.printStackTrace();}return "success";}

4.工具类

package com.zhang.utiles;import net.sf.jxls.transformer.XLSTransformer;
import org.apache.poi.ss.usermodel.Workbook;import javax.servlet.http.HttpServletResponse;
import java.io.*;
import java.net.URLEncoder;
import java.util.Map;/*** @author : zhang sq* @date : 2022/6/13 9:08**/
public class TemplateExcelUtils {/*** 根据模板导出数据* @param fileName* @param sourcePath resource/template文件夹下路径* @param beanParams* @param response* @throws Exception*/public static void downLoadExcel(String fileName, String sourcePath, Map<String, Object> beanParams, HttpServletResponse response)throws Exception {try{//写入到某个位置OutputStream os = getOutputStream2(fileName);//返回前端流形式
//            OutputStream os = getOutputStream(fileName,response);//读取模板InputStream is = TemplateExcelUtils.class.getClassLoader().getResourceAsStream("templates/"+sourcePath);XLSTransformer transformer = new XLSTransformer();//向模板中写入内容Workbook workbook = transformer.transformXLS(is, beanParams);//写入成功后转化为输出流workbook.write(os);os.flush();os.close();}catch (Exception e){e.printStackTrace();throw e;}}/*** 导出文件时为Writer生成OutputStream. 流形式返回调用这个* @param fileName 文件名* @param response response* @return ""*/private static OutputStream getOutputStream(String fileName,HttpServletResponse response) throws Exception {try {fileName = URLEncoder.encode(fileName, "UTF-8");response.setContentType("application/vnd.ms-excel");response.setCharacterEncoding("utf8");response.setHeader("Content-Disposition", "attachment; filename=" + fileName + ".xls");response.setHeader("Pragma", "public");response.setHeader("Cache-Control", "no-store");response.addHeader("Cache-Control", "max-age=0");return response.getOutputStream();} catch (IOException e) {throw new Exception("导出excel表格失败!", e);}}/*** 写入到某个位置 .调用此方法* @param fileName 文件名* @throws Exception*/private static OutputStream getOutputStream2(String fileName) throws Exception {try {return new FileOutputStream(new File("C:\\Users\\17607\\Desktop\\"+fileName+".xls"));} catch (IOException e) {throw new Exception("导出excel表格失败!", e);}}}

5.效果

6.这块可能还会涉及到列或者行的合并处理, 后续有机会在补充吧,或者大佬知道怎么处理的话,评论区留下操作地址

Execl模板导出复杂Execl文件相关推荐

  1. 使用alibaba的easyexcel填充复杂模板,导出Excel,返回文件流

    做个记录,试了很多方法都不行(本来想使用对象单独写一个table,但是没找到属性),又不想更换依赖,后面才看到的模板填充,能用............ //依赖 <dependency>& ...

  2. java pdf 导出下载_Java+PDF模板导出成pdf文件,并下载

    1,根据前人经验,熟悉完成基础操作:https://www.cnblogs.com/wangpeng00700/p/8418594.html?tdsourcetag=s_pcqq_aiomsg 2,根 ...

  3. springboot系列(三十一):如何实现excel模板导出成pdf文件?这你得会 | 超级详细,建议收藏

  4. Java导出PDF文档(模板导出和自定义)

    项目场景: 需要导出PDF文档,支持模板导出和自定义文档格式. 场景分析: PDF模板创建可使用表单域创建表单字段,引入数据填充,或者根据实际需要生成html转换成pdf. 解决方案: PDF模板可以 ...

  5. LayUI超简单导出execl模板(无数据模板)

    因业务需求,点击按钮,生成一个execl模板,给用户按照模板填写数据 然后发现Layui自带一个带出execl的功能,可以作为生成execl模板直接使用,无后端交互,直接前端生成,并且只需几行数据. ...

  6. asp.net C# 将数据导出到Execl汇总

    asp.net中导出Execl的方法: 在asp.net中导出Execl有两种方法,一种是将导出的文件存放在服务器某个文件夹下面,然后将文件地址输出在浏览器上:一种是将文件直接将文件输出流写给浏览器. ...

  7. 【Apache POI】Java Web根据模板导出word文件

    最近工作中遇到一个需求:根据word模板文档导出word文件. 查阅了一些资料,发现Apache POI可以实现文档读写的功能,于是就研究了一下,总结如下: Apache-POI在线Javadoc:h ...

  8. springboot使用jxls导出excel___(万能通用模板)--- SpringBoot导入、导出Excel文件___SpringBoot整合EasyExcel模板导出Excel

    springboot使用jxls导出excel 实现思路: 首先在springBoot(或者SpringCloud)项目的默认templates目录放入提前定义好的Excel模板,然后在具体的导出接口 ...

  9. 使用PHPExcel实现Excel文件的导入和导出(模板导出)

    在之前有写过一篇文章讲述了使用PHP快速生成excel表格文件并下载,这种方式生成Excel文件,生成速度很快,但是有缺点是: 1.单纯的生成Excel文件,生成的文件没有样式,单元格属性(填充色,宽 ...

最新文章

  1. 基于Python的自动特征工程——教你如何自动创建机器学习特征
  2. 塑料:泡两天澡我就消失了?酶降解塑料居然可以这么快 | Nature
  3. 深圳.NET俱乐部 Windows 7 社区发布会总结及资源下载
  4. 带有自定义注释的Java注释教程
  5. 【渝粤教育】国家开放大学2018年春季 3896T人文英语1 参考试题
  6. Sticky vs fixed
  7. Java5、Java6、Java7的新特性
  8. import cv2 失败 ImportError:DLL load fail:找不到指定模块
  9. 关于如何在Android、Java等非微软平台上建立高信任的SharePoint应用程序
  10. count(*),count(1)和count(字段)的区别
  11. Mac OS X 编译Android内核源代码
  12. MSAgent(微软助手精灵)很好很强大
  13. 多道程序设计系统中CPU的利用率
  14. java 运维系统_Java 应用运维
  15. 城通网盘API的链接研究
  16. 新版标准日本语中级_第十四课
  17. Java教程:如何申请Java开发支付宝支付中的必要参数(AppID,支付宝公钥,应用私钥)
  18. kali虚拟机无法联网
  19. 准备好迎接你的“新同事”了吗?他叫人工智能 | 精选
  20. 苹果ipv6审核解决方案

热门文章

  1. keepalived persistence_timeout参数意义 LVS Persistence 参数的作用
  2. Twisted高级话题的学习
  3. python列表,字典,集合
  4. React context 、PropTypes
  5. 遇到百度网址安全中心提醒您该页面可能存在XXXXXX的处理解决办法
  6. 基于STM32F103C8T6实现用2.4G模块(NRF2401)传输室内温湿度并显示OLED
  7. (~)运算符的理解与解析
  8. linux挂载u盘出错_linux挂载移动硬盘出错
  9. C#制作网络Ping程序
  10. atoi函数的使用和实现