java jxls导出excel

制作模板

在这里插入图片描述
在这里插入图片描述

注意:在第一行第一列上添加批注

jx:area(lastCell="K4")

在表格里面添加下面代码

jx:each(items="personList" var="person" lastCell="K4")

maven依赖

<!-- Hutool是一个Java工具包 -->
<dependency>
    <groupId>cn.hutool</groupId>
    <artifactId>hutool-all</artifactId>
    <version>5.6.0</version>
</dependency>

<!-- excel导出 -->
<dependency>
    <groupId>org.jxls</groupId>
    <artifactId>jxls-poi</artifactId>
    <version>2.9.0</version>
</dependency>

创建工具类


import cn.hutool.core.date.DateUtil;
import cn.hutool.core.io.resource.ClassPathResource;
import cn.hutool.core.util.CharsetUtil;
import cn.hutool.core.util.StrUtil;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.jexl3.JexlBuilder;
import org.apache.commons.jexl3.JexlEngine;
import org.jxls.common.Context;
import org.jxls.expression.JexlExpressionEvaluator;
import org.jxls.transform.Transformer;
import org.jxls.util.JxlsHelper;
import org.springframework.http.HttpHeaders;
import org.springframework.http.MediaType;

import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;
import java.io.InputStream;
import java.net.URLEncoder;
import java.util.HashMap;
import java.util.Map;

/**
 * @Author:dcy
 * @Description:
 * @Date: 2021/7/13 15:20
 */
@Slf4j
public class JxlsUtils {

    /**
     * 导出excel
     *
     * @param response
     * @param fileName
     * @param dataMap
     * @param templateName
     */
    public static void export(HttpServletResponse response, String fileName, Map<String, ?> dataMap, String templateName) {
        try {
            // 设置响应头信息
            ServletOutputStream outputStream = response.getOutputStream();
            response.setHeader(HttpHeaders.CONTENT_DISPOSITION, "attachment;filename=" + URLEncoder.encode(fileName, CharsetUtil.UTF_8));
            response.setContentType(MediaType.APPLICATION_OCTET_STREAM_VALUE);
            response.setCharacterEncoding(CharsetUtil.UTF_8);
            // 读取模板路径
            ClassPathResource classPathResource = new ClassPathResource(templateName);
            final InputStream inputStream = classPathResource.getStream();
            // 设置模板参数
            Context context = new Context();
            dataMap.forEach(context::putVar);
            JxlsHelper jxlsHelper = JxlsHelper.getInstance();
            Transformer transformer = jxlsHelper.createTransformer(inputStream, outputStream);
            //获得配置 + 添加自定义功能
            JexlExpressionEvaluator evaluator = (JexlExpressionEvaluator) transformer.getTransformationConfig().getExpressionEvaluator();
            Map<String, Object> functions = new HashMap<>();
            functions.put("str", new StrUtil());
            functions.put("date", new DateUtil());
            final JexlEngine jexlEngine = new JexlBuilder().silent(true).strict(true).namespaces(functions).create();
            evaluator.setJexlEngine(jexlEngine);
            jxlsHelper.processTemplate(context, transformer);
        } catch (Exception ex) {
            log.error("export {}", ex.getMessage());
        }
    }

}

测试方法

public class EquPerson {

    /**
     * 姓名
     */
    private String name;


}

@GetMapping("/export")
public void export(HttpServletResponse response) {
    Map<String, Object> map = new HashMap<>();
    map.put("schoolName", "测试学校");
    List<EquPerson> equPersonList = new ArrayList<>();
    for (int i = 0; i < 10; i++) {
        final EquPerson equPerson = new EquPerson();
        equPerson.setName("张三");
        equPersonList.add(equPerson);
    }
    map.put("personList", equPersonList);
    JxlsUtils.export(response, "xx人员导出表.xlsx", map, "jxls/equ_person.xlsx");
}

展示效果

在这里插入图片描述

参考链接

https://www.cnblogs.com/klguang/p/6425422.html
https://www.cnblogs.com/dw3306/p/11098841.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Jxls 是一个开源的 Java 库,用于导出 Excel 文件,它可以在 Java 中非常方便地进行使用。下面是使用 Jxls 导出 Excel 的步骤: 1. 添加依赖 在 pom.xml 文件中添加以下依赖: ```xml <dependency> <groupId>org.jxls</groupId> <artifactId>jxls-core</artifactId> <version>1.0.15</version> </dependency> ``` 2. 准备 Excel 模板 在 Excel 文件中准备好要导出的内容,包括表头和数据部分。可以在表格中使用 ${} 来标记需要动态替换的数据。 3. 准备数据 在 Java 代码中准备好要导出的数据,可以使用 List 或者 Map 等类型来保存数据。 4. 创建模板引擎 使用 Jxls 提供的模板引擎创建一个模板,可以使用以下代码: ```java InputStream is = new FileInputStream(new File("template.xls")); Workbook workbook = WorkbookFactory.create(is); Transformer transformer = TransformerFactory.createTransformer(workbook, outputStream); ``` 其中,“template.xls”是你准备好的 Excel 模板文件名,outputStream 是导出文件的输出流。 5. 填充数据 使用 Jxls 提供的 API 填充数据,可以使用以下代码: ```java Map<String, Object> beans = new HashMap<>(); beans.put("dataList", dataList); transformer.transformXLS(new HashMap<>(), beans); ``` 其中,“dataList”是你准备好的数据,transformer.transformXLS() 方法将会把数据填充到模板中。 6. 输出文件 使用 Jxls 提供的 API 输出文件,可以使用以下代码: ```java transformer.flush(); outputStream.close(); ``` 这样就可以将 Excel 文件导出到 outputStream 中了。 以上是使用 Jxls 导出 Excel 的基本步骤,你可以根据自己的需求进行更多的调整和优化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值