比ApachePOI还简单的导出excel工具,你值的

使用Jxls导出excel表格

你是否还在使用传统的ApachePOI方式导出excel呢?
你是否还在为导出excel表格写许多复杂的代码?
今天给大家介绍一个非常简单的工具–Jxls。
使用它可以非常方便的导出excel。
它支持excel的模板输出,支持for循环,if判断,脚本等。

今天我们就来使用Jxls来导出excel表格

1.新建springboot项目

如果不会使用springboot,可以先学习SpringBoot教程

2.引入jxls相关的jar包
<dependency>
    <groupId>org.jxls</groupId>
    <artifactId>jxls</artifactId>
    <version>2.8.1</version>
</dependency>
<dependency>
    <groupId>org.jxls</groupId>
    <artifactId>jxls-poi</artifactId>
    <version>2.8.1</version>
</dependency>
3.新建一个实体类
public class Student {

    private String name;

    private String className;

    private String age;

    private String address;

    public Student(String name,String className,String age,String address){
        this.name = name;
        this.className = className;
        this.age = age;
        this.address = address;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getClassName() {
        return className;
    }

    public void setClassName(String className) {
        this.className = className;
    }

    public String getAge() {
        return age;
    }

    public void setAge(String age) {
        this.age = age;
    }

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }
}
4.新建一个excel模板

在resources下的template的目录中我们新建一个student.xlsx的模板文件,
excel模板的内容定义显示姓名、班级、性别、地址,然在姓名单元格插入批注,
批注内容:jx:area(lastCell=“D2”)
这里的D2是指模板的区域大小
在这里插入图片描述
在这里插入图片描述

------------------- 插入解释 ------------------------------
什么是模板的区域呢?
我们新建一个模板后
在这里插入图片描述
表格A1包含区域的大小jx:area(lastCell=“D4”),意思是该模板的区域是从A1到D4
A4到D4是定义了一个jxls的循环命令jx:each(items=“employees” var=“employee” lastCell=“D4”),它会循环数据并展示出来,数据有多少就展示多少行的数据。
------------------- 解释结束 ------------------------------

模板中编写数据循环代码,同样在姓名下面的单元格D2插入批注
jx:each(items=“list” var=“obj” lastCell=“D2”)
解释:循环list集合,定义用obj表示一个对象
具体单元格的值使用 符 号 调 用 , 例 如 需 要 显 示 姓 名 则 填 入 符号调用,例如需要显示姓名则填入 {obj.name},name对应对象的属性名称
在这里插入图片描述

5.编写生成excel的类
public class JxlsUtils {

    private static String path = "template/";

    public static void exportExcel(HttpServletResponse response, List<Object> list, String tempName) throws IOException {
        Context context = new Context();
        context.putVar("list",list);

        String fileName=new String("学生信息".getBytes("UTF-8"),"ISO-8859-1");
        response.setHeader("Content-Disposition",String.format("attachment;filename=%s.xlsx",fileName));
        response.setContentType("application/x-excel;charset=UTF-8");
        String templateName = String.format("%s%s.xlsx",path,tempName);
        InputStream in = new ClassPathResource(templateName).getInputStream();

        try{
            JxlsHelper jxlsHelper = JxlsHelper.getInstance();
            ServletOutputStream out =  response.getOutputStream();
            Transformer transformer =  jxlsHelper.createTransformer(in,out);
            jxlsHelper.processTemplate(context,transformer);
            out.flush();
            out.close();
        }finally {
            if(Collections.singletonList(in).get(0)!=null){
                in.close();
            }
        }
    }
}
6.编写控制器

新建一个controller,调用excel生成工具

@RestController
@RequestMapping("/demo")
public class DemoController {

    @RequestMapping("/excel")
    public void exportExcel(HttpServletResponse response) throws IOException {
        List list = new ArrayList<>();
        for(int i=0;i<10000;i++){
            Student student1 = new Student("zhangsan","一年级",String.valueOf(i),"xxx街道2号");
            list.add(student1);
        }
        JxlsUtils.exportExcel(response,list,"student");
    }
    
}

7.运行代码

访问/demo/excel,就能导出如下的excel表格
在这里插入图片描述

--------------------------你的赞赏是我写作的最大动力---------------------------

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

三刻

你的打赏是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值