easypoi模板导出文件,支持Liunx系统(自用)

news2024/11/25 6:32:33

springboot使用easypoi通过使用模板导出文件

第一步:导入poi以及easypoi的maven坐标

首先,easypoi是依赖于Apache的poi实现的,因此需要先引入poi

<dependency>
	<groupId>org.apache.poi</groupId>
	<artifactId>poi</artifactId>
	<version>4.1.2</version>
</dependency>
<!--xlsx格式excel依赖包-->
<dependency>
	<groupId>org.apache.poi</groupId>
	<artifactId>poi-ooxml</artifactId>
	<version>4.1.2</version>
</dependency>
 <dependency>
            <groupId>cn.afterturn</groupId>
            <artifactId>easypoi-base</artifactId>
            <version>3.1.0</version>
        </dependency>
        <dependency>
            <groupId>cn.afterturn</groupId>
            <artifactId>easypoi-web</artifactId>
            <version>3.1.0</version>
        </dependency>
        <dependency>
            <groupId>cn.afterturn</groupId>
            <artifactId>easypoi-annotation</artifactId>
            <version>3.1.0</version>
        </dependency>
<dependency>
    <groupId>cn.afterturn</groupId>
    <artifactId>easypoi-spring-boot-starter</artifactId>
    <version>4.4.0</version>
</dependency>

第二步:确认文件模板存放地址

本人是放在resource 文件下
在这里插入图片描述
personList 为 集合为集合名称 t.projectName t 为固定写法,projectName 为集合的具体字段
在这里插入图片描述
以下就是模板常用的指令:
空格分割
三目运算 {{test ? obj:obj2}}
n: 表示 这个cell是数值类型 {{n:}}
le: 代表长度{{le:()}} 在if/else 运用{{le:() > 8 ? obj1 : obj2}}
fd: 格式化时间 {{fd:(obj;yyyy-MM-dd)}}
fn: 格式化数字 {{fn:(obj;###.00)}}
fe: 遍历数据,创建row
!fe: 遍历数据不创建row
$fe: 下移插入,把当前行,下面的行全部下移.size()行,然后插入
#fe: 横向遍历
v_fe: 横向遍历值
!if: 删除当前列 {{!if:(test)}}
单引号表示常量值 ‘’ 比如’1’ 那么输出的就是 1
&NULL& 空格
&INDEX& 表示循环中的序号,自动添加
]] 换行符 多行遍历导出
sum: 统计数据
cal: 基础的±X% 计算
dict: 字典
i18n: 国际化

第三步:实际业务代码

controller层

    /***
     * @param planId
     * @param response 响应头
     */
    @GetMapping("export")
    public void export(@RequestParam Long planId, HttpServletResponse response) {
        planService.export(planId, response);
    }

serviceImpl 层

String title = name + "一房一价.xlsx";
            try {
                TemplateExportParams templateExportParams = new TemplateExportParams("template/abc.xlsx");
                Map<String,Object> map = new HashMap<>();
                map.put("personList",excelList);
                response.setHeader("Content-Disposition",
                        "attachment;filename=" + new String(title.getBytes("UTF-8"), "iso8859-1"));
                response.setContentType("application/vnd.ms-excel;charset=UTF-8");
                response.setHeader("Pragma", "no-cache");
                response.setHeader("Cache-Control", "no-cache");
                response.setDateHeader("Expires", 0);
                BufferedOutputStream bufferedOutPut = new BufferedOutputStream(response.getOutputStream());
                Workbook workbook = ExcelExportUtil.exportExcel(templateExportParams, map);
                workbook.write(bufferedOutPut);
                bufferedOutPut.flush();
                bufferedOutPut.close();
                workbook.close();
            }catch (Exception e){
                e.printStackTrace();
            }

ps 异常处理

由于文件是放在resource 文件下,在liux系统上是jar包形式,可能在实际生成中导出会报错。
在这里插入图片描述
处理方法:在pom 里面加入

 <build>
        <resources>
            <resource>
                <directory>src/main/resources</directory>
                <filtering>true</filtering>
            </resource>
        </resources>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-resources-plugin</artifactId>
                <version>2.6</version>
                <configuration>
                    <encoding>UTF-8</encoding>
                    <nonFilteredFileExtensions>
                        <nonFilteredFileExtension>xlsx</nonFilteredFileExtension>
                        <nonFilteredFileExtension>pdf</nonFilteredFileExtension>
                        <nonFilteredFileExtension>docx</nonFilteredFileExtension>
                    </nonFilteredFileExtensions>
                </configuration>
            </plugin>

        </plugins>
    </build>

即解决

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/616575.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

智慧加油站解决方案,提高加油区和卸油区的安全性和效率

英码科技智慧加油站解决方案是一个综合应用了AI智能算法的视觉分析方案&#xff0c;旨在提高加油区和卸油区的安全性和效率。 加油区算法&#xff1a; 吸烟检测&#xff1a;通过AI算法分析视频流&#xff0c;检测是否有人在加油区域吸烟&#xff0c;以防止火灾风险。 打电话…

Web Scoket简述

Web Socket 简介 初次接触 Web Socket 的人&#xff0c;我们已经有了 HTTP 协议&#xff0c;为什么还需要另一个协议&#xff1f;它能带来什么好处&#xff1f; 因为 HTTP 协议有一个缺陷&#xff1a;通信只能由客户端发起。http基于请求响应实现。 &#xff08;准确来说HTTP…

使用Cloudflare Zaraz 可让同意管理变得简单明了

视您的居住地而定&#xff0c;在首次造访网站时&#xff0c;可能会要求您同意使用Cookie。如果您曾经点选过「核准」以外的其他选项&#xff0c;您就会注意到&#xff0c;关于应该或不应该允许哪些服务使用Cookie 的选项清单可能非常长。这是因为网站通常会整合许多第三方工具进…

陕西省赛2023-部分Reverse复现

目录 我的upx -d怎么坏了 动调脱upx壳&#xff1a; babypython BadCoffee ob混淆&#xff1a; 我的upx -d怎么坏了 打开附件&#xff0c;发现是upx壳&#xff0c;应该是修改了区段名或者特征码 但是修改过还是不对.....(哭.jpg)应该还是改了其他 好学长告诉我直接动态调试…

【Matter】Nordic Mattter(开发大纲)

nRF Connect SDK 支持Mattter Nordic提供的Matter用户指南 子页面&#xff1a; Matter概况开始使用Matter如何创建 Matter 最终产品 Matter网络拓扑结构 Thread&#xff1a;Thread是一种开放的低功耗无线通信协议&#xff0c;旨在为物联网设备提供安全、稳定、高效的IPv6连接。…

混合动力汽车耐久测试

一 背景 整车厂可通过发动机和电机驱动的结合为多款车型提供混合动力驱动技术。汽车集成电机驱动可大大减少二氧化碳的排放&#xff0c;不仅如此&#xff0c;全电动驱动或混合动力驱动的汽车还将使用户体验到更好的驾驶感受&#xff0c;且这种汽车可通过电动机来实现更快的加速…

机器学习 | 降维问题

目录 一、主成分分析 二、奇异值分解 2.1 奇异值分解原理 2.2 奇异值分解实践 三、特征值与特征向量 一、主成分分析 主成分有如下特征&#xff1a; 每个主成分是原变量的线性组合&#xff1b;各个主成分之间互不相关&#xff1b;主成分按照方差贡献率从大到小依次排列&…

【诗视野文学社】五一特刊|本期诗人:胭脂茉莉 李本 薛宏 文爱艺 唐根金 王宁 迪夫 东楠灵

【诗视野文学社】五一特刊 本期诗人&#xff1a;胭脂茉莉 李本 薛宏 文爱艺 唐根金 王宁 迪夫 东楠灵 脂茉莉简介&#xff1a;刘彦芹&#xff0c;女&#xff0c;作家、诗人&#xff0c;江苏人&#xff0c;年少习诗&#xff0c;评论及随笔见诸媒体及报刊&#xff0c;诗歌被选入海…

中国人民大学与加拿大女王大学金融硕士引领你走出职场困境,勇往直前!

走到一定职位时&#xff0c;想更进一步基本无望&#xff0c;到了自己事业的瓶颈期。从底层一路冲到中层靠的是能力&#xff0c;靠的是忠诚&#xff0c;靠的是勤奋&#xff0c;而再向上走&#xff0c;该凭借什么&#xff0c;完全找不到方向。而那些极个别的人却在自己看不到的地…

基于PySpark的10亿级数据集LAION-5B元数据快速处理实践(全文分享)

推荐语 多模态大模型训练如火如荼展开&#xff0c;但以LAION-5B为代表的大规模多模态数据集获取却成了一个令人头疼的问题。 OpenDataLab两位工程师在浦数 AI Talk做了非常实用的LAION-5B下载经验分享&#xff0c;我们整理了其演讲内容、Parquet文件、图片下载工具&#xff0…

Hive执行计划之一文读懂Hive执行计划

目录 文章目录 概述1.hive执行计划的查看2.学会查看Hive执行计划的基本信息3.执行计划步骤操作过程4.explain extended 概述 Hive的执行计划描述了一个hiveSQL语句的具体执行步骤&#xff0c;通过执行计划解读可以了解hiveSQL语句被解析器转换为相应程序语言的执行逻辑。通过…

软件测试人员迷茫之中如何找到职业发展的方向?

出现迷茫或焦虑的原因是什么&#xff1f; 也许每个人的原因不一样&#xff0c;但不外乎是下面这些原因叠加的结果。 1、敏捷和DevOps开发模式的推行&#xff0c;虽然20年的历史是否已经证明“敏捷已经失败了” 暂且不管&#xff0c;但敏捷/DevOps之风刮的还是很厉害&#xff0c…

每日一练 | 华为认证真题练习Day53

1、现在有以下10.24.0.0/24&#xff0c;10.24.1.0/24&#xff0c;10.24.2.0/24&#xff0c;10.24.3.0/24四个网段&#xff0c;这四个网段可以汇总为以下哪个网段&#xff1f;&#xff08;多选&#xff09; A. 10.24.0.0/23 B. 10.24.1.0/23 C. 10.24.0.0/22 D. 10.24.0.0/2…

Window环境rabbitmq安装教程

首先我们需要取官网下载对应的两个安装包 第一个是rabbitmq安装包路径在括号里&#xff08;Installing on Windows Manually — RabbitMQ&#xff09; 我们选择window下载即可。 下图是下载的样子&#xff0c;确认是这两个就没问题了 第二个是erlang&#xff08;http://erlang…

上海市计算机学会竞赛平台五月月赛题目汇总

我又来了&#xff01; 爆切了一大堆没用的水题后&#xff0c;我终于来发题解啦&#xff01;&#xff01;&#xff01; T1原题https://iai.sh.cn/problem/792 我们考虑通过计算最长上升连续自然数串&#xff08;是这么叫的吗&#xff09;来获取答案 可以开两个数组 和 来计…

从飞书妙记秒开率提升,看火山引擎A/B测试在研发场景的应用

作者&#xff1a;DataTester 用户体验是决定互联网产品能否长久生存的关键&#xff0c;每一个基于产品功能、使用和外观的微小体验&#xff0c;都将极大地影响用户留存和满意度。 对于企业协作平台飞书而言&#xff0c;用户体验旅程从打开产品页面的一瞬间就已开始&#xff0c;…

如何安装多个node版本(使用nvm)

1、卸载之前安装的所有node 2、下载nvm安装包&#xff0c;下载地址https://nvm.uihtm.com/ 3、安装nvm 4、打开cmd&#xff0c;运行命令 nvm install node版本号&#xff0c;安装对应版本的node 5、打开nvm的安装路径&#xff0c;可以看到安装的对应的node版本的文件夹 6、若有…

K8S之Deployment控制器管理应用(十一)

Deployment介绍 Deployment是最常用的K8s工作负载控制器&#xff08;Workload Controllers&#xff09;&#xff0c; 是K8s的一个抽象概念&#xff0c;用于更高级层次对象&#xff0c;部署和管理Pod。 Deployment的主要功能&#xff1a; • 管理Pod&#xff0c;即应用程序 •…

CS1237 数据实测

目录 硬件 测试数据 结论 性能 转换时间 硬件 外部电阻电位器 模拟 传感器信号 测试数据 一下记录数据为ADC原始数据未经过软件滤波 跳动幅度图片DEV_FREQUENCY_10DEV_PGA_1751DEV_FREQUENCY_40DEV_PGA_11562DEV_FREQUENCY_640DEV_PGA_18243DEV_FREQUENCY_640DEV_PGA_644…

Spring:什么是SpringBoot框架?①

前言&#xff1a; 我们说任何一个阶段的技术更迭都是在代码量&#xff0c;代码简洁度&#xff0c;封装后复杂关注度降低上下功夫&#xff0c;不断提升生产力。 Spring已经足够牛了&#xff0c;它的bean容器思想启迪和影响了众多的程序员&#xff0c;奠基引领了技术的发展。 在应…