jxls模板hashmap_java+jxls利用excel模版进行导出
大多时候会出现需要导出excel的功能,利用poi可以实现简单的导出,可以说poi的功能非常强大可以做到细节的定制化操作,但相对于在office操作excel,利用poi完全生成excel会显得非常复杂,细节代码会特别多。在这个时候我们可以事先利用offfice制定好一个模版文件,在利用jxls来通过模版文件来实现复杂excel的导出。
模版的制作和一般excel的编写是一样的,在需要填充的网格利用{}来进行取出java中传进来的变量值,如图:
在java中:
InputStream is =getFileInputStream(templateFileName);//获取模板输入流
XLSTransformer transformer = newXLSTransformer();
HSSFWorkbook resultWorkbook=transformer.transformMultipleSheetsList(is,prints/*要打印的list*/,
sheetNames/*sheet的名称list*/, "print"/*excel的bean名称*/, new HashMap(), 0);
在excel中,jxls会将要打印的list通过我们定义的bean名称取出进行遍历,在源码中
public HSSFWorkbook transformMultipleSheetsList(InputStream is, List objects, List newSheetNames, String beanName, Map beanParams, int startSheetNum) throwsParsePropertyException {
HSSFWorkbook hssfWorkbook= null;try{if (beanParams != null &&((Map)beanParams).containsKey(beanName)) {throw new IllegalArgumentException("Selected bean name '" + beanName + "' already exists in the bean map");
}if (beanName == null) {throw new IllegalArgumentException("Bean name must not be null");
}if (beanParams == null) {
beanParams= newHashMap();
}
POIFSFileSystem fs= newPOIFSFileSystem(is);
hssfWorkbook= newHSSFWorkbook(fs);for(int sheetNo = 0; sheetNo < hssfWorkbook.getNumberOfSheets(); ++sheetNo) {
String spreadsheetName=hssfWorkbook.getSheetName(sheetNo);if (!this.isSpreadsheetToRemove(spreadsheetName)) {if (this.isSpreadsheetToRename(spreadsheetName)) {
hssfWorkbook.setSheetName(sheetNo,this.getSpreadsheetToReName(spreadsheetName));
}
HSSFSheet hssfSheet=hssfWorkbook.getSheetAt(sheetNo);if (startSheetNum == sheetNo && objects != null && !objects.isEmpty()) {for(int i = 0; i < objects.size(); ++i) {
Object bean=objects.get(i);
String beanKey=beanName;if (i != 0) {
beanKey= beanName +i;
HSSFSheet newSheet=hssfWorkbook.createSheet((String)newSheetNames.get(i));
Util.copySheets(newSheet, hssfSheet, beanName, beanKey);
Util.copyPageSetup(newSheet, hssfSheet);
Util.copyPrintSetup(newSheet, hssfSheet);
}else{
hssfWorkbook.setSheetName(sheetNo, (String)newSheetNames.get(i));
}
((Map)beanParams).put(beanKey, bean);//在此次将我们传入的list通过map的形式放入beanParams
}
}
}else{
hssfWorkbook.removeSheetAt(sheetNo);--sheetNo;
}
}
}catch(IOException var16) {
var16.printStackTrace();
}if (hssfWorkbook != null) {for(int i = 0; i < hssfWorkbook.getNumberOfSheets(); ++i) {
Util.setPrintArea(hssfWorkbook, i);
}
}this.transformWorkbook(hssfWorkbook, (Map)beanParams);//通过模板和beanParams生产excel
returnhssfWorkbook;
}
View Code
在excel中通过beanParams的Map形式来进行取值,有点类似于freemarker语法,但不同于freemarker
在此事例中,我定义了一个类(domain)来存放list,类的形式如下(即要打印的list的元素是以下类)
public class ExcelPrintDomain implementsSerializable {private List lista = newArrayList();privateObject domaina;privateServletContext context;private intpageNo;publicExcelPrintDomain() {
}publicExcelPrintDomain(ServletContext context) {this.context =context;
}public voidaddDomain(Object obj) {this.domains.add(obj);
}public voidaddLista(Object obj) {this.lista.add(obj);
}public intgetPageNo() {return this.pageNo;
}public void setPageNo(intpageNo) {this.pageNo =pageNo;
}publicList getLista() {return this.lista;
}public voidsetLista(List lista) {this.lista =lista;
}publicObject getDomaina() {return this.domaina;
}public voidsetDomaina(Object domaina) {this.domaina =domaina;
}
}
View Code
所以在模板中${print.domaina.orgName}代表的是取出domain里面的domaina里面的key为orgName的value值,
${print.lista.ec01002}代表的是在遍历中取出domain中的lista包含的Map里面的key为ec01002的value值。
jxls模板hashmap_java+jxls利用excel模版进行导出相关推荐
- java+jxls利用excel模版进行导出
大多时候会出现需要导出excel的功能,利用poi可以实现简单的导出,可以说poi的功能非常强大可以做到细节的定制化操作,但相对于在office操作excel,利用poi完全生成excel会显得非常复 ...
- luckySheet+POI+EasyExcel实现在线excel模版的导出和数据填充
luckySheet+POI+EasyExcel实现在线excel模版的导出和数据填充 业务需求 关键字 luckySheet POI EasyExcel 代码实现 前端luckySheet配置的ex ...
- python excel模板_如何利用Excel与Python制作PPT
对外汉语课堂中需要制作PPT.有些PPT的版式是相对固定的,如果数量巨大的话,可以利用python的pptx插件,与excel相结合,制作PPT.完整工作流有些复杂,所以分为4个部分来说明. PPT准 ...
- 可视化,市场分析表Excel模板,财务统计EXCEL模版,人员变动EXCEL模版,销量完成度Excel模板
可视化,市场分析表Excel模板,财务统计EXCEL模版,人员变动EXCEL模版,销量完成度Excel模板 可视化科技风EXCEL模版 可视化EXCEL模版,科技风十足,本小白做EXCEL没有模版真的 ...
- java导出数据到excel模板_springboot+jxls 根据Excel模板 填写数据并导出
项目结构 pom.xml net.sf.jxls jxls-core 1.0.6compile 学生信息表模板: ExcelUtiles package cn.bdqn.utils;import ne ...
- 无插件,无com组件,利用EXCEL、WORD模板做数据导出(一)
本次随笔主要讲述着工作中是如何解决数据导出的,对于数据导出到excel在日常工作中大家还是比较常用的,那导出到word呢,改如何处理呢,简单的页面导出问题应该不大,但是如果是标准的公文导出呢,要保证其 ...
- 利用Excel 2010的“图表模板”功能,快速创建新图表
为了让自己制作的数据透视图更具吸引力,小刘费尽心思将图表打扮的十分漂亮.但是,在以后的工作中,如果他需要再创建类似的图表时,是否还要重新对图表进行修饰美化呢?答案是否定的.其实,在Excel 2010 ...
- 性能碾压 POI !利用模板语法快速生成 Excel 报表
本期讲师:刘鹏 GcExcel项目组,核心开发者 Hello,大家好,本期葡萄城技术公开课,将由我来为大家带来<性能碾压 POI !利用模板语法快速生成 Excel 报表>的技术分享. 本 ...
- java poi 模板填数据库,java使用POI读取excel模版并向固定表格里填写数据详解
java使用POI读取excel模版并向固定表格里填写数据详解:public class ExportExcelDemo { private HSSFWorkbook workbook = null; ...
最新文章
- ​吐血整理:手拿几个大厂offer的秘密武器!
- Request header field token is not allowed by Access-Control-Allow-Headers in
- Linux 命令行敲命令 光标移动快捷键
- 深圳网络推广谈论网站收录后的内容还能不能修改?
- 安卓socks5代理客户端_内网Mysql代理浅析
- pip配置永久国内源
- 数据挖掘与数据化运营实战. 3.12 数据产品
- 身体曲线如何反映出健康
- 强推!盘点阿里巴巴 15 款开发者工具 | 程序员硬核评测
- mesh和wifi中继的区别_深度解读Mesh路由和无线中继的差异,谁才是性价比之选?...
- MySQL 的CASE WHEN 语句
- LeetCode 3sum 问题
- [转] android学习和广告平台赚钱
- PS快速切换证件照背景颜色
- Oracle 12c中的MGMTDB
- 自己对ajax的第一次上手被人说菜死还真是菜
- Android长截图与长图分享
- win7计算机怎么放在桌面上,win7系统把我的电脑放到桌面的解决办法
- ddtv.space index.php,图解MongoDB原理(二)
- 老调重弹:JDBC系列 之 存储过程 CallableStatement(创建和使用)
热门文章
- debug版函数初始化入口 0xcc
- 神经网络一般训练多少次,神经网络训练时间太长
- cdn服务器性能要求,什么是CDN,CDN有哪些优点?(中科三方)
- Tizen SDK安装和使用(一)-Tizen SDK下载
- 2021年中国1,4-丁二醇(BDO)市场供需分析,“限塑令”背景需求与价格持续提升「图」
- 用R语言的quantreg包进行分位数回归
- js实现打印 print.js
- python链表实现多项式_Python链表之两数之和
- C语言判断素数,判断质素算法
- 利用Go语言批量刷公益 瑞友天翼(1day)