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

首先我们来认识一下读取相关文档的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>

java操作word,excel,pdf的更多相关文章

  1. Java操作word转pdf

    如果转换后出现乱码,是doc格式的文档的话请转换为docx!!! 下载相关jar包和一个授权到2099年的凭证文件. 链接: https://pan.baidu.com/s/1xudkKqR1-TLL ...

  2. Java操作word文档使用JACOB和POI操作word,Excel,PPT需要的jar包

    可参考文档: http://wibiline.iteye.com/blog/1725492 下载jar包 http://download.csdn.net/download/javashixiaofe ...

  3. Word,Excel,pdf,txt等文件上传并提取内容

    近期项目需求:1.要用到各种文件上传,下载. 2.并对文件进行搜索. 3.仅仅要文件里包括有搜索的内容,所有显示出来. 今天正好有时间整理一下,方便以后阅读,及对须要用到的朋友提供微薄之力.首先在实现 ...

  4. Aspose.Words操作word生成PDF文档

    Aspose.Words操作word生成PDF文档 using Aspose.Words; using System; using System.Collections.Generic; using ...

  5. Aspose是一个很强大的控件,可以用来操作word,excel,ppt等文件

    Aspose是一个很强大的控件,可以用来操作word,excel,ppt等文件,用这个控件来导入.导出数据非常方便.其中Aspose.Cells就是用来操作Excel的,功能有很多.我所用的是最基本的 ...

  6. 利用aspose-words 实现 java中word转pdf文件

    利用aspose-words  实现 java中word转pdf文件 首先下载aspose-words-15.8.0-jdk16.jar包 引入jar包,编写Java代码 package test; ...

  7. java 实现word 转 pdf

    java 实现word  转 pdf 不知道网上为啥道友们写的这么复杂  ,自己看到过一篇还不错的  , 自己动手改了改 ,测试一下可以用  , 希望大家可以参考一下 , 对大家有帮助 1.引入jar ...

  8. C#Aspose操作Word & Excel简版(后会研究补充更多功能)

    利用Aspose操作Word & Excel首先要在项目中标引用Aspose.Words.dll和Aspose.Cells.dll. 首先说一说向Word中写入数据,目前做的是向Word中的标 ...

  9. datatable导出到Word / Excel / PDF / HTML .NET

    原文发布时间为:2011-01-21 -- 来源于本人的百度文章 [由搬家工具导入] IEnumerable - DataTable Export to Word / Excel / PDF / HT ...

  10. Java 操作Word书签(二):添加文本、图片、表格到书签内容

    在Java操作Word书签(一)中介绍了给Word中的特定段落或文字添加书签.读取及删除已有书签的方法,本文将继续介绍Java 操作Word书签的方法,即如何给已有的书签添加内容,包括添加文本.图片. ...

随机推荐

  1. DataTable与DataSet

    转自:http://www.cnblogs.com/rjf1979/archive/2010/09/09/1822667.html DataSet包含很多个DataTable 一张表的时候用DataT ...

  2. UUID生成

    >>>Arch Linux # uuidgen From: http://os.51cto.com/art/200709/56613.htm >>>Debian j ...

  3. cocos2d-x + Lua接入iOS原生SDK的实现方案[转]

    相信很多朋友在使用cocos2d-x+lua开发游戏时都遇到过接入iOS原生SDK的问题,比如常见的接应用内支付SDK,广告SDK或是一些社交平台SDK等等,我也没少接过这类SDK.这篇文章主要是对我 ...

  4. spring定时器设置(转自:http://my.oschina.net/LvSantorini/blog/520049)

    转自:http://my.oschina.net/LvSantorini/blog/520049<!-- MessageRequestTask类中包含了msgRequest方法,用于执行定时任务 ...

  5. 仿淘宝详情转场(iOS,安卓没有这功能)

    由于公司是做跨境电商的,所以对各大电商APP都有关注,最近看到淘宝iOS端(安卓没有)在商品详情点击加入购物车有一个动画效果特别赞,正好今天新版本上线,下午就抽了些时间研究了下. 主要思路是自定义转场 ...

  6. JSP、HTML标签

    <%@ ...%> 表示是指令,主要用来提供整个JSP 网页相关的信息,并且用来设定JSP网页的相关属性,例如:网页的编码方式.语法.信息等.起始符号为: <%@ 终止符号为: %& ...

  7. iOS软件开发架构理解

    这个东西是硬伤,框架?自带的mvc? 自带的UIViewController UIView UINavigationController 这些算不算?当然算的,cocoa框架嘛,大家都知道. 其实,我 ...

  8. JS settimeout 使用笔记

    无参数使用方法: setTimeout(function_name,delay_time); 基本使用方法是逗号前是函数名字,不能带有 xxxx(),不然不执行: 但是很多函数都要带参数的,以下是解决 ...

  9. thinkphp关联模型的注意大小写

    TP框架报错: think\Model:relation方法不存在 首先检查大小写,尤其是模型名称首字母大写 /**** 模型名字QqModel.class.php ***************** ...

  10. 【EF学习笔记05】----------操作内存中的数据

    SingleOrDefault实验 //SingleOrDefault实验 using (var db = new Entities()) { var classes = new Classes() ...