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;/*** @author Geloin* */
public class ReportTest {/*** @param args*/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文件。

jxls操作excel文件相关推荐

  1. C#在客户端和服务端操作Excel文件

    一.在客户端把数据导入到Excel文件步骤 1.创建Excel application对象,打开或生成Excel文件 //服务端创建StringBuilder对象     System.Text.St ...

  2. python处理excel表格实例-使用Python操作excel文件的实例代码

    使用的类库 pip install openpyxl 操作实现 •工作簿操作 # coding: utf-8 from openpyxl import Workbook # 创建一个excel工作簿 ...

  3. C#操作Excel文件(转)

    摘要:本文介绍了Excel对象.C#中的受管代码和非受管代码,并介绍了COM组件在.net环境中的使用. 关键词:受管代码:非受管代码:Excel对象:动态连接库 引言 Excel是微软公司办公自动化 ...

  4. php删除excel文件,php操作excel文件的方法小结

    php操作excel文件的方法小结 php操作excel文件的方法有哪些?就跟随百分网小编一起去了解下吧,想了解更多相关信息请持续关注我们应届毕业生考试网! 一.php,不用COM,生成excel文件 ...

  5. C#操作Excel文件暨C#实现在Excel中将连续多列相同数据项合并

    C#操作Excel文件(读取Excel,写入Excel) 看到论坛里面不断有人提问关于读取excel和导入excel的相关问题.闲暇时间将我所知道的对excel的操作加以总结,现在共享大家,希望给大家 ...

  6. jxls使用excel公司_使用jXLS将Excel文件解析为JavaBeans

    jxls使用excel公司 这篇文章展示了如何使用jXLS将Excel文件解析为JavaBeans列表. 这是我编写的通用实用程序方法: /** * Parses an excel file into ...

  7. 使用jXLS将Excel文件解析为JavaBeans

    这篇文章展示了如何使用jXLS将Excel文件解析为JavaBeans列表. 这是我编写的通用实用程序方法: /** * Parses an excel file into a list of bea ...

  8. 详解Python操作Excel文件

    前言 本篇文章主要总结了一下利用python操作Excel文件的第三方库和方法. 常见库简介 1.xlrd xlrd是一个从Excel文件读取数据和格式化信息的库,支持.xls以及.xlsx文件. 地 ...

  9. 很大的.xls 文件导入sqlserver2005导入不全_python3 接口测试数据驱动之操作 excel 文件...

    python3 接口测试数据驱动之操作 excel 文件 1.4 操作 excel 文件 Python 中一般使用 xlrd 库来读取 Excel 文件, xlrd 库是 Python 的第三方库. ...

最新文章

  1. 华北计算机研究无人机,飞马D200无人机在华北某环境地调项目中的应用案例
  2. DBScript:轻量级ORM
  3. 子主题function php,wordpress子主题怎么添加
  4. Windows azure 上将Legcay IO操作轻松切换到Blob
  5. 简单的相似图片搜索的原理
  6. linux环境双网卡主机路由配置
  7. 全球及中国真空管太阳能集热器行业竞争状况及投资策略研究报告2021年版
  8. java 桥接模式_《JAVA与模式》之桥接模式
  9. 剑指offer之青蛙跳台阶问题
  10. Android 应用开发---ViewPager----1.相关基本知识
  11. Docker简单实践(一)
  12. c语言一维数组程序题,C语言程序设计 练习题参考答案 第四章 一维数组
  13. 唐人笔+手写板连接到计算机usb端口+错误,汉王唐人笔如意驱动
  14. Python搭建服务器
  15. 音视频开发—抖音GsyVideoPlayer视频底层分析使用
  16. arduino智能浇花系统_基于Arduino的远程自动浇花系统设计
  17. 如何优化WebService进行大批量数据传送(WSE3.0应用技巧)
  18. 蒙特卡罗方法(一):1.蒲丰投针求pi、2.掷骰子--求连续掷两颗骰子,点数之和大于6且第一次掷出的点数大于第二次掷出点数的概率
  19. 【shell面试题】
  20. 最全的Apache Doris教程(收藏版)共9万+字【第一篇】由于是typora编写,有部分图片在本地,识别不出来,请细聊我

热门文章

  1. 山东专升本计算机第八章-多媒体技术基础
  2. 计算机侧边栏没有桌面,找不到侧边栏?Win7小工具在桌面随意放
  3. 计算机的加减乘除的英文,用英语表达加减乘除,加减乘除用英语怎么说
  4. 毛概多项选择题答案统计程序
  5. 详解 30 道 Vue 面试题
  6. CC36 不同的子序列
  7. 公网IP 申请 与 配置
  8. 【NODE.JS】Buffer
  9. 魔兽世界 8.1 服务器维护时间,魔兽世界8.1上线时间 18个主要内容预告
  10. 高德地图-定义标记、添加标记、删除标记、自定义标记图标