1.背景
项目中需要将相关数据导出为EXCEL文件,该文件格式已定义在一EXCEL模板文件中。
方案1:jasperreport
实现后发现jasperreport对报表大小的像素设定不是很准确,导致生成的EXCEL文件和模板差异较大,几经调整效果均不理想,否定。
方案2:POI
直接使用POI拼接生成EXCEL文件,代码复杂,不易维护,否定。
方案3:自定义POI EXCEL模板
对EXCEL模板文件进行数据填充,POI不支持,需要自己设计,几经思考,利用现有的一些开源框架实现了该功能,效果也能达到要求,采用。
下面将介绍自定义POI EXCEL模板的实现
2.原理
借鉴了jasperreport的实现原理,如下图所示
3.组件图
POI XLS:当前项目,自定义POI EXCEL模板
POI:Apache开源项目,用于操作EXCEL文件,被用于读取模板文件和生成目标文件
JSON-LIB:用于解析模板文件中的配置信息
OGNL:从数据源中获取对应单元格的填充数据
4.类图
5.应用实例
XLSReportCreatorTest.java 可在源码中获取
package com.siyuan.report.xls.test; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStream; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import com.siyuan.report.xls.XLSReportCreator; import com.siyuan.report.xls.data.XLSReportBeanDataSource; import com.siyuan.report.xls.template.XLSReportClassPathTemplate; import com.siyuan.report.xls.template.fill.XLSReportCommentFiller; public class XLSReportCreatorTest { /** * @param args * @throws IOException */ public static void main(String[] args) throws IOException { OutputStream os = new FileOutputStream("D:/test/poitest/autoVerifyLoss.xls"); Map fillData = new HashMap(); fillData.put("brandName", "一汽XXX"); fillData.put("licenseNo", "粤A12345"); fillData.put("frameNo", "车架号XXXXX"); fillData.put("engineNo", "发动机型号XXXX"); List autoLossItemList = new ArrayList(); Map autoLossItem = new HashMap(); autoLossItem.put("itemCode", "零件编码0001"); autoLossItem.put("itemName", "零件名称0001"); autoLossItem.put("itemSystemReferenceAmt", 1234); autoLossItemList.add(autoLossItem); Map autoLossItem1 = new HashMap(); autoLossItem1.put("itemCode", "零件编码0002"); autoLossItem1.put("itemName", "零件名称0002"); autoLossItem1.put("itemSystemReferenceAmt", 2345); autoLossItemList.add(autoLossItem1); fillData.put("autoLossItemList", autoLossItemList); XLSReportCreator.createXLS(new XLSReportClassPathTemplate("autoVerifyLoss.xls"), new XLSReportBeanDataSource(fillData), new XLSReportCommentFiller(), os); os.close(); } }
6.相关资料
POI EXCEL模板实现源码 poixls.rar
相关推荐
springboot+poi导出指定格式Excel模板,完整项目,导出即用。springboot+poi导出指定格式Excel模板,完整项目,导出即用。springboot+poi导出指定格式Excel模板,完整项目,导出即用。springboot+poi导出指定格式...
此代码包括poi导出excel的所有jar,自定义Excel模板后,将数据导入其中
用户可以自定义excel的导出模板,本程序实现了一些自定义功能如:forEach循环,随意cell内容显示设定。
基于maven实现POI实现导入导出功能模板案例,简单的例子,让人更加容易理解,学习起来更加方便,以实现自定义导出excel模板
poi动态生成excel中下拉菜单,动态数据源,支持2003版本和2007版本
实现Excel的上传和下载 存在两种格式的上传和下载,分别对应POI和JXL 可以实现根据Excel模板导出,自定义Excel样式导入 形成自定义的Excel报表等功能。项目为Maven项目,JDK采用1.8
支持excle基础信息自定义,列表自定义,列表中图片自定义
import org.apache.poi.hssf.usermodel.HSSFCell;
java 通过JXL架包,给excel文件添加水印,水印内容可自定义
解决poi大数据量导出excel的代码,该代码中所用的jar包是poi3.9。在测试过程中单个sheet中导出20万数据没有问题。
主要介绍了SpringBoot整合POI导出通用Excel的方法示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
java 导出,导入excel。用户自定义导出模板。模板显示内容用el表达式即可。用户可以定义每一个单元格的显示内容。可以自定义List数据的展示。一个excel的sheet内,可以有多个list的数据循环
导入功能:基于poi导入做了一层封装、支持注解方式标识属性对应Excel列、并支持简单规则校验、具体规则校验可以根据自己需求自定义 两种导出功能:一种基于poi的导出,一种基于jxls模板导出
Java解析、生成Excel比较有名的框架有Apache poi、jxl。但他们都存在一个严重的问题就是非常的耗内存,poi有一套SAX模式的API可以一定程度的解决一些内存溢出的问题,但POI还是有一些缺陷,比如07版Excel解压缩以及...
内容主要为service业务代码,分三个模块(导入导出和模板下载),可自定义,注释比较全
jxls功能的开发,关于自定义模板和数据封装,已经数据生成
1、自定义模板可以继承Template类,参考DefaultTemplate。 2、目前只提供了一个默认的模板类。 3、本设计主要是想把导出excel简单话,把数据和样式分开。 4、所有的样式都放在Config类里面,包括行高,列宽,单元格...
自定义模板导出excel文件。 支持xml配置导入导出excel映射关系。 扩展导入数据回调函数支持批量查询等 版权声明 iBase4J使用 协议. 加入QQ群[216310267] 交流技术问题,下载项目文档和一键启动依赖服务工具。 ...