Apache POI

 
简介:
Apache POI 是用Java编写的免费开源的跨平台的 Java API,Apache POI提供API给Java程式对Microsoft Office格式档案读和写的功能。POI为“Poor Obfuscation Implementation”的首字母缩写,意为“可怜的模糊实现”。
Apache POI 是创建和维护操作各种符合Office Open XML(OOXML)标准和微软的OLE 2复合文档格式(OLE2)的Java API。用它可以使用Java读取和创建,修改MS Excel文件.而且,还可以使用Java读取和创建MS Word和MSPowerPoint文件。Apache POI 提供Java操作Excel解决方案(适用于Excel97-2008)。
 
HSSF概况
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格式档案的功能。
 
 
从Apache网站上下载POI的相关jar包。
 

jar包简单概括
poi-version-yyyymmdd.jar

用于操作.xls文件;依赖于commons-logging, commons-codec, log4j;

poi-scratchpad-version-yyyymmdd.jar

用于操作.ppt、.doc、.vsd、.pub、.msg文件;依赖于poi;

poi-ooxml-version-yyyymmdd.jar、poi-ooxml-schemas-version-yyyymmdd.jar

用于操作.xlsx、.pptx、docx文件;依赖于poi, dom4j,xmlbeans, stax-api-1.0.1;操作Excel主要是指ss包、xssf包;

也就是目录lib下面是poi依赖的jar包,目录ooxml-lib下面是poi-ooxml依赖的jar包; 

 

组件 APIs
Excel (SS=HSSF+XSSF)
Word (HWPF+XWPF)
PowerPoint (HSLF+XSLF)
OpenXML4J (OOXML)
OLE2 Filesystem (POIFS)
OLE2 Document Props (HPSF)
Outlook (HSMF)
Visio (HDGF)
Publisher (HPBF)

 

API下载:http://poi.apache.org/

组件参考:http://poi.apache.org/overview.html

doc参考:http://poi.apache.org/apidocs/index.html

maven中央仓库搜索:http://search.maven.org/

 

pom.xml设置:
<dependency>
 <groupId>org.apache.poi</groupId>
 <artifactId>poi</artifactId>
 <version>${poi.version}</version>
<exclusions>
<exclusion>
    <groupId>commons-logging</groupId>
    <artifactId>commons-logging</artifactId>
</exclusion>
<exclusion>
    <groupId>log4j</groupId>
    <artifactId>log4j</artifactId>
</exclusion>
 <exclusion>
    <groupId>commons-codec</groupId>
    <artifactId>commons-codec</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
 <groupId>org.apache.poi</groupId>
 <artifactId>poi-scratchpad</artifactId>
 <version>${poi.version}</version>
</dependency>
<dependency>
 <groupId>org.apache.poi</groupId>
 <artifactId>ooxml-schemas</artifactId>
 <version>${poi.version}</version>
 <exclusions>
  <exclusion>
 <groupId>stax</groupId>
 <artifactId>stax-api</artifactId>
    </exclusion>
    <exclusion>
 <groupId>org.apache.xmlbeans</groupId>
 <artifactId>xmlbeans</artifactId>
    </exclusion>
</exclusions>
</dependency>
<dependency>
 <groupId>org.apache.poi</groupId>
 <artifactId>poi-ooxml</artifactId>
 <version>${poi.version}</version>
 <exclusions>
<exclusion>
    <groupId>dom4j</groupId>
    <artifactId>dom4j</artifactId>
</exclusion>
</exclusions>
</dependency>

 

POI EXCEL文档结构类
HSSFWorkbook excel文档对象
HSSFSheet excel的sheet
HSSFRow excel的行
HSSFCell excel的单元格
HSSFFont excel字体
HSSFName 名称
HSSFDataFormat 日期格式
HSSFHeader sheet头
HSSFFooter sheet尾
HSSFCellStyle cell样式
HSSFDateUtil 日期
HSSFPrintSetup 打印
HSSFErrorConstants 错误信息表

 

创建Excel 文档

示例1将演示如何利用Jakarta POI API 创建Excel 文档。

示例1程序如下:

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 javaioFileOutputStream;

public class CreateXL {

public static String outputFile="D:\\test.xls";

public static void main(String argv[]){

try{

// 创建新的Excel 工作簿

HSSFWorkbook workbook = new HSSFWorkbook();

// 在Excel工作簿中建一工作表,其名为缺省值

// 如要新建一名为"效益指标"的工作表,其语句为:

// HSSFSheet sheet = workbook.createSheet("效益指标");

HSSFSheet sheet = workbook.createSheet();

// 在索引0的位置创建行(最顶端的行)

HSSFRow row = sheet.createRow((short)0);

//在索引0的位置创建单元格(左上端)

HSSFCell cell = row.createCell((short) 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("已运行 xlCreate() : " + e );

}

}

}

读取Excel文档中的数据

示例2将演示如何读取Excel文档中的数据。假定在D盘JTest目录下有一个文件名为test1.xls的Excel文件。

示例2程序如下:

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 javaioFileOutputStream;

public class ReadXL {

public static String fileToBeRead="D:\\test1.xls";

public static void main(String argv[]){

try{

// 创建对Excel工作簿文件的引用

HSSFWorkbook workbook = new HSSFWorkbook(newFileInputStream(fileToBeRead));

// 创建对工作表的引用。

// 本例是按名引用(让我们假定那张表有着缺省名"Sheet1")

HSSFSheet sheet = workbook.getSheet("Sheet1");

// 也可用getSheetAt(int index)按索引引用,

// 在Excel文档中,第一张工作表的缺省索引是0,

// 其语句为:HSSFSheet sheet = workbook.getSheetAt(0);

// 读取左上端单元

HSSFRow row = sheet.getRow(0);

HSSFCell cell = row.getCell((short)0);

// 输出单元内容,cell.getStringCellValue()就是取所在单元的值

System.out.println("左上端单元是: " + cell.getStringCellValue());

}catch(Exception e) {

System.out.println("已运行xlRead() : " + e );

}

}

}

设置单元格格式

在这里,我们将只介绍一些和格式设置有关的语句,我们假定workbook就是对一个工作簿的引用。在Java中,第一步要做的就是创建和设置字体和单元格的格式,然后再应用这些格式:

1、创建字体,设置其为红色、粗体:

HSSFFont font = workbook.createFont();

font.setColor(HSSFFont.COLOR_RED);

font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);

2、创建格式

HSSFCellStyle cellStyle= workbook.createCellStyle();

cellStyle.setFont(font);

3、应用格式

HSSFCell cell = row.createCell((short) 0);

cell.setCellStyle(cellStyle);

cell.setCellType(HSSFCell.CELL_TYPE_STRING);

cell.setCellValue("标题 ");

处理WORD文档

import javaio*;

import org.textmining.text.extraction.WordExtractor;

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;

public class TestPoi {

public TestPoi() {

}

public static void main(String args[]) throws Exception

{

FileInputStream in = new FileInputStream ("D:\\a.doc");

WordExtractor extractor = new WordExtractor();

String str = extractor.extractText(in);

//System.out.println("the result length is"+str.length());

System.out.println(str);

}

}

 

 

 

项目中实际应用代码:

 

 for (int i = 0; i < docInfoList.size(); i++) {
    DocInfo docInfo = docInfoList.get(i);
    String result = null;
    String savePath = loadStartData.getBaseUrl();
    savePath += loadStartData.getKindeditorFilePath();
    File file = new File(savePath+docInfo.getDocId()+".doc");
    System.out.println(file.getAbsolutePath());
    if(file.exists()){
     FileInputStream fis = new FileInputStream(file);
     WordExtractor wordExtractor = new WordExtractor(fis);
     result = wordExtractor.getText();
     docInfoList.get(i).setDocText(result);
    }
    
   }

 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值