POI详细教程

上传人:nt****6 文档编号:47975907 上传时间:2018-07-07 格式:DOC 页数:35 大小:353.50KB
返回 下载 相关 举报
POI详细教程_第1页
第1页 / 共35页
POI详细教程_第2页
第2页 / 共35页
POI详细教程_第3页
第3页 / 共35页
POI详细教程_第4页
第4页 / 共35页
POI详细教程_第5页
第5页 / 共35页
点击查看更多>>
资源描述

《POI详细教程》由会员分享,可在线阅读,更多相关《POI详细教程(35页珍藏版)》请在金锄头文库上搜索。

1、JAVA 软件工程师教育系列教程1第一章POI 简介-Jakata Poi HSSF:纯 java 的 Excel 解决方案在我们实际的开发中,表现层的解决方案虽然有多样,但是 IE 浏览器已成为最多人使 用的浏览器,因为大家都用 Windows。在企业办公系统中,常常有客户这样子要求:你要 把我们的报表直接用 Excel 打开(电信系统、银行系统)。或者是:我们已经习惯用 Excel 打 印。 Apache 的 Jakata 项目的 POI 子项目,目前比较成熟的是 HSSF 接口,处理 MSExcel 对 象。它不象我们仅仅是用 csv 生成的没有格式的可以由 Excel 转换的东西,而是

2、真正的 Excel 对象,你可以控制一些属性如 sheet,cell 等等。 首先,理解一下一个 Excel 的文件的组织形式,一个 Excel 文件对应于一个 workbook(HSSFWorkbook),一个 workbook 可以有多个 sheet(HSSFSheet)组成, 一个 sheet 是由多个 row(HSSFRow)组成,一个 row 是由多个 cell(HSSFCell)组 成。 POI 可以到 www.apache.org 下载到。实际运行时,需要有 poi 包就可以了。HSSF 提 供给用户使用的对象在 rg.apache.poi.hssf.usermodel 包中,主

3、要部分包括 Excel 对象,样式和 格式,还有辅助操作。有以下几种对象: HSSFWorkbook excel 的文档对象 HSSFSheet excel 的表单 HSSFRow excel 的行 HSSFCell excel 的格子单元 HSSFFont excel 字体 HSSFDataFormat 日期格式 在 poi1.7 中才有以下 2 项: HSSFHeader sheet 头 HSSFFooter sheet 尾(只有打印的时候才能看到效果) 和这个样式 HSSFCellStyle cell 样式 辅助操作包括 HSSFDateUtil 日期 HSSFPrintSetup 打印

4、 HSSFErrorConstants 错误信息表 以下可能需要使用到如下的类 import org.apache.poi.hssf.usermodel.HSSFCell; import org.apache.poi.hssf.usermodel.HSSFCellStyle; import org.apache.poi.hssf.usermodel.HSSFDataFormat; import org.apache.poi.hssf.usermodel.HSSFFont; import org.apache.poi.hssf.usermodel.HSSFRow; import org.apac

5、he.poi.hssf.usermodel.HSSFSheet; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.hssf.util.HSSFColor;JAVA 软件工程师教育系列教程2先看 poi 的 examples 包中提供的最简单的例子,建立一个空 xls 文件。import java.io.FileOutputStream; import java.io.IOException; import org.apache.poi.hssf.usermodel.HSSFWorkbook; pu

6、blic class ExcelSample1 public static void main(String args) throws IOException /创建一个 excel 文件 HSSFWorkbook wb= new HSSFWorkbook(); FileOutputStream fileOut= new FileOutputStream(“c:workbook.xls“); / FileOutputStream fileOut= new FileOutputStream(“c:/workbook.xls“); wb.write(fileOut); fileOut.close(

7、); 通过这个例子,我们在 c 盘下建立的是一个空白的 xls 文件(不是空文件) 。在此基础 上,我们可以进一步看其它的例子。import org.apache.poi.hssf.usermodel.*; import java.io.FileOutputStream; import java.io.IOException; public class CreateCells public static void main(String args) throws IOException HSSFWorkbook wb = new HSSFWorkbook(); /建立新 HSSFWorkboo

8、k 对象 HSSFSheet sheet = wb.createSheet(“new sheet“); /建立新的 sheet 对象 HSSFRow row = sheet.createRow(short)0); /在 sheet 里创建一行,参数为行号(第一行,此处可想象成数组) HSSFCell cell = row.createCell(short)0); /在 row 里建立新 cell(单元格),参数为列号(第一列) cell.setCellvalue(1); /设置 cell 的整数类型的值 row.createCell(short)1).setCellvalue(1.2); /设

9、置 cell 浮点类型的值 row.createCell(short)2).setCellvalue(“test“); /设置 cell 字符类型的值 row.createCell(short)3).setCellvalue(true); /设置 cell 布尔类型的值 HSSFCellStyle cellStyle = wb.createCellStyle(); /建立新的 cell 样式 cellStyle.setDataFormat(HSSFDataFormat. getBuiltinFormat(“m/d/yy h:mm“); /设置 cell 样式为定制的日期格式 HSSFCell

10、dCell =row.createCell(short)4); dCell.setCellvalue(new Date(); /设置 cell 为日期类型的值 dCell.setCellStyle(cellStyle); /设置该 cell 日期的显示格式 HSSFCell csCell =row.createCell(short)5); csCell.setEncoding(HSSFCell.ENCODING_UTF_16); /设置 cell 编码解决中文高位字节截断 csCell.setCellvalue(“中文测试_Chinese Words Test“); /设置中西文结合字符串JA

11、VA 软件工程师教育系列教程3row.createCell(short)6).setCellType(HSSFCell.CELL_TYPE_ERROR); /建立错误 cell FileOutputStream fileOut = new FileOutputStream(“workbook.xls“); wb.write(fileOut); fileOut.close(); 通过这个例子,我们可以清楚的看到 xls 文件从大到小包括了 HSSFWorkbook HSSFSheet HSSFRow HSSFCell 这样几个对象。我们可以在 cell 中设置各种类型的值。尤其要注意的是如果你想

12、正确的显示非欧美的字符时,尤其象中日韩这样的语言,必须 设置编码为 16 位的即是 HSSFCell.ENCODING_UTF_16,才能保证字符的高 8 位不被截断 而引起编码失真形成乱码。其他测试可以通过参考 examples 包中的测试例子掌握 poi 的详细用法,包括字体的设 置,cell 大小和低纹的设置等。需要注意的是 POI 是一个仍然在完善中的公开代码的项目, 所以有些功能正在不断的扩充。 感觉上面的操作比较的繁琐,然后就自己写了一个方法。这个方法不需要事先创建 row 和 cell,直接进行 cteateCell 就可以了,在程序中会自动进行判断,如果不存在的话会 创建。pr

13、ivate static void cteateCell(HSSFWorkbook wb,HSSFRow row,short col,short align,String val) HSSFCell cell = row.createCell(col); cell.setEncoding(HSSFCell.ENCODING_UTF_16); cell.setCellValue(val); HSSFCellStyle cellstyle = wb.createCellStyle(); cellstyle.setAlignment(align); cell.setCellStyle(cellsty

14、le); 对里面的几个参数的说明: short col 应该是你的 cell 单元格的位置也就是列号; short align 应该是你的对齐方式; String val 应该是你单元格里面要添加的值; 具体的调用如下:HSSFRow row = sheet.createRow(short)1); cteateCell(wb,row,(short)0,HSSFCellStyle.ALIGN_CENTER_SELECTION,“SampleID“);在上边的例子里我们看到了要设置一个单元格里面信息的格式(例如,要将信息居中)设 置的操作如下:HSSFCellStyle cellstyle = w

15、b.createCellStyle(); cellstyle.setAlignment(HSSFCellStyle.ALIGN_CENTER_SELECTION); cell.setCellStyle(cellstyle);还有我们我们经常会用到的合并单元格,在这里我们也有这样的操作,代码如下:sheet.addMergedRegion(new Region(1,(short)1,2,(short)4);JAVA 软件工程师教育系列教程4这里面我们还要介绍一个经常会遇到的问题,就是怎么来冻结一个窗口。poi 也为我们集成 了这样的事情了。代码如下:sheet.createFreezePane(

16、1,2);在这里我们需要注意的是 一、该方法是在一个具体的 sheet 里面来进行操作。 二、方法 createFreezepane;有 2 个参数。前一个参数代表列;后一个参数代表行。 上边的代码对应的 excel 文件如下:我么在画面上看到了明显的两条黑线,这就是冻结的窗口。 然后我们来看一个完整的 STRUTS 的小例子,在这个例子里面我们要做的事情是要模拟移 动公司的网上营业厅里面的一个功能,我们要把一个客户当月的通话记录和各种信息查询 出来,并且生成一张 excel 报表。首先,我们来看一下网上效果的截图。JAVA 软件工程师教育系列教程5然后就是我们具体的代码实现了。 struts-config.xmlindex.jspJAVA 软件工程师教育系列教程6欢迎进入 POI-Exc

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 商业/管理/HR > 其它文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号