Execl模板导出复杂Execl文件
需求:
根据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文件相关推荐
- 使用alibaba的easyexcel填充复杂模板,导出Excel,返回文件流
做个记录,试了很多方法都不行(本来想使用对象单独写一个table,但是没找到属性),又不想更换依赖,后面才看到的模板填充,能用............ //依赖 <dependency>& ...
- java pdf 导出下载_Java+PDF模板导出成pdf文件,并下载
1,根据前人经验,熟悉完成基础操作:https://www.cnblogs.com/wangpeng00700/p/8418594.html?tdsourcetag=s_pcqq_aiomsg 2,根 ...
- springboot系列(三十一):如何实现excel模板导出成pdf文件?这你得会 | 超级详细,建议收藏
- Java导出PDF文档(模板导出和自定义)
项目场景: 需要导出PDF文档,支持模板导出和自定义文档格式. 场景分析: PDF模板创建可使用表单域创建表单字段,引入数据填充,或者根据实际需要生成html转换成pdf. 解决方案: PDF模板可以 ...
- LayUI超简单导出execl模板(无数据模板)
因业务需求,点击按钮,生成一个execl模板,给用户按照模板填写数据 然后发现Layui自带一个带出execl的功能,可以作为生成execl模板直接使用,无后端交互,直接前端生成,并且只需几行数据. ...
- asp.net C# 将数据导出到Execl汇总
asp.net中导出Execl的方法: 在asp.net中导出Execl有两种方法,一种是将导出的文件存放在服务器某个文件夹下面,然后将文件地址输出在浏览器上:一种是将文件直接将文件输出流写给浏览器. ...
- 【Apache POI】Java Web根据模板导出word文件
最近工作中遇到一个需求:根据word模板文档导出word文件. 查阅了一些资料,发现Apache POI可以实现文档读写的功能,于是就研究了一下,总结如下: Apache-POI在线Javadoc:h ...
- springboot使用jxls导出excel___(万能通用模板)--- SpringBoot导入、导出Excel文件___SpringBoot整合EasyExcel模板导出Excel
springboot使用jxls导出excel 实现思路: 首先在springBoot(或者SpringCloud)项目的默认templates目录放入提前定义好的Excel模板,然后在具体的导出接口 ...
- 使用PHPExcel实现Excel文件的导入和导出(模板导出)
在之前有写过一篇文章讲述了使用PHP快速生成excel表格文件并下载,这种方式生成Excel文件,生成速度很快,但是有缺点是: 1.单纯的生成Excel文件,生成的文件没有样式,单元格属性(填充色,宽 ...
最新文章
- 基于Python的自动特征工程——教你如何自动创建机器学习特征
- 塑料:泡两天澡我就消失了?酶降解塑料居然可以这么快 | Nature
- 深圳.NET俱乐部 Windows 7 社区发布会总结及资源下载
- 带有自定义注释的Java注释教程
- 【渝粤教育】国家开放大学2018年春季 3896T人文英语1 参考试题
- Sticky vs fixed
- Java5、Java6、Java7的新特性
- import cv2 失败 ImportError:DLL load fail:找不到指定模块
- 关于如何在Android、Java等非微软平台上建立高信任的SharePoint应用程序
- count(*),count(1)和count(字段)的区别
- Mac OS X 编译Android内核源代码
- MSAgent(微软助手精灵)很好很强大
- 多道程序设计系统中CPU的利用率
- java 运维系统_Java 应用运维
- 城通网盘API的链接研究
- 新版标准日本语中级_第十四课
- Java教程:如何申请Java开发支付宝支付中的必要参数(AppID,支付宝公钥,应用私钥)
- kali虚拟机无法联网
- 准备好迎接你的“新同事”了吗?他叫人工智能 | 精选
- 苹果ipv6审核解决方案