easyExcel 按照模板设置到处excel内容

news/2024/7/21 4:30:36 标签: excel, easyexcel, spring, spring boot

1.引入

 <!--easyexcel -->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>easyexcel</artifactId>
            <version>3.3.1</version>
        </dependency>
        <dependency>
            <groupId>com.github.whvcse</groupId>
            <artifactId>easy-captcha</artifactId>
            <version>1.6.2</version>
        </dependency>

2.设置模板  打印模板.xlsx

3.相关代码

    @ApiOperation(value = "获取excle,根据excle模板")
    @GetMapping("getExcel")
    public void getExcel(HttpServletResponse response) throws IOException {
    	response.setContentType("application/vnd.ms-excel");
        response.setCharacterEncoding("UTF-8");
        response.setHeader("Content-disposition", "attachment;filename=" +  DateUtil.currentTimeSeconds() + ".xlsx");
    	//指定excel模板文件
//        String templateFileName = "C:\\Users\\13628\\Desktop\\打印模板.xlsx";
        ResourceLoader resourceLoader = new DefaultResourceLoader();
        InputStream templateFileInputStream = resourceLoader.getClassLoader().getResourceAsStream("打印模板.xlsx");
        //指定填充后保存excel的文件
//        String fileName = "C:\\Users\\13628\\Desktop\\demo.xlsx";
        //数据
        Map<String, Object> map = new HashMap<String, Object>();
        map.put("payTime", "2023-08-09");
        List<Map<String, Object>> list = new ArrayList<Map<String,Object>>();
        for (int i = 0; i < 5; i++) {
        	Map<String, Object> map1 = new HashMap<String, Object>();
        	map1.put("gname", "测试"+i);
        	map1.put("price", 2.38+i);
        	map1.put("relPrice", 3.38+i);
        	list.add(map1);
        }
        map.put("records", list);
        //导出
        ByteArrayOutputStream out = new ByteArrayOutputStream();
        try (ExcelWriter excelWriter = EasyExcel.write(response.getOutputStream()).withTemplate(templateFileInputStream).build()){
            WriteSheet writeSheet = EasyExcel.writerSheet().build();
            // 这里注意 入参用了forceNewRow 代表在写入list的时候不管list下面有没有空行 都会创建一行,然后下面的数据往后移动。默认 是false,会直接使用下一行,如果没有则创建。
            // forceNewRow 如果设置了true,有个缺点 就是他会把所有的数据都放到内存了,所以慎用
            // 简单的说 如果你的模板有list,且list不是最后一行,下面还有数据需要填充 就必须设置 
            //forceNewRow=true 但是这个就会把所有数据放到内存 会很耗内存
            // 如果数据量大 list不是最后一行 参照下一个
            FillConfig fillConfig =                 
            FillConfig.builder().forceNewRow(Boolean.TRUE).build();
            excelWriter.fill(map, writeSheet);
            excelWriter.fill(new FillWrapper("records", list), fillConfig, writeSheet);
        }

    }

4.apifox调试,返回文件流,点击下载即可下载文件

下载后文件


http://www.niftyadmin.cn/n/5083149.html

相关文章

主流大模型训练库和框架的介绍

文章目录 前言1.主流大模型框架介绍 前言 参考&#xff1a; Pytorch训练模型损失Loss为Nan或者无穷大&#xff08;INF&#xff09;原因 1.主流大模型框架介绍

EDUSRC-记一个SHELL捡漏

目录 ​编辑 Jenkins - println绕过到shell命令执行 语法 Jenkins未授权访问(捡漏失败) Jenkins捡漏 弱口令 脚本执行(println失败) CHATGPT调教绕过 hack渗透视频教程&#xff0c;扫码免费领 Jenkins - println绕过到shell命令执行 语法 org"China Education and…

idea 打包 java 项目 报错类似 No valid Maven installation found - 在maven打包前,修改打包名(jar包)

目录 一、idea 打包 java 项目 报错类似 No valid Maven installation found二、在maven打包前&#xff0c;修改打包名参考链接 一、idea 打包 java 项目 报错类似 No valid Maven installation found 解决措施&#xff1a;一定要能看到maven的版本才行&#xff0c;配置到盖层…

C# - 常用API

Assembly.GetCallingAssembly 方法 获取当前方法的调用程序集: Console.WriteLine("FirstMethod called from: " Assembly.GetCallingAssembly().FullName); Assembly.GetExecutingAssembly 方法 获取包含当前执行的代码的程序集: //获取当前执行的代码的程序集…

【三维张量的展开和折叠 python】

三维张量的展开和折叠 python 测试张量&#xff0c;模态展开和折叠函数测试结果 测试张量&#xff0c;模态展开和折叠函数 tensor np.array([[[0, 3, 6, 9],[1, 4, 7, 10],[2, 5, 8, 11]],[[12, 15, 18, 21],[13, 16, 19, 22],[14, 17, 20, 23]]])def mode_k_folding(mat, k,…

工业交换机选用技巧

当选择工业交换机时&#xff0c;有一些小技巧可以帮助您做出更好的选择&#xff0c;今天&#xff0c;我们一起来了解一下 1. 网络需求分析&#xff1a;首先&#xff0c;对您的网络需求进行详细分析。确定您的带宽需求、设备数量、数据传输量、网络拓扑结构等因素&#xff0c;以…

【广州华锐互动】VR建筑施工事故体验:提高工人安全意识和责任感

VR建筑施工事故体验的意义在于通过模拟真实场景和情况&#xff0c;帮助人们更好地理解建筑施工中的安全问题&#xff0c;并提供一种安全、有效的方式来学习和掌握安全技能。 建筑施工是一项高风险的工作&#xff0c;涉及各种复杂的工作环境和操作过程。在现实中&#xff0c;建筑…

基于全景运动感知的飞行视觉脑关节神经网络全方位碰撞检测

https:/doi.org/10.1155/2023/5784720 摘要&#xff1a; 生物系统有大量的视觉运动检测神经元&#xff0c;其中一些神经元可以优先对特定的视觉区域做出反应。然而&#xff0c;关于如何使用它们来开发用于全向碰撞检测的神经网络模型&#xff0c;很少有人做过工作。为此&#…