在平常应用程序中,对officepdf文档进行读取数据是比较常见的功能,尤其在很多web应用程序中。所以今天我们就简单来看一下javawordexcelpdf文件的读取。我列出了一些关于操作OFFICE的简单方法,其中对office软件,poi在处理2003及以下和2007及以上的方法上有些区别,此处只列举了poi对处理word 03 和word 07版本的方法。附件是poi的完整版JAR包。


1. 引用POI包读取word文档内容

import java.io.File;    

import java.io.FileInputStream;    

import org.apache.poi.hwpf.HWPFDocument;    

import org.apache.poi.hwpf.usermodel.Range;    


publicclass DocFile{    



@Override

public String getContent(File f) throws Exception {    

       FileInputStream fis = new FileInputStream(f);    

       HWPFDocument doc = new HWPFDocument(fis);    

       Range rang = doc.getRange();    

       String text = rang.text();    

       fis.close();    

return text;    

   }    

import java.io.File;   
import java.io.FileInputStream;   
import org.apache.poi.hwpf.HWPFDocument;   
import org.apache.poi.hwpf.usermodel.Range;   

 
public class DocFile{   


    @Override 
    public String getContent(File f) throws Exception {   
        FileInputStream fis = new FileInputStream(f);   
        HWPFDocument doc = new HWPFDocument(fis);   
        Range rang = doc.getRange();   
        String text = rang.text();   
        fis.close();   
        return text;   

   }  


POI操作word 2007 的方法:


package com;


import org.apache.poi.POIXMLDocument;

import org.apache.poi.POIXMLTextExtractor;

import org.apache.poi.openxml4j.opc.OPCPackage;


import org.apache.poi.xwpf.extractor.XWPFWordExtractor;

/**

*

* @author liyakun

*

*/

public class TestPoi {


public static String readDoc(String docpath) throws Exception{  

        OPCPackage opcPackage = POIXMLDocument.openPackage(docpath);  

        POIXMLTextExtractor extractor = new XWPFWordExtractor(opcPackage);  

               /* XWPFDocument xwpfd = new XWPFDocument(opcPackage);

                POIXMLTextExtractor extractor=new XWPFWordExtractor(xwpfd);*/

        String doctext=extractor.getText();  

        return doctext;  

   }

public static void main(String[] args){

try {

String test=readDoc("D:\\iPhone也没能逆袭经济规律 市场份额下跌.docx");

System.out.print(test);

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}


}





2.引用jxl包读取excel文档的内容



[java]view plaincopyprint?

import java.io.File;    

import java.io.FileInputStream;    

import jxl.Cell;    

import jxl.Sheet;    

import jxl.Workbook;    



publicclass XlsFile{    


@Override

public String getContent(File f) throws Exception {    

//构建Workbook对象, 只读Workbook对象

//直接从本地文件创建Workbook

//从输入流创建Workbook


      FileInputStream fis = new FileInputStream(f);    

       StringBuilder sb = new StringBuilder();    

       jxl.Workbook rwb = Workbook.getWorkbook(fis);    

//一旦创建了Workbook,我们就可以通过它来访问

//Excel Sheet的数组集合(术语:工作表),

//也可以调用getsheet方法获取指定的工资表

       Sheet[] sheet = rwb.getSheets();    

for (int i = 0; i < sheet.length; i++) {    

           Sheet rs = rwb.getSheet(i);    

for (int j = 0; j < rs.getRows(); j++) {    

              Cell[] cells = rs.getRow(j);    

for(int k=0;k<cells.length;k++)    

              sb.append(cells[k].getContents());    

           }    

       }    

       fis.close();    

return sb.toString();    

   }    


}  

import java.io.File;   
import java.io.FileInputStream;   
import jxl.Cell;   
import jxl.Sheet;   
import jxl.Workbook;   


public class XlsFile{   

    @Override   
    public String getContent(File f) throws Exception {   
     //构建Workbook对象, 只读Workbook对象
     //直接从本地文件创建Workbook
      //从输入流创建Workbook

        FileInputStream fis = new FileInputStream(f);   
        StringBuilder sb = new StringBuilder();   
        jxl.Workbook rwb = Workbook.getWorkbook(fis);   
//一旦创建了Workbook,我们就可以通过它来访问
//Excel Sheet的数组集合(术语:工作表),
//也可以调用getsheet方法获取指定的工资表
        Sheet[] sheet = rwb.getSheets();   
        for (int i = 0; i < sheet.length; i++) {   
            Sheet rs = rwb.getSheet(i);   
            for (int j = 0; j < rs.getRows(); j++) {   
               Cell[] cells = rs.getRow(j);   
               for(int k=0;k<cells.length;k++)   
               sb.append(cells[k].getContents());   
            }   
        }   
        fis.close();   
        return sb.toString();   
    }   

}




由上面代码我们可知:一旦得到了Sheet,我们就可以通过它来访问Excel Cell(术语:单元格)。参考下面的代码片段:
//获取第一行,第一列的值
Cell c00 = rs.getCell(0, 0);
String strc00 = c00.getContents();
//获取第一行,第二列的值
Cell c10 = rs.getCell(1, 0);
String strc10 = c10.getContents();
当你完成对Excel电子表格数据的处理后,一定要使用close()方法来关闭先前创建的对象,以释放读取数据表的过程中所占用的内存空间,在读取大量数据时显得尤为重要。


3.引用PDFBox读取pdf文档的内容

import java.io.File;    

import java.io.FileInputStream;    

import org.pdfbox.pdfparser.PDFParser;    

import org.pdfbox.pdmodel.PDDocument;    

import org.pdfbox.util.PDFTextStripper;    



public class PdfFile{    


public String getContent(File f) throws Exception {    

       FileInputStream fis = new FileInputStream(f);    

       PDFParser p = new PDFParser(fis);    

       p.parse();    

       PDDocument pdd = p.getPDDocument();    

       PDFTextStripper ts = new PDFTextStripper();    

       String c = ts.getText(pdd);    

       pdd.close();    

       fis.close();    

return c;    

   }    

}