13、进阶之Jxls2与Jxls1的历史问题

基本介绍 本章节将在导出逻辑中演示在以前使用Jxls1时遇到的一些问题及这个版本中的实践。 1、记得以前使用Jxls1版本时,Sheet的名字中有动态的日期,后来是采用Poi二次解析文件更改的,至于2的版本如果需要这么干的话貌似一样不能使用模板去设置。 2、在使用Jxls1的版本时插入了一张图片(假设图片在C20的位置),在数据显示30条数据时,期望循环的数据行将图片单元格往下撑(挤),而实际上并不会,不过Jxls2的时候可以使用载入图片的方式来引用图片了。 3、在使用Jxls1的版本时在模板中使用了下拉框,发现在解析模板后的数据中下拉框并未实现循环(解决方案是使用Poi二次做的处理),在Jxls2中也如此,不过可以使用它的自定义函数将单元格转换为下拉框的单元格,从而实现它的下拉框数据循环的需求。 4、在使用Jxls1的版本时在模板中使用了内连接(第一个Sheet页是主数据,其他的Shee...

文章分类:后端一部分 开源项目 Jxls2

Jxls2.0

12、进阶之Jxls2的单元格合并

基本介绍 本章节将在导出逻辑中演示使用Jxls2时在模板实现单元格合并的效果。实际上官网上提供的单元格合并并非为我们所需要的实际效果,而是使用循环嵌套的方式来进行数据展示而已,单元格并未实现合并。之前在Jxls1的时候也都是使用它生产报表Excel文件,再使用Poi二次去实现单元格合并的逻辑。经过最后的自定义函数分析后,我觉得在简单的报表实现中,我们可以使用它的自定义函数功能实现单元格的合并效果,为了写的简单在构造数据的时候我直接将数据生成与单元格合并实现一致的结构。 参考代码 package cn.chendd.examples; import java.io.File; import java.io.FileOutputStream; import java.io.InputStream; import java.io.OutputStream; import java.util.Ar...

文章分类:后端一部分 开源项目 Jxls2

Jxls2.0

11、进阶之Jxls2的自定义函数

基本介绍 本章节将在导出逻辑中演示使用Jxls2时在模板中使用自定义的函数来处理相关逻辑。自定义函数的功能是我认为这是Jxls2的最出色的亮点了,当然了有些人不知道它能替我们做什么,比如我们可以将后台返回的数据进行格式化,常常是将日期类型、金额类型格式化;将一些格子按其值的大小显示不同的背景及颜色;特殊逻辑的值的解析;单元格的特殊处理;单元格合并等等等等,为什么它可以做这么多失去了,实际上最最核心的还是它的自定义函数的解析,在link章节我已经提到了,它可以让一个普通的单元格转换成Poi的Cell单元格(就是这个特点我们可以非常简单的进行特殊逻辑的实现),我们使用Poi的Api去*作相对应的单元格,实现各种各样的效果。本示例章节主要实现单元格根据文本值显示文本颜色及背景色、格式化金额数字、单元格显示下拉框、自定义逻辑去两个数中的大数、自定义超链接(这个超链接非util中的调用方式)……等。...

文章分类:后端一部分 开源项目 Jxls2

Jxls2.0

10、进阶之Jxls2的自定义表达式解析引擎

基本介绍 本章节将在导出逻辑中演示使用Jxls2时在模板中声明的表达式解析器规范,这个技术实现或许应该说是Jxel表达式的自定义解析,反正总而言之就是我们可以在自己的模板中使用表达式时采用自定义的规范,就好比明明就是别人封装好的东西你给改成自己喜欢的表达式格式,让一些不清楚的人感觉到:“我真心不懂,但我能懂这好牛的样子”,没啥别的用途了。本例中实现了两个场景,分别是解析单独的变量和集合数据的循环。 参考代码 package cn.chendd.examples; import java.io.File; import java.io.FileOutputStream; import java.io.InputStream; import java.io.OutputStream; import java.util.ArrayList; import java.util.List; impo...

文章分类:后端一部分 开源项目 Jxls2

Jxls2.0

9、进阶之Jxls2的SQL模板实现

基本介绍 本章节将在导出逻辑中演示单元格使用SQL语句来实现报表数据展示的场景,对于直接在模板中写SQL语句无疑是Jxls2的一个重大亮点,直接写SQL的方式也有许多优点,比如学习使用成本较低,对于一些简单临时的数据报表可采用这种方式实现。本示例中包括了两种情况,直接查询一条数据的方式和循环一个集合的方式,特别需要注意:由于jdbc:query的表达式函数中已经使用到了’和”,所以如果sql中如果出现这种特殊字符时,小弟还不知道如何再次转义,这个需特别注意了,既要满足sql语法正确,又要兼容表达式函数的正常解析。 参考代码 package cn.chendd.examples; import java.io.File; import java.io.FileOutputStream; import java.io.InputStream; import java.io.OutputStre...

文章分类:后端一部分 开源项目 Jxls2

Jxls2.0

8、进阶之Jxls2的单元格超链接

基本介绍 本章节将在导出逻辑中演示单元格使用超链接的场景,对于超链接的支持有4中,常用的分别是文档内部(内连接)和外部连接(本例中将使用到的),比较简单,采用jxls自带的util函数实现。找了许久才将这个util的实现类找到,并通过它的超链接的技术实现引发了我一连串的“高端”应用(详见后文),扯远了,util的实现类路径为:org.jxls.transform.poi.PoiUtil,示例比较简单,重点是它这种超链接的方式可以将一个自定义的单元格转换为Poi对单元格Cell的处理,所以说我们有了Cell对象时,基本上跟使用原生Poi来*作文档是一样强大的。 参考代码 package cn.chendd.examples; import java.io.File; import java.io.FileOutputStream; import java.io.InputStream; im...

文章分类:后端一部分 开源项目 Jxls2

Jxls2.0

7、进阶之Jxls2的数据分组

基本介绍 本章节将在导出逻辑中演示按照某一属性进行分组显示的场景。本示例涉及的jxls:each的表达式函数中的group属性,需要自行另外掌握。前文中在Each数据循环的示例中我们对each数据循环已经有点点了解了,就是在其基础上使用了一下groupBy和groupOrder属性并且将数据循环换成嵌套循环。实际上如果需要实现这一分组显示效果直接从后台构造好对应结构的数据即可,比如后台返回一个Map<String,List<User>>>格式的结构,我们对其循环即可实现同样的效果。 参考代码 package cn.chendd.examples; import java.io.File; import java.io.FileOutputStream; import java.io.InputStream; import java.io.OutputStream; import java....

文章分类:后端一部分 开源项目 Jxls2

Jxls2.0

6、进阶之Jxls2的动态表格

基本介绍 本章节将在导出逻辑中演示报表动态列的实现场景。本示例涉及的jxsl:grid的表达式函数,需要自行另外掌握。前文中在Each数据循环的示例中是有用到一个横向循环的实现,我们把表格的标题作为第一条数据,使用jxsl:if来做首行标题的样式设置同样可以实现一个报表的动态列。实际上在jxls1.0的实现中我们也可以尝试使用它的横向循环来实现动态列,有个比较扯淡的实现是给模板来个30列的固定数据,在数据填充完成后使用Poi将超过的列在删除掉。 参考代码 package cn.chendd.examples; import java.io.File; import java.io.FileOutputStream; import java.io.InputStream; import java.io.OutputStream; import java.util.ArrayList; imp...

文章分类:后端一部分 开源项目 Jxls2

Jxls2.0

5、进阶之Jxls2的加载图片

基本介绍 本章节将在导出逻辑中演示加载并显示图片的场景,分为单个图片的引用和数据循环时的图片显示。本示例涉及jxls2的jx:image表达式函数,需要自行另外掌握,另外该表达式函数中的图片类型imageType参数支持的范围可参见org.jxls.common.ImageType枚举类。单个图片的引用随便找了一个eclipse的旧版本图片,但是你得相信以我的示例是完全可以让你得图片出现在这里的;循环的图片也同样是随便找的eclipse中的工具图片。 参考代码 package cn.chendd.examples; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.Inpu...

文章分类:后端一部分 开源项目 Jxls2

Jxls2.0

4、进阶之Jxls2的if-else逻辑判断

基本介绍 本章节将在导出逻辑中使用if-else判断逻辑来实现不同报表的需求。在1.0中是只有if标签,是没有else的,有的时候想使用一些复杂的条件判断时存在多个时就写的比较复杂了,实际上有了if-else就也是可以写成if-elseif-else结构逻辑的。本示例主要围绕单个if判断(显示所有数据中name属性中含有字符’j’的所有数据)、3个if判断(当属性bonus值的在不同范围内所展示不同的背景色、文本颜色)、if-else逻辑(当名称中含有字符’j’则显示含j,否则显示不含j)涉及到jx:if表达式函数。 注意了如果真有类似3个if判断的逻辑时,更好的是使用Excel中自带的条件格式来实现,至于实现方式请参看我在1.0版本时整理的资料。 参考代码 package cn.chendd.examples; import java.io.File; import java.io.Fi...

文章分类:后端一部分 开源项目 Jxls2

Jxls2.0
本站信息

 运营时间: 天

 用户数量: 人

 文章数量: 篇

 评论数量: 条

 点赞个数: 个

 最后更新:

标签云