jxls根据模板导出Excel(二)

这篇具有很好参考价值的文章主要介绍了jxls根据模板导出Excel(二)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

说明:本文是jxls根据模板导出Excel直接下载。

使用版本:jxls V2.10.0

excel模板版本:.xlsx格式

jxls官网地址:https://jxls.sourceforge.net/index.html

1、pom引用

 <dependency>
            <groupId>org.jxls</groupId>
            <artifactId>jxls</artifactId>
            <version>2.10.0</version>
        </dependency>
        <dependency>
            <groupId>org.jxls</groupId>
            <artifactId>jxls-poi</artifactId>
            <version>2.10.0</version>
        </dependency>
        <dependency>
            <groupId>org.jxls</groupId>
            <artifactId>jxls-jexcel</artifactId>
            <version>1.0.8</version>
        </dependency>
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-jexl</artifactId>
            <version>2.1.1</version>
        </dependency>

  2、Controller调用方法

@PostMapping("/export")
    public AjaxResult export(HttpServletResponse response, Data data) throws IOException {
        String fileName = "test.xlsx";
        Map<String, Object> model  = dataService.getExportData(data,fileName);//拼接需要导出的内容
        response.addHeader("Content-Disposition", "attachment; filename=\"" + fileName + "\"");
        return JxlsUtils.exportExcelWithOS(response.getOutputStream(),fileName, model);
    }

  3、拼接数据

public Map<String, Object> getExportData(Data data,String fileName) {
        Map<String, Object> model = new HashMap<String, Object>(); // 绑定数据
        try {
            //可绑定单个参数,Excel模板中单元格直接用${test1}获取
            model.put("test1", "ttt");
			
            //可绑定list,使用${item.参数名}获取,需在列表首个单元格中增加批注
            List<Data1> taskItems = new ArrayList<Data1>();//Data1为某个数据类 
            for (int i=0;i<5;i++) {
			    Data1 d=new Data1;
				//d.setA("111");
                taskItems.add(d);
            }

            model.put("taskItems", taskItems);

        }catch (Exception ex){
            logger.error(ex.getMessage());
            System.out.println(ex.getMessage());
        }
        return model;
    }

  4、Excel导出方法

import org.apache.commons.jexl3.JexlBuilder;
import org.apache.commons.jexl3.JexlEngine;
import org.jxls.builder.xls.XlsCommentAreaBuilder;
import org.jxls.common.Context;
import org.jxls.expression.JexlExpressionEvaluator;
import org.jxls.transform.Transformer;
import org.jxls.transform.poi.PoiTransformer;
import org.jxls.util.JxlsHelper;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.io.*;
import java.util.HashMap;
import java.util.Map;


public class JxlsUtils {
    static{
       
    }

    /**
     * 根据模板生成文件,直接下载
     * @param os 流数据
     * @param templateFileName 模板文件名称
     * @param model 填充数据
     * @throws IOException
     */
    public static AjaxResult exportExcelWithOS(OutputStream os , String templateFileName, Map<String, Object> model) throws IOException{
        // 获取模板文件
        InputStream is = new FileInputStream(new File(模板文件路径地址 + templateFileName));
        try {
            // 输出
            Context context = PoiTransformer.createInitialContext();
            if (model != null) {
                for (String key : model.keySet()) {
                    context.putVar(key, model.get(key));
                }
            }
            JxlsHelper.getInstance().setUseFastFormulaProcessor(false).setEvaluateFormulas(true).processTemplate(is, os, context);
        }
        catch (Exception ex){
            System.out.println(ex.getMessage());
            logger.error(ex.getMessage());
            return AjaxResult.error(ex.getMessage());
        }finally {
            is.close();
        }
        return AjaxResult.success();
    }
}

  5、Excel模板,创建xlsx格式模板

添加批注,第一个单元格添加范围批注,jx:area(lastCell="K3")

list列表增加jx:each(items="taskItems" var="item" lastCell="K3")

jxls根据模板导出Excel(二)

 文章来源地址https://www.toymoban.com/news/detail-492159.html

之前写过另一种方法,先根据模板生成Excel,然后调用方法导出,可参考:https://www.cnblogs.com/webttt/p/14283481.html

 

到了这里,关于jxls根据模板导出Excel(二)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Java中使用JXLS工具类导出复杂Excel表格

    前言    在项目开发中,我们会遇到各种文件导出的开发场景,但是这种情况并都不常用,于是本人将自己工作中所用的代码封装成工具类,旨在记录工具类使用方法和技术分享。 一、Jxls的简介    Jxls是一个简单的、轻量级的excel导出库,使用特定的标记在excel模板文件中来

    2024年02月03日
    浏览(34)
  • java根据模板导出word

    日常开发中,常常会遇到各种各样的表格进行导出,比较好的办法就是提前弄好word模版,再通过遍历的方式进行导出文档 模版编写 内容替换 目标下面模版进行多页展示 将word转换成xml 将xml格式化 再将xml改成ftl xml格式化地址 list找到起始位置和结束位置 起始位置插入#list

    2024年02月15日
    浏览(80)
  • Poi实现根据word模板导出-图表篇

    往期系列传送门: Poi实现根据word模板导出-文本段落篇 (需要完整代码的直接看最后位置!!!) 前言: 补充Word中图表的知识: 每个图表在word中都有一个内置的Excel,用于操作数据。 内置Excel有类别、系列、值三个概念: poi可以获取word中的图表对象,通过这个图表对象来

    2024年02月02日
    浏览(32)
  • java 导出word,java根据提供word模板导出word文档

    本文主要讲解,利用poi-tl在word中动态生成表格行,进行文字、图片填充。一共提供了两种方式,1.基于本地文件 2.基于网络文件 本文讲解思路,1.先看示例,2. 示例对应的代码展示 3. 基本概念讲解(api自行查阅文档)。 这样便于快速展示,不符合你的业务需求的可以直接划走

    2024年02月14日
    浏览(31)
  • Android 基于POI库,根据模板导出word文档

    由于项目需求,需要根据用户提供的word模板,填充动态内容生成新的word,为了记录自己的踩坑日记,记录一下。 Apache POI 是用Java编写的免费开源的跨平台的 Java API,Apache POI提供API给Java程序对文档读和写的功能。 这里给出官网链接-POI官网,同时下载版本也在官网链接中,可

    2024年01月18日
    浏览(39)
  • ExcelExportUtil基于模板导出excel&POI导出excel

    第一步,导入依赖没啥好说的; 第二步,查询数据库或es数据组装成list对象; 第三步,填充MapString, Object excelMap = new HashMap(); 数据key和excel模板对应,如果一次导出多个,可以用index区分; 第一步,导入依赖 第二步,上图哈哈 就是这么简单 没了

    2024年02月12日
    浏览(38)
  • Java导出Excel模板,导出数据到指定模板,通过模板导入数据(一)

    本文章主要是介绍阿里巴巴的easyexcel的使用 1. 首先需要我们导入easyexcel的依赖包 2. 前期工作准备 编写相关导出模板和导入模板。在项目的resources下创建文件夹,命名为excel 导出模板(此处仅做示例,字段根据自己项目来):  导入模板(导入时需要哪些字段根据自己项目业

    2024年02月03日
    浏览(36)
  • 导出excel,导出模板Excel(双工作蒲)压缩文件导出(即下载文件)

    下面是文件表格和entity对象

    2024年02月12日
    浏览(31)
  • <Java导出Excel> 1.0 Java实现Excel动态模板导出

    思路: 1,先创建动态模板(必须要在数据库建一张表,可随时修改模板) 例如: 建表语句: 模板中的字段脚本: 2,编写一个查询接口:返回一个List map 注意:order by id 根据表中字段:id排序的作用是控制导出的EXCEL表中字段列的顺序; mapper.xml层: mapper接口层: serviceIm

    2024年02月12日
    浏览(36)
  • 【Go】excelize库实现excel导入导出封装(三),基于excel模板导出excel

    大家好,这里是符华~ 关于excelize库实现excel导入导出封装,我已经写了两篇了,我想要的功能基本已经实现了,现在还差一个模板导出,这篇文章就来讲讲如何实现用模板导出excel。 前两篇: 【Go】excelize库实现excel导入导出封装(一),自定义导出样式、隔行背景色、自适应

    2024年01月25日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包