1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > java中使用jxls导出excel excel单元格换行 多sheet页导出

java中使用jxls导出excel excel单元格换行 多sheet页导出

时间:2020-06-30 17:05:08

相关推荐

java中使用jxls导出excel excel单元格换行 多sheet页导出

一、模板

jxls通过模板中的批注语法来渲染数据,所以写好模板已经成功了一大半,

我的模板如下:这里我定义了两个sheet页,第一个sheet页就是汇总的,直接取数据遍历;第二个sheet页就是动态sheet页的模板。

注意模板作用域的定义一定要写在第一个单元格jx:area(lastCell="E7");动态sheet语法multisheet属性jx:each(items="userScoreList" var="userScore" multisheet="userScore.sheetName" lastCell="E7");这里sheet的名称我取的是遍历的对象中的某个属性。动态sheet的sheetName也可以额外给一个集合,例如jx:each(items="userScoreList" var="userScore" multisheet="sheetNames" lastCell="E7");给一个sheetNames,那么代码中就要给过来这个sheetNames为key的集合了。

二、代码部分

我这里给的数据就是两个集合,第一个作为第一个sheet页遍历的数据源,第二个就是动态sheet页的数据源。

如果模板中使用了sheetNames最为动态sheet的名称来源,那么这里就要加一个sheetNames为key的属性了。

关键导出代码

三、单元格中换行

1.代码中给换行符

2.模板中对应的单元格设置自动换行格式

四、注意点

动态sheet页导出时,总会多出一个空白sheet页,设置setDeleteTemplateSheet(true)即可删除多出的空白页。JxlsHelper.getInstance().setDeleteTemplateSheet(true).processTemplate一开始我使用的是2.6.0的版本,设置了这个属性是没有效果的,后面官网看了一下最新的源码,更换了2.10.0-rc3版本就可以了。最新的版本已经更新了如下的代码,2.6.0的版本中是没有这些的,导出的动态sheet的名称不能超过31个字符,而且不能带有特殊字符。否则会报错java.lang.IllegalArgumentException: The workbook already contains a sheet of this name看报错的意思是sheet的名称重复了,可是我查了我的代码,我的sheetNames不可能重复,其实真正的原因是我的sheetName超长了,截取一下就可以了。

四、导出效果

使用的jar包版本:

<dependency><groupId>org.jxls</groupId><artifactId>jxls</artifactId><version>2.10.0-rc3</version></dependency><dependency><groupId>org.jxls</groupId><artifactId>jxls-poi</artifactId><version>1.2.0</version></dependency>

end

参考博客:jxls2.4.x 解决导出多sheet时多出模板sheet问题

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。