java项目中使用 jxls 插件 导出excel报表
什么是jxls
jxls是一个简单的、轻量级的excel导出库,使用特定的标记在excel模板文件中来定义输出格式和布局。
其实java中成熟的excel导出工具有pol、jxl,但他们都是使用java代码的方式来导出excel,编码效率很低且不方便维护。
jxls是通过预制excel模板,然后通过jxls相应API将我们应用程序的数据结合模板格式输出到相应的excel文件中,从而形成报表。
下面就以导出一个简单的员工表信息为例说明,并贴出java的实现代码。
pom依赖
项目pom文件中添加如下依赖
<dependency>
<groupId>org.jxls</groupId>
<artifactId>jxls-poi</artifactId>
<version>2.9.0</version>
</dependency>
<dependency>
<groupId>org.jxls</groupId>
<artifactId>jxls</artifactId>
<version>2.9.0</version>
</dependency>
制作excel模板
excel模板如下:
员工表 | ||
编号 | 姓名 | 简介 |
${v.id} | ${v.name} | ${v.text} |
当然没有那么简单,有两个地方还要添加批注。
第一个是必须添加的批注,就是在第一行第一列的单元格上添加,说明生成单元格作用的范围。例如:
jx:area(lastCell="C3")
第二个就是需要循环遍历数据集合的批注,具体如下:
jx:each(items="data" var="v" lastCell="C3")
解释一下,each一看就是到干啥的不多解释,items是指定需要遍历的数据集合,var是指定一个别名,在单元格中做标记,方式如${v.id}。lastCell是指定循环作用的单元格范围例如C3就是第C列,第3行。
java代码实现
实体类
import lombok.AllArgsConstructor;
import lombok.Data;
@Data
@AllArgsConstructor
public class Entity {
private Integer id;
private String name;
private String text;
}
主要实现
import club.jiajiajia.jxls.config.AutoRowHeightCommand;
import club.jiajiajia.jxls.entity.Entity;
import org.jxls.builder.xls.XlsCommentAreaBuilder;
import org.jxls.common.Context;
import org.jxls.util.JxlsHelper;
import org.springframework.core.io.ClassPathResource;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.List;
/**
* 一般导出(导出一个列表数据)
*/
public class Test2 {
public static void main(String[] args) throws Exception{
InputStream templateIn= new ClassPathResource("template/template2.xlsx").getInputStream();
OutputStream os =new FileOutputStream("D:\\data\\temp2.xlsx");
Context context = new Context();
List<Entity> data = new ArrayList<>();
data.add(new Entity(1,"张三","张三的简介"));
data.add(new Entity(2,"李四","里斯的简介"));
data.add(new Entity(3,"王五","王五的简介"));
data.add(new Entity(4,"赵六","赵六的简介"));
context.putVar("data", data);
JxlsHelper jxlsHelper = JxlsHelper.getInstance();
jxlsHelper.getAreaBuilder().getTransformer();
jxlsHelper.processTemplate(templateIn, os, context);
}
}
这只是一个简单的导出示例,其实还有很多需要注意的点没有说到。如果需要自定义一些标注,以及怎样使用公式等,请参照我写的一个demo。github地址如下:https://github.com/18438301593/jxls2.git
还有一个是另一个版本的:https://github.com/18438301593/jxls.git,
模板和代码github里面都有。
评论区
请写下您的评论...
猜你喜欢
blog
jxls导出报表单元格设置自适应行高
算法基础
3081
如何使用jslx请参考之前写的文章:http://www.jiajiajia.club/blog/artical/76vv9kuy36j4/454添加配置
weblog
2765
java使用easypoi导出并下载excel文件简单导出测试如图:一、pom文件dependencygroupIdcn.afterturn/groupIdartifactIdeasypoi
blog
maven项目使用tomcat7插件
框架
1836
maven项目使用tomcat7插件1.pom文件build finalNamedz/finalName plugins plugin
weblog
6102
java使用easypoi导出excel时进行值替换如导出性别:数据库中储存的是数字,1代表男,2代表女。导出的时候需要是汉字。在实体类中使用@Excel注解。 @Excel(name="性别
算法基础
2777
在插件项目中创建一个文件夹,存放第三方依赖的jar包,将需要引用的jar包拷贝到此目录右键选择AddasLibrary选项添加到项目构建环境中,此时就可以用jar包的类了。注意:如果你导入了第三方
框架
1632
最近在项目中遇到了一个批量导入excel的功能,excel导入用到的是esaypoi,可以轻松将excel中的数据封装成对象,但是不知为何,突然转换对象的过程变得很慢,一万条数据得转换一分钟。无奈只
blog
rabbitmq开启http安全认证插件
rabbitmq
1511
rabbitmq_auth_backend_http插件一、rabbitmq中启用rabbitmq_auth_backend_http插件二、修改配置文件三、开启验证缓存功能一、rabbitmq中启
工具
1636
eclipse中内置了git插件,不在需要安装eclipse中把工程初始化本地库右击项目-team-ShareProject-Git-next-选中
最新发表
归档
2018-11
12
2018-12
33
2019-01
28
2019-02
28
2019-03
32
2019-04
27
2019-05
33
2019-06
6
2019-07
12
2019-08
12
2019-09
21
2019-10
8
2019-11
15
2019-12
25
2020-01
9
2020-02
5
2020-03
16
2020-04
4
2020-06
1
2020-07
7
2020-08
13
2020-09
9
2020-10
5
2020-12
3
2021-01
1
2021-02
5
2021-03
7
2021-04
4
2021-05
4
2021-06
1
2021-07
7
2021-08
2
2021-09
8
2021-10
9
2021-11
16
2021-12
14
2022-01
7
2022-05
1
2022-08
3
2022-09
2
2022-10
2
2022-12
5
2023-01
3
2023-02
1
2023-03
4
2023-04
2
2023-06
3
2023-07
4
2023-08
1
2023-10
1
2024-02
1
2024-03
1
2024-04
1
2024-08
1
标签
算法基础
linux
前端
c++
数据结构
框架
数据库
计算机基础
储备知识
java基础
ASM
其他
深入理解java虚拟机
nginx
git
消息中间件
搜索
maven
redis
docker
dubbo
vue
导入导出
软件使用
idea插件
协议
无聊的知识
jenkins
springboot
mqtt协议
keepalived
minio
mysql
ensp
网络基础
xxl-job
rabbitmq
haproxy
srs
音视频
webrtc
javascript
加密算法
目录
没有一个冬天不可逾越,没有一个春天不会来临。最慢的步伐不是跬步,而是徘徊,最快的脚步不是冲刺,而是坚持。