1.Apache POI简介
Apache POI是Apache软件基金会的开放源码函式库,官方名称为:Apache POI - the Java API for Microsoft Documents,POI提供API给Java程序对Microsoft Office格式文档读和写的功能。 .NET的开发人员则可以利用NPOI (POI for .NET) 来存取 POI 的功能。
2.Apache POI结构
HSSF - 提供读写Microsoft Excel XLS格式档案的功能。 XSSF - 提供读写Microsoft Excel OOXML XLSX格式档案的功能。 HWPF - 提供读写Microsoft Word DOC格式档案的功能。 HSLF - 提供读写Microsoft PowerPoint格式档案的功能。 HDGF - 提供读Microsoft Visio格式档案的功能。 HPBF - 提供读Microsoft Publisher格式档案的功能。 HSMF - 提供读Microsoft Outlook格式档案的功能。
3.Apache POI应用实例:
首先需要从阿帕奇官网下载poi的jar文件; 配置完jar文件之后,就可以运行下面的实例了 这里仅用读写Excel表格的简单例子演示:
import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.hssf.usermodel.HSSFSheet; import org.apache.poi.hssf.usermodel.HSSFRow; import org.apache.poi.hssf.usermodel.HSSFCell; import java.io.FileInputStream; import java .io.FileOutputStream; public class CreateExcel { /* Excel 文件要存放的位置:D盘*/ public static String outputFile="D:\\test.xls"; public static void main(String argv[]) { readSheet(); } //演示如何利用Jakarta POI API 创建Excel 文档。 public static void createSheet() { try{ // 创建新的Excel 工作簿 HSSFWorkbook workbook = new HSSFWorkbook(); //如要新建一名为"效益指标"的工作表,其语句为: HSSFSheet sheet = workbook.createSheet("效益指标"); // 在Excel工作簿中建一工作表,其名为缺省值, //HSSFSheet sheet = workbook.createSheet(); // 在索引0的位置创建行(最顶端的行) HSSFRow row = sheet.createRow(0); //在索引0的位置创建单元格(左上端) HSSFCell cell =row.createCell(0); // 定义单元格为字符串类型 cell.setCellType(HSSFCell.CELL_TYPE_STRING); // 在单元格中输入一些内容 cell.setCellValue("增加值"); // 新建一输出文件流 FileOutputStream fOut = new FileOutputStream(outputFile); // 把相应的Excel 工作簿存盘 workbook.write(fOut); fOut.flush(); // 操作结束,关闭文件 fOut.close(); System.out.println("生成文件..........."); } catch(Exception e) { System.out.println("!!!!!!" + e.getMessage()); } } //演示如何读取Excel文档中的数据 public static void readSheet() { try{ // 创建对Excel工作簿文件的引用 HSSFWorkbook workbook = new HSSFWorkbook(new FileInputStream(outputFile)); // 创建对工作表的引用。 // 本例是按名引用 HSSFSheet sheet = workbook.getSheet("效益指标"); // 也可用getSheetAt(int index)按索引引用, // 在Excel文档中,第一张工作表的缺省索引是0, // 其语句为:HSSFSheet sheet = workbook.getSheetAt(0); // 读取左上端单元 HSSFRow row = sheet.getRow(0); HSSFCell cell = row.getCell(0); // 输出单元内容,cell.getStringCellValue()就是取所在单元的值 System.out.println("左上端单元是: " + cell.getStringCellValue()); } catch(Exception e) { System.out.println("!!!! " + e ); } } }