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

本文介绍如何使用Java读取Word、Excel和PDF文档的内容。通过使用POI、JXL及PDFBox等库,实现了对不同格式文档的解析。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在平常应用程序中,对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文档内容

[java]  view plain  copy
  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.  
  8. * @author 曹胜欢 
  9. */   
  10. public class DocFile{     
  11.   
  12.   
  13.     @Override   
  14.     public String getContent(File f) throws Exception {     
  15.         FileInputStream fis = new FileInputStream(f);     
  16.         HWPFDocument doc = new HWPFDocument(fis);     
  17.         Range rang = doc.getRange();     
  18.         String text = rang.text();     
  19.         fis.close();     
  20.         return text;     
  21.     }     



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


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


由上面代码我们可知:一旦得到了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文档的内容


[java]  view plain  copy
  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.  
  9. * @author 曹胜欢 
  10. */   
[java]  view plain  copy
  1. public class PdfFile{     
  2.   
  3.     public String getContent(File f) throws Exception {     
  4.         FileInputStream fis = new FileInputStream(f);     
  5.         PDFParser p = new PDFParser(fis);     
  6.         p.parse();     
  7.         PDDocument pdd = p.getPDDocument();     
  8.         PDFTextStripper ts = new PDFTextStripper();     
  9.         String c = ts.getText(pdd);     
  10.         pdd.close();     
  11.         fis.close();     
  12.         return c;     
  13.     }     
  14. }  



------------------------------------------------------------------------------------------------------------------------

  广告:我参加了2012年度IT博客大赛,希望大家能多多支持

http://blog.51cto.com/contest2012/3545281

------------------------------------------------------------------------------------------------------------

《Java程序员由笨鸟到菜鸟》电子版书正式发布,欢迎大家下载


http://blog.youkuaiyun.com/csh624366188/article/details/7999247


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值