JXLS是基于Jakarta POI API的Excel报表生成工具,可以生成精美的Excel格式报表。它采用标签的方式,类似JSP标签,写一个Excel模板,然后生成报表,非常灵活,简单!
JXLS软件首页:http://jxls.sourceforge
.NET
/,SVN源码地址:svn://svn.code.sf
.Net
/p/jxls/code。
使用JXLS生成Excel文件相对较为简单,只需要一个Excel模板和几行代码即可。Excel模板的内容也比较简单,主要是运用标签及集合函数。
JXLS的标签比较常用的有以下几个:
(1) jx:forEach,注意大小写,用于迭代,属性有两个,一个是items,一个是var,其作用、含义和用法与jstl一致;
(2) jx:if,逻辑判断,有一个属性,即test,其作用、含义和用法与jstl一致。
集合函数有以下几个:
(1) sum,求和;
(2) min,取最小;
(3) max,取最大;
(4) ave,求均值;
(5) count,取数量。
JXLS有一个比较大的优势——你可以先设计好Excel的样式,再插入JXLS的标签,最终生成的Excel跟你的设计一模一样——这与POI不同,POI通常要求我们在
Java
代码中进行样式和字体的设计。
JXLS还有一个特点——你可以直接使用Excel自带的函数。
且看以下模板:
首先这是一个Excel文件,后缀为xls或xlsx,它与普通Excel文档的不同在于,这里面加入了很多标签。
首先是jx:forEach,如果把上图看作一个jsp文件,或许我们会更容易理解一些——迭代reports对象,它可能是一个List或数组,然后分别取出reports中,对象的id、businessType、unaccept等属性的值,分别显示在A列、B列、C列等。
标签会被怎么处理?会不会使得最终生成的Excel文件有一个空行或空列?不会,JXLS在生成Excel时,会把含有标签的那一行删除,你当它不存在就行了。
接着来看jx:if,相当简单的一个判断,还是把它当jsp来看,很容易理解。
$[and(c3)]、$[count(c3)],这是上文提到过的集合函数吗?不是的,这是Excel自带的函数,在Excel中,我们用类似“=and(c3:38)”或“=count(c3:c8)”来计算值,而在JXLS中,这些函数的用法变为$[函数名(列)],为什么在Excel中的“(c3:c8)”变成了“(c3)”呢?因为上图中的C3在jx:forEach中,它代表的已经不是第3行第C列,而是jx:forEach生成的所有行中的第3列。
JXLS提供的集合函数怎么使用?——${count(businessType):reports},表示使用的是JXLS中的count函数,统计reports对象(List或数组)中,对象的businessType的数量,其实,相当于reports数组或对象的长度了。
JXLS提供的集合函数是用大括号括起来的,而Excel自带的函数是用中括号括起来的,Excel自带的函数只需要指定列即可,JXLS提供的集合函数需要指定对象、指定属性。
模板和Java代码怎么对应呢?下文是示例:
-
-
-
-
package
com.geloin.jxls.main;
-
-
import
java.util.ArrayList;
-
import
java.util.HashMap;
-
import
java.util.List;
-
import
java.util.Map;
-
-
import
com.geloin.jxls.beans.Report;
-
-
import
net.sf.jxls.transformer.XLSTransformer;
-
-
-
-
-
-
public
class
ReportTest {
-
-
-
-
-
public
static
void
main(String[] args)
throws
Exception {
-
String tplPath =
"d:/work/proTmp/jxls/补换领业务统计报表模板.xlsx"
;
-
String destPath =
"d:/work/proTmp/jxls/补换领业务统计报表.xlsx"
;
-
-
List<Report> reports =
new
ArrayList<Report>();
-
Report r1 =
new
Report(
1
,
"补领机动车行驶证"
, 1L, 2L, 3L, 4L, 5L, 6L);
-
reports.add(r1);
-
-
Report r2 =
new
Report(
2
,
"换领机动车行驶证"
, 11L, 21L, 31L, 41L, 51L, 61L);
-
reports.add(r2);
-
-
-
Map<String, List<Report>> beanParams =
new
HashMap<String, List<Report>>();
-
beanParams.put(
"reports"
, reports);
-
XLSTransformer former =
new
XLSTransformer();
-
former.transformXLS(tplPath, beanParams, destPath);
-
}
-
-
}
显示,最下面四行是生头戏,确切的来说,最下面一行是重头戏,流程其实很简单——指定模板位置和生成的文件的位置,然后生成数据,并把数据置入到一个Map里,Map的key对应于模板中用到的对象,最后用transformXLS直接生成Excel文件。
-
•
2013-12-11
-
•
2013-12-09
-
•
2013-12-06
-
•
2012-04-16
-
•
2012-04-13
-
•
2013-12-10
-
•
2013-12-09
-
•
2012-08-21
-
•
2012-04-16
-
•
2012-04-13
jxls操作excel文件标签: jxlsexcel模板示例2013-12-10 13:40 14369人阅读 评论(2) 收藏 举报 分类:JAVAEE(10) 版权声明:本文为博主原创文章,未经博主允许不得转载。 JXLS是基于Jakarta POI API的Excel报表生成工具,可以生成精美的Excel格
需求:最近拿到的一个任务,是将订单列表导出,按照订单列表导出(包括筛选条件)。
背景:由于原本的订单列表查询代码太过繁重,里面夹杂的逻辑较多,再有一个是自己想尽快的熟悉公司的业务。于是决定,自己按照原本的样子重新写一个查询的逻辑。
历程:原本以为这个功能会比较简单,用不了几天。原本打算用4天把这个需求搞定。结果,到今天结束用了10天。这大大的超出了我的预估。这也有开发系统故障的原因,导...
把鼠标放到上面,提示:此单元格中的数字为文本格式或者前面有撇号。把数值的单元格格式改为数值,求和单元格显示求和结果。真相大白!原来是这些数字的格式为文本,所以无法求和。
解决方法其实也很简单,把模板中对应的表达式*1转为数值格式即可。如:
${item.re...
正规教程:http://www.w3school.com.cn/xsl/index.asp
标签手册:http://www.w3school.com.cn/xsl/xsl_w3celementref.asp
函数手册:http://www.w3school.com.cn/xsl/xsl_functions.asp
XSL头部定义:
因为XSL是标准的XML格式,所有第一行是xml的
在项目中使用
jxls
导出
excel
,coding可以很少很少,
excel
报表格式可以很复杂同时也可以有很漂亮的样式,不再用网页导出这种很恶的方式来面对头痛的格式问题。
jxls
也是通过poi的api来
操作
excel
,利用定义好格式的模版再加上一些标签语言就可以
操作
数据了。 public static void doExport(String attachName, String templeteFile,
Map beans, HttpS
er
vletResponse response) {
本人最近需要每天统计数据表,并每周一发送统计结果的邮件,所以写了个springboot老自动完成工作。项目地址为:https://github.com/707293891/springboot
其中某些统计数据需要特殊标记:红色显示。
如图:模版如下
但是需要在某一处特殊显示为红色:如图
现在写出实现过程:
利用
jxls
的区域监...
jxls
是一个用于在Java应用程序中生成和导出
Excel
文档的开源框架。该框架支持多种数据源,包括列表、Map和JavaBean。
jxls
也支持导出带有附件的
Excel
文档。
要在
jxls
中导出带有附件的
Excel
文档,首先需要为模板
文件
添加一个附件。可以在模板
文件
中插入一个超链接或按钮,点击该链接或按钮会下载或打开附件。添加附件的步骤如下:
1. 将附件
文件
保存到任意位置。
2. 在
Excel
模板中插入一个超链接或按钮。
3. 在超链接或按钮的目标属性中指定附件的URL地址。例如:file://C:/附件.txt。
4. 在代码中使用
jxls
框架导出
Excel
文档时,将附件
文件
作为参数传递给框架。
下面是一个简单的示例代码,演示如何在
jxls
中导出带有附件的
Excel
文档:
```java
// 模板
文件
路径
String templatePath = "template.
xls
";
// 导出
文件
路径
String outputPath = "output.
xls
";
// 附件
文件
路径
String attachmentPath = "attachment.txt";
Map<String, Object> data = new HashMap<String, Object>();
// 设置导出数据
// 创建
jxls
导出器
Transform
er
transform
er
=
Transform
er
Factory.create
Transform
er
(
new File(templatePath),
new FileOutputStream(outputPath));
// 添加附件
transform
er
.addTool(new UrlTool(attachmentPath, "__attachment__"));
// 将数据导出到
Excel
文档
Workbook workbook =
transform
er
.
transform
();
workbook.write(new FileOutputStream(outputPath));
在上面的代码中,我们通过调用UrlTool的构造函数将附件
文件
添加到导出器中。UrlTool是
jxls
框架中的一个工具类,用于添加超链接或按钮。__attachment__是一个占位符,将在模板中用于定位附件。在模板
Excel
中,用${__attachment__}代表这个占位符。最终,我们将数据导出到
Excel
文档,并将
Excel
文档写入输出流中。
总之,
jxls
支持导出带有附件的
Excel
文档。通过在模板
文件
中添加超链接或按钮,并在代码中将附件
文件
添加到导出器中,我们可以轻松地实现导出带有附件的
Excel
文档。
qq_27677005: