1.1.1. 简介 Apache POI
使用Apache POI 完成Excel读写操作
Apache POI 是用Java编写的免费开源的跨平台的 Java API,Apache POI提供API给Java程式对Microsoft Office格式档案读和写的功能。
http://poi.apache.org/ 下载POI的jar包 ,包括以下内容
Excel 2003之前 xls 格式文件, Excel2007 文件格式 xlsx ,如果解析Excel,先分清Excel文件版本 ,如果2003之前, 使用HSSF API进行解析 、 如果 2007 Excel 使用 XSSF 进行解析
今天重点学习: HSSF 的 Excel解析 (针对Excel 2003 之前版本 )
下载 POI 3.9 的jar 包,完成Excel 读写操作
docs POI使用文档 (javadoc文档、 规范文档)
学习API : 推荐 POI3.5_HSSF_和XSSF_Excel操作快速入门手册.pdf
lib :相关jar包
ooxml-lib : 解析2007 Office版本文件jar 包
开发POI 最简单方式,导入 poi-3.9-20121203.jar 一个jar包就可以了
1.1.2.使用POI 读写Excel
参考: “POI整理.doc” 进行企业开发
编写代码,完成Excel解析和生成
解析步骤:
Excel文件 ---- HSSFWorkbook 工作薄对象 ---- Sheet --- Row 行--- Cell 单元格
解析时要注意,如果Excel单元格的数据,使用numeric 格式保存,不能使用 getStringCellValue 进行读取 , 使用 getNumericCellValue 进行读取
可以在Excel 设置单元格 数据保存格式 为文本类型,使用 getStringCellValue 进行读取
读取一个Excel文件
// 1、 获得 HSSFWorkbook (针对 xls格式文件 ) HSSFWorkbook hssfWorkbook = new HSSFWorkbook(new FileInputStream("info.xls")); // 2、获得要解析sheet HSSFSheet sheet = hssfWorkbook.getSheet("Sheet1"); // 通过名称获得Sheet HSSFSheet sheet2 = hssfWorkbook.getSheetAt(0);// 获得第一个Sheet,通过下标获得 // 3、解析Sheet中每一行 for (Row row : sheet) { // 遍历 sheet中每一行 // 4、 打印行 中单元格数据 for (Cell cell : row) { // 判断单元格数据类型 if (cell.getCellType() == Cell.CELL_TYPE_STRING) { System.out.println(cell.getStringCellValue()); } else if (cell.getCellType() == Cell.CELL_TYPE_NUMERIC) { System.out.println(cell.getNumericCellValue()); } } // 打印指定单元格的值 System.out.println(row.getCell(1).getStringCellValue());// 打印每行第二个单元格的内容 }
生成一个Excel文件 :
// 写Workbook 工作薄 --- 写Sheet --- 写Row 行 --- 写Cell 单元格 // 1、 创建 一个空的工作薄 HSSFWorkbook hssfWorkbook = new HSSFWorkbook(); // 2、 在工作薄建立 Sheet HSSFSheet sheet = hssfWorkbook.createSheet("数据信息"); // 3、 向sheet写入行数据 HSSFRow row = sheet.createRow(0);// 创建第一行数据 // 4、 向row中单元格进行数据输出 row.createCell(0).setCellValue("产品"); row.createCell(1).setCellValue("价格"); // 5、 将Excel 数据输出到硬盘上 hssfWorkbook.write(new FileOutputStream("c:/test.xls"));