使用Apache开源POI和jXLS两种API生成报表.doc_第1页
使用Apache开源POI和jXLS两种API生成报表.doc_第2页
使用Apache开源POI和jXLS两种API生成报表.doc_第3页
使用Apache开源POI和jXLS两种API生成报表.doc_第4页
使用Apache开源POI和jXLS两种API生成报表.doc_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

使用Apache开源POI和jXLS两种API生成报表 编 写 人:杜航航 编写时间:2011/1/28目 录1 引言32 使用POI对Excel进行读写42.1 POI读取excel文件的内容42.2 使用POI对Excel进行写操作62.3 创建Sheet62.4 创建Cell72.5 设置Cell的格式73 使用jXLS生成Excel报表83.1 使用excel模板生成报表83.2 根据模板生成图表93.3 根据数据库数据生成报表111 引言在电信领域,生成报表是日常工作中必不可少的一项任务。提供报表的方式也是多种多样,例如使用BO来生成报表,使用eclipse的插件来做报表。但是有些时候,需要我们自已来开发报表。这就是要借助于报表操作的API来完成。可以通过API直接将数据读写如报表文件,也可以根据模板来生成报表。根据这个需要,我研究了一下操作报表的两种API,一种Apache的开源项目POI,POI是针对微软OFFICE文档的一种JAVA API,使用该API可以实现对微软的OFFICE文档的各种操作。其中使用最广泛的是对MS word,excel,PPT的操作。不仅仅支持windows 2003的office文档还支持windows 2007的office文档。例如:HSSF is the POI Projects pure Java implementation of the Excel 97(-2007) file format. XSSF is the POI Projects pure Java implementation of the Excel 2007 OOXML (.xlsx) file format.HSSF and XSSF provides ways to read spreadsheets create, modify, read and write XLS spreadsheets. They provide: low level structures for those with special needs an eventmodel api for efficient read-only access a full usermodel api for creating, reading and modifying XLS files再随后的例子中,我也将以操作Excel作为例子,使用HSSF操作Excel 97(-2007)。POI这个开源项目的特点是直接对Excel的每个sheet或者是每个Row,或者是每个Cell操作。API的优点是简单易懂,容易上手。对于复杂表格的操作比较繁琐,并且不方便生成各种饼状图和柱状图等等。另外一个API是jXLS。jXLS是一个专门针对excel的API,并不支持word或者是PPT。它是在POI的基础上进一步的包装,是一个更加优秀的开源项目。当前最新的版本是jXLS 1.0。jXLS1.0新增的特性是对excel 2007的支持。jXLS最大的特点用一句话概况就是:jXLS is a small and easy-to-use Java library for writing Excel files using XLS templates and reading data from Excel into Java objects using XML configuration.。Excel generation is required in many Java applications that have some kind of reporting functionality. The most complete library to manipulate XLS files from Java is Apache POI library. The problems appear when it is required to create a lot of custom and complex Excel reports with rich formatting and enhanced functionality.jXLS的特性包括:Using SQL queries directly in XLS templates Simple property access notation Full expression language support Complex object graph export Flexible collection export Flow-Control Tags support Dynamic grouping of data Export of a single collection into multiple worksheets Adjacent tables support! Complex formulas support Charts, Macros and many other Excel features in XLS template Dynamic Outlines Dynamic Columns Hiding Dynamic Cell Style processing through custom Processors JDBC ResultSet export Merged Cells support Multiple bean properties in a single cell Reading XLS files 使用POI可以去Apache的网站下载最新的POI版本,网址是:使用jXLS可以去sourceforge的网站下载最新版本,网址是:/2 使用POI对Excel进行读写2.1 POI读取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行是创建一个HSSFWorkbook82,83分别创建两个sheet,sheet的Name是new sheet和second sheet。84-87行是将根据创建的java对象生成excel文件。2.4 创建Cell2.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 根据数据库数据生成

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论