Easypoi 轻松实现复杂excel文件导出功能

之前做的excel文件导出都相对简单,用的都是公司自己封装的一些poi方法,导出内容都是表头+一行行的数据,但是这次需要导出的excel复杂度高了不少,自己用现有方法做比较麻烦,因此引入了Easypoi 进行实现。

之所以用Easypoi我是看中了它可以直接根据现有模板填充数据实现excel生成,而模板产品已经给出,那么接下来只需要稍微做修改就能使用,修改后的模板如图:

对照着官方文档的示例(http://easypoi.mydoc.io/ ) 很容易就能理解模板的使用规则
注意其中的{{$fe: 是遍历listmap变量循环填充数据行,其他则是类似占位符,很好理解

 //代码就纯粹只是把模板的占位符和变量对应起来
        Map<String, Object> map = new HashMap<String, Object>();
        map.put("code", customer.getCode());
        map.put("name", customer.getName());
        map.put("mobile", customer.getMobile());
        map.put("membershipGrade", customer.getMembershipGrade());
        map.put("zzyMembershipGrade", customer.getZzyMembershipGrade());
        map.put("addressComplete", customer.getAddressComplete());
        List<Map<String, String>> listMap = new ArrayList<Map<String, String>>();

        map.put("maplist", listMap);
        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        for (MainOrderSubOrderFinanceResult financeResult : mainOrderSubOrderFinanceResults) {
            Map<String, String> lm = new HashMap<String, String>();
            lm.put("orderCode", financeResult.getOrderCode());
            lm.put("payStatusDesc", financeResult.getPayStatusDesc());
            lm.put("settlementTypeDesc", financeResult.getSettlementTypeDesc());
            lm.put("billDate", dateFormat.format(financeResult.getBillDate()));
            lm.put("totalAmount", financeResult.getTotalAmount().stripTrailingZeros().toPlainString());
            lm.put("discountAmount", financeResult.getDiscountAmount().stripTrailingZeros().toPlainString());
            lm.put("amount", financeResult.getAmount().stripTrailingZeros().toPlainString());
            lm.put("payAmount", financeResult.getPayAmount().stripTrailingZeros().toPlainString());
            lm.put("amountPaid", financeResult.getAmountPaid().stripTrailingZeros().toPlainString());
            listMap.add(lm);

            sumTotalAmount = sumTotalAmount.add(financeResult.getTotalAmount());
            sumDiscountAmount = sumDiscountAmount.add(financeResult.getDiscountAmount());
            sumAmount = sumAmount.add(financeResult.getAmount());
            sumPayAmount = sumPayAmount.add(financeResult.getPayAmount());
            sumAmountPaid = sumAmountPaid.add(financeResult.getAmountPaid());
        }
        map.put("sumTotalAmount", sumTotalAmount);
        map.put("sumDiscountAmount", sumDiscountAmount);
        map.put("sumAmount", sumAmount);
        map.put("sumPayAmount", sumPayAmount);
        map.put("sumAmountPaid", sumAmountPaid);
        //生成临时模板文件
        String url="";
        try {
            File temp = File.createTempFile("exportCreditBillResult", ".xlsx");
            FileUploadHelper.inputStream2File(this.getClass().getClassLoader().getResourceAsStream("exportCreditBillResult.xlsx"),temp);
            url=temp.getAbsolutePath();
            temp.deleteOnExit();
        } catch (IOException e) {

        }

        TemplateExportParams params = new TemplateExportParams(url);
        Workbook workbook = ExcelExportUtil.exportExcel(params, map);

做这个功能有一个关键点:

由于TemplateExportParams构造函数只支持传入文件路径,而直接传入resource下的模板文件路径在线上环境会有问题(本地没问题),因此需要用getResourceAsStream读取后生成临时文件,再把临时文件url传入

到此这篇关于Easypoi 轻松实现复杂excel文件导出功能的文章就介绍到这了,更多相关Easypoi导出复杂excel文件内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • SpringBoot+EasyPoi实现excel导出功能

    在实际项目开发中,对于Excel的导入导出还是很常见的需求,比如说将数据根据模板批量导入到数据库中,以及将数据库中的数据批量导出陈Excel的形式 现有需求: 根据检索条件查询列表并将结果导出到excel Easypoi文档:https://easypoi.mydoc.io/#text_186900 EasyPoi的主要特点 1.设计精巧,使用简单 2.接口丰富,扩展简单 3.默认值多,write less do more 4.spring mvc支持,web导出可以简单明了 实现过程 1.创建

  • SpringBoot+easypoi实现数据的Excel导出

    本文实例为大家分享了SpringBoot+easypoi实现数据的Excel导出的具体代码,供大家参考,具体内容如下 maven <dependency> <groupId>cn.afterturn</groupId> <artifactId>easypoi-spring-boot-starter</artifactId> <version>4.1.0</version> </dependency> Contr

  • Java中easypoi导入excel文件列名相同的处理方案

    Easypoi是什么 Easypoi 功能如同名字easy,主打的功能就是容易,让一个没接触过poi的人员,就可以方便的写出Excel导出.Excel模板导出.Excel导入.Word模板导出,通过简单的注解和模板语言(熟悉的表达式fe语法),完成以前复杂的写法 开源地址:https://gitee.com/lemur/easypoi 独特的功能 基于注解的导入导出,修改注解就可以修改Excel 支持常用的样式自定义 基于map可以灵活定义的表头字段 支持一堆多的导出,导入 支持模板的导出,一些

  • Java中Easypoi实现excel多sheet表导入导出功能

    Easypoi简化了开发中对文档的导入导出实现,并不像poi那样都要写大段工具类来搞定文档的读写. 第一步引入Easypoi依赖 <!-- 导出文件工具 EasyPoi实现Excel读写管理测试用例 --> <dependency> <groupId>cn.afterturn</groupId> <artifactId>easypoi-spring-boot-starter</artifactId> <version>4.

  • Easypoi 轻松实现复杂excel文件导出功能

    之前做的excel文件导出都相对简单,用的都是公司自己封装的一些poi方法,导出内容都是表头+一行行的数据,但是这次需要导出的excel复杂度高了不少,自己用现有方法做比较麻烦,因此引入了Easypoi 进行实现. 之所以用Easypoi我是看中了它可以直接根据现有模板填充数据实现excel生成,而模板产品已经给出,那么接下来只需要稍微做修改就能使用,修改后的模板如图: 对照着官方文档的示例(http://easypoi.mydoc.io/ ) 很容易就能理解模板的使用规则 注意其中的{{$fe

  • SpringBoot整合EasyExcel实现Excel表格导出功能

    目录 栗子 1.组件介绍 2.配置文件 SpringBoot项目pom.xml 3.项目代码 项目结构 ExportController.java Mock.java CitySheet.java CompanySheet.java UserSheet.java SpringBootEasyexcelApplication.java 4.效果展示 单个sheet导出 多个sheet导出 5.总结 栗子 在后端管理系统的开发中,经常有需要导出当前表格数据的功能,有些前端表格组件可以直接做到,但是不

  • React如何接收excel文件下载导出功能封装

    目录 React接收excel文件下载导出功能封装 react导出excel文件的几种方式 1.原生js导出 (带样式) 2.使用xlsx导出(此方法导出的excel文件无样式,但导出的文件格式是 xlsx格式) 3.使用 js-export-excel (可以导出多张sheet表) 4.第四种 使用react-html-table-to-excel   不推荐使用 React接收excel文件下载导出功能封装 因为最近项目又需求要导出excel,所以封装了这部分的功能,对fetch的封装做了修

  • Android操作Excel文件的功能实现

    Android中操作Excel文件导出报表时主要采用开源库jxl,最早用在java上,但也可用于Android.与之类似的POI,因为依赖库众多,所以只能用于java,而不能用于Android. 使用jxl需要在Android工程中导入jxl.jar包,jxl可以完成Excel的基本读写操作,其支持与不支持的情况如下: 1.jxl只支持Excel2003格式,不支持Excel2007格式.即支持xls文件,不支持xlsx文件. 2.jxl不支持直接修改excel文件,但可通过复制新文件覆盖原文件

  • Spring Boot Excel文件导出下载实现代码

    Spring Boot Excel 文件导出 目标: 实现Excel文件的直接导出下载,后续开发不需要开发很多代码,直接继承已经写好的代码,增加一个Xml配置就可以直接导出. 实现: 1.抽象类 BaseExcelView 继承 webmvc 的  AbstractXlsxStreamingView 抽象类, AbstractXlsxStreamingView 是webmvc继承了最顶层View接口,是可以直接大量数据导出的不会造成内存泄漏问题,即 SXSSFWorkbook 解决了内存问题,

  • 纯JS实现的读取excel文件内容功能示例【支持所有浏览器】

    本文实例讲述了纯JS实现的读取excel文件内容功能.分享给大家供大家参考,具体如下: template.html <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>JS-XLSX Live Demo</title> <link href="../css/boots

  • C#使用NPOI实现Excel导入导出功能

    本文实例为大家分享了C#使用NPOI实现Excel导入导出的具体代码,供大家参考,具体内容如下 Excel导入 使用OpenFileDiolog控件和button结合,选择文件导入,将路径显示在文本框 设置按钮点击事件,将文件路径赋给textBox.Text private void Department_SUM_Click(object sender, EventArgs e)         {             OpenFileDialog open = new OpenFileDi

  • vue使用file-saver本地文件导出功能

    1:安装xlsx和file-saver npm install file-saver xlsx  --save 2:创建localExports.js文件 3:直接上代码 import XLSX from 'xlsx'; const FileSaver = require('file-saver'); import { getRandomNum } from '@/utils'; // 本地导出表格 /** * 导出Excel文件 * @param {*} elementName table组件

  • golang实现浏览器导出excel文件功能

    目录 1.依赖包 2.示例 3.分析 3.1先根据需求查询需要的list对象 3.2新建文件,设置文件名,跟列名 3.3设置标题单元格 3.4设置内容单元格 3.5流媒体返回web 1.依赖包 import ( "github.com/tealeg/xlsx" ) 2.示例 func (o *orderController) Export(request *restful.Request, response *restful.Response) { username := reques

随机推荐