使用Apache开源POI和jXLS两种API生成报表.docx

上传人:b****2 文档编号:17671224 上传时间:2023-07-27 格式:DOCX 页数:12 大小:398.07KB
下载 相关 举报
使用Apache开源POI和jXLS两种API生成报表.docx_第1页
第1页 / 共12页
使用Apache开源POI和jXLS两种API生成报表.docx_第2页
第2页 / 共12页
使用Apache开源POI和jXLS两种API生成报表.docx_第3页
第3页 / 共12页
使用Apache开源POI和jXLS两种API生成报表.docx_第4页
第4页 / 共12页
使用Apache开源POI和jXLS两种API生成报表.docx_第5页
第5页 / 共12页
使用Apache开源POI和jXLS两种API生成报表.docx_第6页
第6页 / 共12页
使用Apache开源POI和jXLS两种API生成报表.docx_第7页
第7页 / 共12页
使用Apache开源POI和jXLS两种API生成报表.docx_第8页
第8页 / 共12页
使用Apache开源POI和jXLS两种API生成报表.docx_第9页
第9页 / 共12页
使用Apache开源POI和jXLS两种API生成报表.docx_第10页
第10页 / 共12页
使用Apache开源POI和jXLS两种API生成报表.docx_第11页
第11页 / 共12页
使用Apache开源POI和jXLS两种API生成报表.docx_第12页
第12页 / 共12页
亲,该文档总共12页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

使用Apache开源POI和jXLS两种API生成报表.docx

《使用Apache开源POI和jXLS两种API生成报表.docx》由会员分享,可在线阅读,更多相关《使用Apache开源POI和jXLS两种API生成报表.docx(12页珍藏版)》请在冰点文库上搜索。

使用Apache开源POI和jXLS两种API生成报表.docx

使用Apache开源POI和jXLS两种API生成报表

 

使用Apache开源POI和jXLS两种API生成报表

 

编写人:

杜航航

编写时间:

2011/1/28

 

目录

1引言3

2使用POI对Excel进行读写4

2.1POI读取excel文件的内容4

2.2使用POI对Excel进行写操作6

2.3创建Sheet6

2.4创建Cell7

2.5设置Cell的格式7

3使用jXLS生成Excel报表8

3.1使用excel模板生成报表8

3.2根据模板生成图表9

3.3根据数据库数据生成报表11

 

1引言

在电信领域,生成报表是日常工作中必不可少的一项任务。

提供报表的方式也是多种多样,例如使用BO来生成报表,使用eclipse的插件来做报表。

但是有些时候,需要我们自已来开发报表。

这就是要借助于报表操作的API来完成。

可以通过API直接将数据读写如报表文件,也可以根据模板来生成报表。

根据这个需要,我研究了一下操作报表的两种API,一种Apache的开源项目POI,POI是针对微软OFFICE文档的一种JAVAAPI,使用该API可以实现对微软的OFFICE文档的各种操作。

其中使用最广泛的是对MSword,excel,PPT的操作。

不仅仅支持windows2003的office文档还支持windows2007的office文档。

例如:

HSSFisthePOIProject'spureJavaimplementationoftheExcel'97(-2007)fileformat.XSSFisthePOIProject'spureJavaimplementationoftheExcel2007OOXML(.xlsx)fileformat.

HSSFandXSSFprovideswaystoreadspreadsheetscreate,modify,readandwriteXLSspreadsheets.Theyprovide:

lowlevelstructuresforthosewithspecialneeds

aneventmodelapiforefficientread-onlyaccess

afullusermodelapiforcreating,readingandmodifyingXLSfiles

再随后的例子中,我也将以操作Excel作为例子,使用HSSF操作Excel'97(-2007)。

POI这个开源项目的特点是直接对Excel的每个sheet或者是每个Row,或者是每个Cell操作。

API的优点是简单易懂,容易上手。

对于复杂表格的操作比较繁琐,并且不方便生成各种饼状图和柱状图等等。

另外一个API是jXLS。

jXLS是一个专门针对excel的API,并不支持word或者是PPT。

它是在POI的基础上进一步的包装,是一个更加优秀的开源项目。

当前最新的版本是jXLS1.0。

jXLS1.0新增的特性是对excel2007的支持。

jXLS最大的特点用一句话概况就是:

jXLSisasmallandeasy-to-useJavalibraryforwritingExcelfilesusingXLStemplatesandreadingdatafromExcelintoJavaobjectsusingXMLconfiguration.。

ExcelgenerationisrequiredinmanyJavaapplicationsthathavesomekindofreportingfunctionality.ThemostcompletelibrarytomanipulateXLSfilesfromJavaisApachePOIlibrary.TheproblemsappearwhenitisrequiredtocreatealotofcustomandcomplexExcelreportswithrichformattingandenhancedfunctionality.

jXLS的特性包括:

UsingSQLqueriesdirectlyinXLStemplates

Simplepropertyaccessnotation

Fullexpressionlanguagesupport

Complexobjectgraphexport

Flexiblecollectionexport

Flow-ControlTagssupport

Dynamicgroupingofdata

Exportofasinglecollectionintomultipleworksheets

Adjacenttablessupport!

Complexformulassupport

Charts,MacrosandmanyotherExcelfeaturesinXLStemplate

DynamicOutlines

DynamicColumnsHiding

DynamicCellStyleprocessingthroughcustomProcessors

JDBCResultSetexport

MergedCellssupport

Multiplebeanpropertiesinasinglecell

ReadingXLSfiles

使用POI可以去Apache的网站下载最新的POI版本,网址是:

http:

//poi.apache.org

使用jXLS可以去sourceforge的网站下载最新版本,网址是:

2使用POI对Excel进行读写

2.1POI读取excel文件的内容

POI对excel文件的读取很方便,很简单,可以大致按照以下几步:

第一步:

加载Excel文件

第二步:

指定要读取的sheet

第三步:

指定要读取的Row

第四步:

获得要读取的Cell

具体代码如下:

从代码中可以看到

从33-35行是根据要读取的excel文件生产一个HSSFSheet的对象,这样以后通过对HSSFSheet的读取,就实现了对excel文件本事的读取。

36行是读取指定的Sheer,wb.getSheetAt(0),表示的是读取的是第一个sheet,也就是说sheet的编号是从0开始,也可以通过sheet名称获取该Sheet,例如,wb.getSheet(“Sheet1”),就实现了对Sheet1的读取。

37行是获取Row,也就是获取某行的数据,可以通过sheet.getRow(rownumber)来获取。

读取任一行的数据。

33-44行的代码是遍历了第一行的所有数据。

46-47行的代码是获取第一行的第一个表格的内容,可以通过row.getCell()来获取某个表格的内容。

以上就是读取Excel中表格内容的代码,很简单明了吧!

2.2使用POI对Excel进行写操作

以下是对Excel进行写操作的代码:

代码的61-66行和读操作是一样是,即获得要写的表格

68行是设置单元格的数据类型,这里有设置的是字符串类型,其他的类型请参考POI的API。

69行是设置单元格的内容

71行是设置单元格为数字类型。

72行是为单元格赋值。

74-76行是将需要写入的内容加载到excel中。

以上就是对单元格的写操作。

2.3创建Sheet

以上的操作都是保证单元格存在的情况下,如果Sheet不存在,首先要创建一个Sheet,然后才能操作。

以下代码是创建一个Sheet的代码:

80行是创建一个HSSFWorkbook

82,83分别创建两个sheet,sheet的Name是newsheet和secondsheet。

84-87行是将根据创建的java对象生成excel文件。

2.4创建Cell

2.3是创建一个sheet,创建一个sheet之后,就需要创建Cell,以下是创建Cell的代码。

以上代码就是创建一个Cell的代码。

94-97行是创建一个Cell。

98-104行是创建Cell并且赋值。

2.5设置Cell的格式

众所周之,Excel表格可以设置表格的各种格式以及字体等等,这些都是可以通过POI的API来实现。

以下代码就是设置单元格格式和字体的样例代码。

113行是创建一个Cell的样式。

114-125行是设置Cell样式的具体内容,例如可以设置表格的时间的格式,设置表格边框的样式,设置背景颜色等等。

126行是将Cell使用设置的样式。

设置字体的代码如下:

以上是设置字体的代码。

其中可以设置字体大小,字体的类型等等。

设置好字体之后将cell的样式设置为设置好的字体,再将样式赋给Cell,这样该Cell的字体就是设置好的字体。

3使用jXLS生成Excel报表

3.1使用excel模板生成报表

jXLS的最大特点就是可以利用模板生成报表,当然POI也可以实现,但是对于报表格式比较的情况来说,POI需要书写大量的代码。

而jXLS是对POI的包装,在支持报表方面有很强的优势,可以节省大量的代码。

下面具体说明。

首先需要设计一个报表的模板,这里举例如下:

这个报表列出一个公司所有的部门,列出部门名称,部门主管的信息,以及部门下所有员工的信息,包括员工姓名,年龄,工资,等等;并自动计算出部门的工资总额等。

因此需要两个Bean,一个是员工信息的Bean,该java类是Employee,一个是部门信息的Bean,该java类是Department。

该两个java见附件。

根据该模板生成报表的代码如下:

66行是excel模板的文件地址。

67行是要生成的报表的Excel文件地址。

68行是初始化部门信息的方法。

具体内容见附件。

70-71行是将部门信息封装到一个Map表中。

72-73行是将部门信息封装写入到模板中,生成报表文件。

生成的报表如下:

3.2根据模板生成图表

使用jXLS还有一个优点就是可以生成图表类型的报表,例如生成柱状图或者是饼状图。

下面是一个Excel的模板:

生成报表的代码如下:

19-20行分别是模板的文件地址和生成的报表的文件地址。

22-29行是初始化一个员工信息的列表的代码。

30-31行是将员工信息列表封装到一个Map中。

32-34行是根据员工信息生成报表的代码。

生成的报表如下图所示:

3.3根据数据库数据生成报表

jXLS还有一个很好的特点是可以直接将数据库的数据生成excel报表。

上图是excel模板。

该报表模板是显示员工信息。

上图是数据库中员工的数据信息。

根据数据库数据生成报表的代码如下:

以上代码是生成报表的代码。

53-54行是模板和输出报表的文件路径。

55行是连接数据库,具体代码省略。

56行是初始化数据库状态。

57行是数据库查询语句。

59-60行是查询结果。

61-62行是将查询结果存放到Map中。

63-64行是将查询结果的数据生成到报表中。

生成的报表如下:

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2