java读取word,excel和pdf文档内容

在平常应用程序中,对officepdf文档进行读取数据是比较常见的功能,尤其在很多web应用程序中。所以今天我们就简单来看一下javawordexcelpdf文件的读取。本篇博客只是讲解简单应用。如果想深入了解原理。请读者自行研究一些相关源码。

首先我们来认识一下读取相关文档的jar包:


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

poi.jar 下载地址

http://apache.freelamp.com/poi/release/bin/poi-bin-3.6-20091214.zip
http://apache.etoak.com/poi/release/bin/poi-bin-3.6-20091214.zip
http://labs.renren.com/apache-mirror/poi/release/bin/poi-bin-3.6-20091214.zip


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

Jxl.jar下载地址

http://nchc.dl.sourceforge.net/project/jexcelapi/CSharpJExcel/CSharpJExcel.zip


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

Pdfbox.jar下载地址

http://labs.renren.com/apache-mirror/pdfbox/1.1.0/pdfbox-1.1.0.jar
http://apache.etoak.com/pdfbox/1.1.0/pdfbox-1.1.0.jar
http://apache.freelamp.com/pdfbox/1.1.0/pdfbox-1.1.0.jar

Fontbox.jar下载地址

http://apache.etoak.com/pdfbox/1.1.0/fontbox-1.1.0.jar
http://labs.renren.com/apache-mirror/pdfbox/1.1.0/fontbox-1.1.0.jar
http://apache.freelamp.com/pdfbox/1.1.0/fontbox-1.1.0.jar

Jempbox.jar下载地址

http://labs.renren.com/apache-mirror/pdfbox/1.1.0/jempbox-1.1.0.jar
http://apache.etoak.com/pdfbox/1.1.0/jempbox-1.1.0.jar
http://apache.freelamp.com/pdfbox/1.1.0/jempbox-1.1.0.jar

下面我们就来简单看一下这些jar包的对文档的读取的应用实例:

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

  1. import java.io.File;
  2. import java.io.FileInputStream;
  3. import org.apache.poi.hwpf.HWPFDocument;
  4. import org.apache.poi.hwpf.usermodel.Range;
  5. /**
  6. *
  7. * @author 曹胜欢
  8. */
  9. public class DocFile{
  10. @Override
  11. public String getContent(File f) throws Exception {
  12. FileInputStream fis = new FileInputStream(f);
  13. HWPFDocument doc = new HWPFDocument(fis);
  14. Range rang = doc.getRange();
  15. String text = rang.text();
  16. fis.close();
  17. return text;
  18. }
import java.io.File;   
import java.io.FileInputStream;   
import org.apache.poi.hwpf.HWPFDocument;   
import org.apache.poi.hwpf.usermodel.Range;   

/** 
* 
* @author 曹胜欢
*/ 
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;   
    }   



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


  1. import java.io.File;
  2. import java.io.FileInputStream;
  3. import jxl.Cell;
  4. import jxl.Sheet;
  5. import jxl.Workbook;
  6. /**
  7. *
  8. * @author 曹胜欢
  9. */
  10. public class XlsFile{
  11. @Override
  12. public String getContent(File f) throws Exception {
  13. //构建Workbook对象, 只读Workbook对象
  14. //直接从本地文件创建Workbook
  15. //从输入流创建Workbook
  16. FileInputStream fis = new FileInputStream(f);
  17. StringBuilder sb = new StringBuilder();
  18. jxl.Workbook rwb = Workbook.getWorkbook(fis);
  19. //一旦创建了Workbook,我们就可以通过它来访问
  20. //Excel Sheet的数组集合(术语:工作表),
  21. //也可以调用getsheet方法获取指定的工资表
  22. Sheet[] sheet = rwb.getSheets();
  23. for (int i = 0; i < sheet.length; i++) {
  24. Sheet rs = rwb.getSheet(i);
  25. for (int j = 0; j < rs.getRows(); j++) {
  26. Cell[] cells = rs.getRow(j);
  27. for(int k=0;k<cells.length;k++)
  28. sb.append(cells[k].getContents());
  29. }
  30. }
  31. fis.close();
  32. return sb.toString();
  33. }
  34. }
import java.io.File;   
import java.io.FileInputStream;   
import jxl.Cell;   
import jxl.Sheet;   
import jxl.Workbook;   

/** 
* 
* @author 曹胜欢
*/ 
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文档的内容


  1. import java.io.File;
  2. import java.io.FileInputStream;
  3. import org.pdfbox.pdfparser.PDFParser;
  4. import org.pdfbox.pdmodel.PDDocument;
  5. import org.pdfbox.util.PDFTextStripper;
  6. /**
  7. *
  8. * @author 曹胜欢
  9. */
  10. <PRE class=java name="code">public class PdfFile{
  11. public String getContent(File f) throws Exception {
  12. FileInputStream fis = new FileInputStream(f);
  13. PDFParser p = new PDFParser(fis);
  14. p.parse();
  15. PDDocument pdd = p.getPDDocument();
  16. PDFTextStripper ts = new PDFTextStripper();
  17. String c = ts.getText(pdd);
  18. pdd.close();
  19. fis.close();
  20. return c;
  21. }
  22. }</PRE><BR>
import java.io.File;   
import java.io.FileInputStream;   
import org.pdfbox.pdfparser.PDFParser;   
import org.pdfbox.pdmodel.PDDocument;   
import org.pdfbox.util.PDFTextStripper;   

/** 
* 
* @author 曹胜欢
*/ 
<div class="dp-highlighter bg_java" sizcache="28" sizset="68"><div class="bar" sizcache="28" sizset="68"><div class="tools" sizcache="28" sizset="68"><strong>[java]</strong> <a target=_blank class="ViewSource" title="view plain" href="http://blog.csdn.net/csh624366188/article/details/8161122#">view plain</a><a target=_blank class="CopyToClipboard" title="copy" href="http://blog.csdn.net/csh624366188/article/details/8161122#">copy</a><a target=_blank class="PrintSource" title="print" href="http://blog.csdn.net/csh624366188/article/details/8161122#">print</a><a target=_blank class="About" title="?" href="http://blog.csdn.net/csh624366188/article/details/8161122#">?</a></div></div><ol class="dp-j"><li class="alt"><span><span class="keyword">public</span><span> </span><span class="keyword">class</span><span> PdfFile{     </span></span></li><li><span>  </span></li><li class="alt"><span>    </span><span class="keyword">public</span><span> String getContent(File f) </span><span class="keyword">throws</span><span> Exception {     </span></li><li><span>        FileInputStream fis = </span><span class="keyword">new</span><span> FileInputStream(f);     </span></li><li class="alt"><span>        PDFParser p = </span><span class="keyword">new</span><span> PDFParser(fis);     </span></li><li><span>        p.parse();     </span></li><li class="alt"><span>        PDDocument pdd = p.getPDDocument();     </span></li><li><span>        PDFTextStripper ts = </span><span class="keyword">new</span><span> PDFTextStripper();     </span></li><li class="alt"><span>        String c = ts.getText(pdd);     </span></li><li><span>        pdd.close();     </span></li><li class="alt"><span>        fis.close();     </span></li><li><span>        </span><span class="keyword">return</span><span> c;     </span></li><li class="alt"><span>    }     </span></li><li><span>}  </span></li></ol></div><pre style="DISPLAY: none" class="java" name="code">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;   
    }   
}


                
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值