excel 按照模板导出 - springboot实战电商项目mall4j

期权梦想家
• 阅读 2761

在统计数据的时候,我们需要导出一些特定格式的excel。我们可以使用poi写代码来处理格式,这样会导致写很多的代码来搞定,如果将某两个特定的表格数据的位置或者颜色标记做小小的改动,我们只有调整一下代码才能搞定。那有没有一种简单的方法导出特定排列的excel呢?答案当然是有的,这里推荐easypoi来处理这个问题。如有更好解决方案欢迎留言讨论哦。

springboot实战电商项目mall4j (https://gitee.com/gz-yami/mall4j)

java开源商城系统

1.easypoi简介

easypoi功能如同名字easy,主打的功能就是容易,让一个没见接触过poi的人员就可以方便的写出Excel导出,Excel模板导出,Excel导入,Word模板导出,通过简单的注解和模板语言(熟悉的表达式语法),完成以前复杂的写法。easypoi官方文档

2.为什么选用easypoi

主要看重easypoi的两个功能,Excel模板导出,html预览。Excel模板导出,是为了少写一下重复大量的代码,导出一些复杂排列的表格。html预览,有时候我们想先看一些导出效果,不想导出,就需要这个html预览的功能。当然easypoi还有一些其他的功能,请到esaypoi的官方文档去查看吧。

3.引入依赖

我们这里引入是spring boot 的依赖,其他的可以到官网查看,参照引入。

<dependency>
    <groupId>cn.afterturn</groupId>
    <artifactId>easypoi-spring-boot-starter</artifactId>
    <version>4.0.0</version>
</dependency>

4.Excel模板导出

先定义一个excel的模板,如图所示:
excel 按照模板导出 - springboot实战电商项目mall4j
然后定义好相关变量,如图所示
excel 按照模板导出 - springboot实战电商项目mall4j

5.代码部分

 @RequestMapping("test")
    public void getExcelInfo(ModelMap modelMap, HttpServletRequest request,
                             HttpServletResponse response) throws IOException {        
         // 模板在项目中的路径
        TemplateExportParams params = new TemplateExportParams(
                "doc/testExcelTemplate.xlsx");
               
        Map<String, Object> map = new HashMap<String, Object>(16);
        map.put("code", "A20210101");
        map.put("applyTime", "2021-01-01");
        map.put("total", 40000);
        map.put("company", "执笔潜行科技有限公司");
        map.put("remark", "测试导出");
        map.put("year", "2021");
        map.put("month", "04");
        map.put("day", "25");
        map.put("name", "JueYue");
        map.put("phone", "1879740****");
        List<Map<String, String>> listMap = new ArrayList<>();
        for (int i = 0; i < 4; i++) {
            Map<String, String> lm = new HashMap<String, String>(16);
            lm.put("amountType", i + "测试");
            lm.put("code", "A001");
            lm.put("subjectName", "设计");
            lm.put("projectName", "EasyPoi " + i + "期");
            lm.put("fullName", "Ces 项目");
            lm.put("bankCard", "6216610200016587010");
            lm.put("bankName", "中国银行");
            lm.put("applyAmount", i * 10000 +"");
            lm.put("approvedAmount", i * 10000 +"");
            listMap.add(lm);
        }
        map.put("list", listMap);
        modelMap.put(TemplateExcelConstants.FILE_NAME, "专项支出用款申请书_map.xls");
        modelMap.put(TemplateExcelConstants.PARAMS, params);
        modelMap.put(TemplateExcelConstants.MAP_DATA, map);
        PoiBaseView.render(modelMap, request, response,
                TemplateExcelConstants.EASYPOI_TEMPLATE_EXCEL_VIEW);
    }

输入路径访问下载测试,结果如图:
excel 按照模板导出 - springboot实战电商项目mall4j

这用我们就不用去写样式了,只需要建立好模板,填数据就可以了。

springboot实战电商项目mall4j (https://gitee.com/gz-yami/mall4j)

java开源商城系统

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
Wesley13 Wesley13
3年前
java使用POI将数据导出放入Excel
本文主要是将数据库取出的数据按照自定义的行列格式导出到excel中,POI则是实现我们需求所用到的技术。POI介绍使用springboot导入相关依赖获取数据(自行处理)完整代码实例:创建excel,将数据写入excel1.POI介绍要想使用POI对Excel进行操作,我们需要先了
Stella981 Stella981
3年前
C# Aspose.Cells导出xlsx格式Excel,打开文件报“Excel 已完成文件级验证和修复。此工作簿的某些部分可能已被修复或丢弃”
报错信息:最近打开下载的Excel,会报如下错误。(xls格式不受影响)!(https://oscimg.oschina.net/oscnet/2b6f0c8d7f97368d095d9f0c96bcb36d410.png)!(https://oscimg.oschina.net/oscnet/fe1a8000d00cec3c
Wesley13 Wesley13
3年前
FLV文件格式
1.        FLV文件对齐方式FLV文件以大端对齐方式存放多字节整型。如存放数字无符号16位的数字300(0x012C),那么在FLV文件中存放的顺序是:|0x01|0x2C|。如果是无符号32位数字300(0x0000012C),那么在FLV文件中的存放顺序是:|0x00|0x00|0x00|0x01|0x2C。2.  
Easter79 Easter79
3年前
Twitter的分布式自增ID算法snowflake (Java版)
概述分布式系统中,有一些需要使用全局唯一ID的场景,这种时候为了防止ID冲突可以使用36位的UUID,但是UUID有一些缺点,首先他相对比较长,另外UUID一般是无序的。有些时候我们希望能使用一种简单一些的ID,并且希望ID能够按照时间有序生成。而twitter的snowflake解决了这种需求,最初Twitter把存储系统从MySQL迁移
Wesley13 Wesley13
3年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Wesley13 Wesley13
3年前
PHP创建多级树型结构
<!lang:php<?php$areaarray(array('id'1,'pid'0,'name''中国'),array('id'5,'pid'0,'name''美国'),array('id'2,'pid'1,'name''吉林'),array('id'4,'pid'2,'n
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
1年前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这
美凌格栋栋酱 美凌格栋栋酱
4个月前
Oracle 分组与拼接字符串同时使用
SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(