jxls读取模板导出Excel学习笔记
jxls读取模板导出Excel学习笔记
jxls是一个简单的、轻量级的excel导出库,使用特定的标记在excel模板文件中来定义输出格式和布局。除此以外,java中成熟的excel导出工具有poi、jxl,但他们都是使用java代码的方式来导出excel,编码效率很低且不方便维护。
jxls的运行效率相对于 jxl、poi要慢,但导出数据量较小的时候使用它,可以加快编码的速度,毕竟用起来简单方便。
源码方法
最核心的方法是 jxls-core 的jar包中XLSTransformer 类,里面有transformXLS() 重载的三种形式,我只摘出了方法签名部分,如下:
/** 参数1:模板文件路径* 参数2:填入表格的对象数据* 参数3:输出文件的路径* 这个方法读取模板,写入数据,写入输出文件一起完成*/
public void transformXLS(String srcFilePath, Map beanParams, String destFilePath)
/** 参数1:模板文件输入流* 参数2:填入表格的对象数据* 返回工作簿对象,后续的write()写入输出文件流需要手动进行*/
public Workbook transformXLS(InputStream is, Map beanParams)
/** 与第二个方法类似,返回工作簿对象,后续的write()写入输出文件流需要手动 * 进行。看起来应该是支持往多个sheet页中填入数据*/
public Workbook transformXLS(InputStream is, List templateSheetNameList, List sheetNameList, List beanParamsList)
编码使用
定义好要填入表格的对象,通过beanParams传入transformXLS()
Map<String,Object> map = new HashMap<String,Object>();
map.put("department", MyDepartment);
transformer.transformXLS(srcFilePath, map, destFilePath);
编写excel输出格式
a. 使用下面的语句来访问Excel单元格中简单的bean属性:
${department.name} // 注意department是Map中的key
Map中可以放多个队形,每个对象用各自的 name.perproty 访问即可。
访问任何深度的对象属性都是可以的。例如
${bean.bean1.bean2.bean3.bean4.bean5.bean6.bean7}
b. 多个属性在一个单元格中在一个单元格,我们可以连接几个属性。例如:
Employee: ${employee.name} - ${employee.age} years old
这样,我们得到的输出是:
Employee: John - 35 years
c. : 用于迭代, 属性有2个, 一个是items, 一个是var, 类似java中的foreach循环,items表示集合,var表示集合中的单个对象。
如果你把jx:forEach标签的开始标签和结束标签放在同一行的话,JXLS会在同一行上重复在jx:forEach
标签的开始标签和结束标签之间的Excel单元格。 如果你想要用jx:forEach标签重复Excel的行,那么你必须把jx:forEach标签的开始标签和结束标签放在不同的行,把要重复的行包含在中间,jx:forEach标签本身所在行的所有单元格都会被忽略。
forEach标签的筛选功能 : 你可以用jx:forEach标签的‘select’属性来选择把哪些记录包含在循环中,例如,如果我们想只包含工资高于 2000元的员工,我们可以使用下面的语句:
<jx:forEach items="${employees}" var="employee" select="${employee.payment > 2000}"> {employee.name} | {employee.payment} | ${employee.bonus}
</jx:forEach>
items的值,employees对应放入map中的key,value是我们的数据对象。
更多用法可以参考百度文库
1.2 示例
a. bean
public class Fruit { private String name; // 水果名称 private float price; // 水果价格 // getter setter
}
b. 核心工具类
public class ExcelUtil { /** * 根据模板生成Excel文件. * @param templateFileName 模板文件. * @param list 模板中存放的数据. * @param resultFileName 生成的文件. */ public void createExcel(String templateFileName, List<?> list, String resultFileName){ try { //创建XLSTransformer对象 XLSTransformer transformer = new XLSTransformer(); //获取java项目编译后根路径 URL url = this.getClass().getClassLoader().getResource(""); //得到模板文件路径 String srcFilePath = url.getPath() + templateFileName; Map<String,Object> map = new HashMap<String,Object>(); map.put("list", list); String destFilePath = url.getPath() + resultFileName; //生成Excel文件 transformer.transformXLS(srcFilePath, map, destFilePath); } catch (Exception e) { throw new RuntimeException("error happens...", e); } }
}
c. 测试类
public class Client { public static void main(String[] args) { List<Fruit> list = new ArrayList<Fruit>(); list.add(new Fruit("苹果",20.0f)); list.add(new Fruit("桔子",30.0f)); String templateFileName = "template.xlsx"; String resultFileName = "result.xlsx"; new ExcelUtil().createExcel(templateFileName,list,resultFileName); }
}
d. Excel表格
模板表格
导出的表格
jxls读取模板导出Excel学习笔记相关推荐
- jxls模板hashmap_JXLS根据模板导出Excel实例教程
本文实例为大家分享了JXLS根据模板导出Excel实例的具体方法,供大家参考,具体内容如下 先做模板,做成想要的格式样子保存,然后通过程序根据模板生成对应样式的Excel文件,代码简单.什么连接数据库 ...
- springboot使用jxls导出excel___(万能通用模板)--- SpringBoot导入、导出Excel文件___SpringBoot整合EasyExcel模板导出Excel
springboot使用jxls导出excel 实现思路: 首先在springBoot(或者SpringCloud)项目的默认templates目录放入提前定义好的Excel模板,然后在具体的导出接口 ...
- C++操作Excel学习笔记
C++操作Excel学习笔记 一: [当前博文转载自http://blog.csdn.net/fullsail/article/details/4067416] C++读取Excel文件方式比较 C+ ...
- java 根据excel模板导出excel
java 根据excel模板导出excel 由于项目需求,最近做了一个需要根据查询接口导出excel表格数据的需求 pom依赖: <dependency><groupId>or ...
- java 分析excel模板,java 根据excel模板导出excel
java 根据excel模板导出excel 由于项目需求,最近做了一个需要根据查询接口导出excel表格数据的需求 pom依赖: org.apache.poi poi 3.16 org.apache. ...
- .Net NPOI 根据excel模板导出excel、直接生成excel
一.根据Excel模板导出excel 1.导入NPOI.dll 2.DAL中添加类ExportExcel.cs using NPOI.SS.UserModel; using System; usin ...
- springboot+poi开发excel导出 加载Excel模板导出 Excel批量导出详解
提到Excel导出功能,可能很多人都使用springmvc框架做过,笔者今天要给大家分享的是基于springBoot开发Excel复杂模板导出功能(所谓复杂模板指在模板里的特定表头里有不同的单元格合并 ...
- 安装命令:pip install xlrd ,pandas操作Excel学习笔记__7000
pandas操作Excel学习笔记_loc和iloc_7000 pandas操作Excel学习笔记__7000 1.安装环境:pandas需要处理Excel的模块xlrd,所以需要提前安装xlrd.不 ...
- 阿里easyexcel通过模板导出excel
easyexcel通过模板导出excel 之前使用其他方式进行excel的导出,像poi或者freemarker或者Beetl,效果都还行,但是总是有一些小问题.许多的解决思路都是:通过制作excel ...
最新文章
- Python——eventlet.websocket
- Echart图表X轴为时间轴的解释
- windows 下使用caffy_折腾下Windows下的Elasticsearch安装与使用
- python能写软件吗-python可以编写什么软件
- Java后端架构开荒实战(二)——单机到集群
- 知乎超高赞:都有哪些习惯值得长期坚持?
- delphi 提示class tparamlistbox not found_通达信主图K线变色波段提示指标公式
- 炫天塔罗占卜结果......
- hibernate 第二天
- 根据xml文件生成对应javabean类
- python中使用连续关系运算符_解释一下Python中的关系运算符
- https方式nginx 代理tomcat访问不带www的域名301重定向跳转到www的域名帮助seo集中权重...
- python爬虫需要学哪些知识_Python爬虫需要学习那些东西?
- 关于MSN群 创建MSN群 使用MSN群
- Chrome浏览器主页被hao123、360和2345篡改恢复到默认的方法
- Vue的ESLint-stylelint-prettier联合配置
- Excel图表—超级好用的Bullet图(KPI考核图)
- 服务器系统关机了怎么办,各种服务器系统的关机
- 信息管理与信息系统考研专业方向计算机,信息管理与信息系统考研专业方向
- 基于Java Web的流浪猫狗救助网站
热门文章
- Vue学习笔记3.2-生命周期函数 beforeCreate、created、beforeMount、Mounted、beforeUpdate、updated、beforeDestroy、destro
- 超声波涉及到的主要概念
- 小米手机上ImageView加载超大本地图片不显示的问题
- ubuntu 14.04系统安装 Understand
- 常见的Python/数据库/大数据/网络爬虫面试题
- 广联达java面试题_广联达Java开发笔试复盘(7月22日)
- 《豪杰春香》and《萤火之森》
- Multiple constructors accepting all given System.Collections.Generic.List
- Is the server running on host localhost (::1) and accepting TCP/IP connections on port 5
- 小刘同学的模拟IC(Razavi)-virtuoso ic618仿真记录