一、Excel之初识jxls
一、初识jxls
Jxls是基于Poi导出Excel的模板式封装,较之直接使用Poi来一路create的方式,它更使得一般(小批量数据)的导出Excel变得非常简单和易于维护。至于使用它的优缺点请查找我关于它1.0版本相关的文章,这里主要讲述Jxls2.x(此刻最新的版本为2.4.3)的版本,关于此特地将一些常用的知识点和特色的功能点进行了“浅浅”的整理,共计十几篇文章,你值得拥有。它的官网地址为:http://jxls.sourceforge.net ,对应的demo下载地址为:https://bitbucket.org/leonate/jxls-demo (demo中所有的示例均采用了try-with的写法,这个也值得拥有),特别注意了,它的API就自己去看吧,本章节讲述的前提是你大概上已经看过它的API了,了解到一些概念、标签、语法等。另外一个重点是即时是有了Jxls2也不要放弃使用原生Poi,有的复杂报表两者结合才更加完美;还有就是用于(超)大数据量的导出时还得是Poi好使,毕竟有flushRows。
我们先来道一下Jxl2能做哪些事儿吧,可能这才是你最关注的东西,如:列表数据循环嵌套显示、Excel公式计算、动态表格、单元格合并、自定义函数、自定义表达式、SQL模板报表、插入超链接、插入图片、数据分组、IF-ELSE逻辑判断、按模板填充数据等等等,这些也都是我感觉革新的地方,也是我后文中要进行一一详细阐述的知识点。
Jxls2与1的版本有着巨大的版本差异,抛弃了在Excel模板中<jx:tag/>标签的使用方式,改为直接在单元格中插入批注的方式来声明表达式,并且以前的版本只是单纯的进行逻辑、数据上的处理(还有基于Excel中模板自身公式的支持),对于稍微复杂的实现必须交由后台的Poi进行二次处理。Jxls2的版本增强了逻辑判断处理,如:可支持else逻辑;可实现复杂的单元格逻辑,如:将单元格设置为超链接处理、设置为图片处理等等。Jxls2支持Poi与JExcel两个Java解析Excel的实现,默认采用commons-jxel表达式引擎(用户可以替换)来动态运算。
Jxls2解析模板时有3种方式,分别是直接从模板的备注标记中解析、xml配置中解析、Java后台创建的方式解析,本篇所有章节中全部使用在模板的备注标记中解析的方式(沿用1.0时的习惯,另外实际应用部署后,如需调整Excel显示的样式效果可直接通过调整Excel模板文件的方式来,也无需重启相关服务器)。
了解Jxls2需要有一个区域的概念“Area”,这个区域定义了模板中所需要解析的动态区域,即所有的表达式处理都要包括在内,且这个区域的声明只能为Excel单元格的A1格子内。本片文章主要介绍一下什么是Jxls2、它能帮我们干些什么和一个Hello示例。至于这个Hello程序,我将代码写至最简化(一上来就接触到别人封装好的程序不利于大家对于它的原有实现的了解),并加上相关的解释来说明。
Java代码参考为:
package cn.chendd.examples;import java.io.File;import java.io.FileOutputStream;import java.io.InputStream;import java.io.OutputStream;import org.jxls.common.Context;import org.jxls.util.JxlsHelper;/*** Hello 入门体验* @author chendd*/public class SimpleHelloJxls {public static void main(String[] args) throws Exception {//模板文件InputStream is = SimpleHelloJxls.class.getClass().getResourceAsStream("/cn/chendd/examples/templates/simpleHello.xls");Context context = new Context();//设置参数变量context.putVar("name", "chendd");OutputStream os = new FileOutputStream(new File("d:\\test\\out_simpleHello.xls"));//载入模板、处理导出JxlsHelper.getInstance().processTemplate(is , os , context);//释放资源os.flush();os.close();is.close();//备注,如果从一个简单的示例入手,这个就再简单不过了}}
代码说明
可以看出以上代码较为简单,构造一个InputStream输入流读入一个xls的模板文件,定义一个变量name,且值为chendd,最后再处理模板和填充数据,最后将模板写出。
模板参考为:
模板说明
在A1单元格处定义了一个批注(位于Excel菜单栏—审阅处),这里需要特别注意一下,故意在A1处设置了单元格合并,实际上这个区域还是属于A1格子。在开始接触时也是讲jx:area(lastCell=”A1”)写成了D1是不对的,实际上还得是合并单元格的A1位置(运行结果处有解释);另外Excel模板文件的Sheet名称为“Hello”。另外${xx}是jxel表达式的解析引擎规范,表示这里引入了name的参数解析。
运行示例为:
运行说明
我们选中这个合并后的单元格区域发现实际上它是A1格子,${name}是对于后台声明变量(putVar)参数的解析,比较简单,不多赘述。
链接地址:有时间改进记录
一、Excel之初识jxls相关推荐
- java excel jxls_java通过jxls框架实现导入导出excel文件实例
//使用jxls报表生成工具,把java实体类导出生成 Excel文件或导入 Excel 插入数据库 //读取 public class ReadExcel { private final stati ...
- java导出数据到excel模板_springboot+jxls 根据Excel模板 填写数据并导出
项目结构 pom.xml net.sf.jxls jxls-core 1.0.6compile 学生信息表模板: ExcelUtiles package cn.bdqn.utils;import ne ...
- java+jxls利用excel模版进行导出
大多时候会出现需要导出excel的功能,利用poi可以实现简单的导出,可以说poi的功能非常强大可以做到细节的定制化操作,但相对于在office操作excel,利用poi完全生成excel会显得非常复 ...
- JXLS导出Excel表格实战教程
超级好用Excel导出工具之JXLS 简介 引入JXLS maven依赖 XLS Area定义标记 each 命令是最经常使用的XLS命令 单元格合并命令 JXLS导出实战 模板导出Excel的工具 ...
- 开源Excel报表工具:jxls
用Excel出报表是我们办公中经常有的事情.如何通过查询数据库然后生成报表呢?现在有很多开源的工具可以实现这个需求,当然也有很多收费的工具.介绍一下开源Excel报表工具jxls.jxls的官方网站( ...
- java使用jxls导出excel功能
在java的开发里,导出excel功能会经常遇到的,而jxls框架提供了很大的方便. jxls官网:http://jxls.sourceforge.net/,官网的下载包里面也提供详细的文档说明. 下 ...
- jxls对模板Excel进行导出
jslx对模板Excel进行导出 jxls是在国外比较受欢迎导出工具,就和国内的easypoi类似,这两者并不冲突,就看个人喜好.我在导出Excel文档时,个人比较喜欢使用jxls,废话不多说,那就直 ...
- JXls实现基于excel模板生成报表
JXls实现基于excel模板生成报表 jxls是非常小巧方便生成excel报表的工具库.jxls在excel模板中使用特定标记,定义输出格式和数据布局.在很多应用中有报表功能需要生成excel. j ...
- jxls模板hashmap_java+jxls利用excel模版进行导出
大多时候会出现需要导出excel的功能,利用poi可以实现简单的导出,可以说poi的功能非常强大可以做到细节的定制化操作,但相对于在office操作excel,利用poi完全生成excel会显得非常复 ...
- jxls读取模板导出Excel学习笔记
jxls读取模板导出Excel学习笔记 jxls是一个简单的.轻量级的excel导出库,使用特定的标记在excel模板文件中来定义输出格式和布局.除此以外,java中成熟的excel导出工具有po ...
最新文章
- ModBus的小于3.5S间隔的理解
- php post api json数据,php – REST API:请求身份为JSON或纯POST数据?
- python分为哪几个模块_干货:入门Python重点学哪几个模块才能成为高手?
- 怎么把线稿提取出来_PS教程:提取线稿如此简单?三种方法总有一种适合你
- Perl读写Excel简单操作
- left join 最后一条_一条Mysql查询语句的西天取经之路,你真的了解吗?
- 《Python参考手册(第4版•修订版)》——1.8 集合
- eclipse 安装 阿里代码规范检测插件
- ESP32编译速度慢问题
- 新手如何自己做网站?
- 阿里云共享带宽包和共享流量包的区别,分别应对的场景
- linux LED设备驱动文件
- 乘积取中法matlab,遺傳算法(GA)的matlab實現
- 【操作教程】AI安防监控智能视频平台EasyCVR如何重置密码?
- SSL证书的加密算法都有哪些?
- 在linux系统下运行jar包的命令如下:
- pycharm中导入pyQt无法使用
- 生鲜电商O2O 可以怎么做?
- struct in_addr 结构体
- [SSD固态硬盘技术 17] 缓存(DRAM)对性能的影响机制
热门文章
- 整站下载工具webHttracker webside copier
- 计算机图桌面打印出来,桌面图片打印设置方法
- 【推荐】智慧城市建设及发展资料合集
- 【基于UML软件建模的选课系统】
- 清华085211计算机技术,2018年清华大学计算机系计算机技术考研(085211)考试科目、参考书目、复习经验---新祥旭考研...
- 国产操作系统之深度deepin安装
- 怎么提供专利技术交底书
- bug解决 2021-09-25 Unity人物动画无法正常播放的问题
- android 4.4 hifi,Android系统HiFi手机需要解决什么问题?_音频新闻-中关村在线
- vax与vay的区别