现在的位置: 首页 > 综合 > 正文

POI概述及简单举例

2014年02月26日 ⁄ 综合 ⁄ 共 2869字 ⁄ 字号 评论关闭

 Apache POI 是创建和维护操作各种符合Office Open XMLOOXML)标准和微软的OLE 2复合文档格式(OLE2)的Java AP。简单来讲,我们可以利用POI操作绝大多数微软的office产品。POI项目组件构成如下图所示。

 

    

 

简单解释如下:
HSSF(XSSF) - 提供读写Microsoft Excel XLS(XLSX)格式档案的功能。
HWPF(XWPF) - 提供读写Microsoft Word DOC(docx)格式档案的功能。
HSLF和XSLF - 提供读写Microsoft PowerPoint格式档案的功能。
HDGF - 提供读Microsoft Visio格式档案的功能。
HPBF - 提供读Microsoft Publisher格式档案的功能。
HSMF - 提供读Microsoft Outlook格式档案的功能。

上文可以看出POI提供了对Microsoft办公软件的操作接口,目前对excel、word、powerpoint的支持更加完善,可以读写这些文档,而对于其他应用仅提供了读取信息的功能。下面以操作excel为例简单介绍下POI的使用。

 

使用POI操作不同OFFICE应用用到的POI组件不同,从而引用的jar包也不一样。例如我们仅利用HSSF来建立excel文件,则我们只需要进入POI.jar,在此例中引入的是poi-3.8-20120326.jar。
创建excel首先要获取到Workbook。Workbook可以直接通过输出流(OutputStream)输出到指定位置。例如我们需要在C盘创建一个text.xls文件,则可以利用Workbook和FileOutputStream来做到。

import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Workbook;

	public static void main(String[] args){
		try {
			FileOutputStream out = new FileOutputStream("c:\\test.xls");
			Workbook wb = new HSSFWorkbook();
			wb.write(out);
			out.close();
		} catch (FileNotFoundException e1) {
			e1.printStackTrace();
		}catch (IOException e) {
			e.printStackTrace();
		}	
}

       此时创建的excel文件虽然可以打开,但实际上其为空的excel应用程序,打开会发生错误,随即修复为带有一个sheet的文件。我们需要为之工作簿添加sheetWorkbook接口能够创建出sheet,且新创建的sheet会自动被添加到Workbook队列中,且能为sheet命名。在工作簿中有了两页表格,我们可以为之添加数据、设置样式等等。值得注意的是我们在sheet中创建的行(row)或者单元格(cell)仅当为其设置了内容,才会自动增加到sheet上。

import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Font;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.CellStyle;

public class TestHSSF {
	public static void main(String[] args){
		// create a new file
		FileOutputStream out;
		try {
			out = new FileOutputStream("c:\\test.xls");
			Workbook wb = new HSSFWorkbook();
			
			//创建sheet
			Sheet s1 = wb.createSheet();
			Sheet s2 = wb.createSheet();
			
			//命名sheet
			wb.setSheetName(0, "第一个sheet" );
			wb.setSheetName(1, "第二个sheet" );
			
			//创建行
			Row r = s1.createRow(30);
			//设置行高
			r.setHeight((short)1132);
			
			//创建单元格
			Cell c = r.createCell(3);
			
			//创建样式,设置字体颜色、设置为粗体、设置底边框宽度等等
			CellStyle cs = wb.createCellStyle();
			cs.setBorderBottom((short)2);
			
			Font f = wb.createFont();
			f.setFontHeightInPoints((short) 18);
			f.setColor( (short)0xc );
			f.setBoldweight(Font.BOLDWEIGHT_BOLD);
			
			cs.setFont(f);
			
			//设置单元格为样式cs
			c.setCellStyle(cs);
			//设置单元格值
			c.setCellValue("测试");
			
			wb.write(out);
			out.close();
		} catch (FileNotFoundException e1) {
			// TODO Auto-generated catch block
			e1.printStackTrace();
		}catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}

      

       本文概括陈述了POI的组件构成,及其主要作用,使我们了解到在工程中可以利用POI来操作office应用,同时略举了一个简单例子说明Workbook(能够创建CellStyleFontSheet)、CellStyleFontSheet(能够创建RowCell)、RowCell的关系,进而了解HSSF组件的简单使用。

 

 

 

 

 

 

扩展阅读:

OLEOCXActiveX控件之间的比较

http://www.cnblogs.com/olawonzhu/articles/1683424.html

 

抱歉!评论已关闭.