文档章节

Apache Poi获取各类文档内容。

立志尚早
 立志尚早
发布于 2013/04/03 16:45
字数 346
阅读 275
收藏 16
点赞 0
评论 5

poi版本3.9

操作之前获取文件输入流对象

 

FileInputStream fis;
try {
    fis = new FileInputStream(file);
} catch (FileNotFoundException fnfe) {
    return;
}

 

1.获取word2003及以前版本内容。

 

WordExtractor wordExtractor = new WordExtractor(fis);
String result = wordExtractor.getText();

 

2.获取word2007内容。

 

XWPFWordExtractor xwpfWordExtractor = new XWPFWordExtractor(new XWPFDocument(fis));
String result = xwpfWordExtractor.getText();

 

3.获取excel2003及以前版本内容。

 

POIFSFileSystem poifsFileSystem = new POIFSFileSystem(fis);
 StringBuffer sb = new StringBuffer();
 HSSFWorkbook wb = new HSSFWorkbook(poifsFileSystem);
 for(int sheetNum = 0;sheetNum < wb.getNumberOfSheets() ;sheetNum++){ 
     if(wb.getSheetAt(sheetNum)!=null){
         HSSFSheet sheet = wb.getSheetAt(sheetNum);
         for(int sheetRow =0;sheetRow<sheet.getLastRowNum();sheetRow++){
             if(sheet.getRow(sheetRow)!=null){
                 HSSFRow row = sheet.getRow(sheetRow);
                 for(int sheetCol =0;sheetCol<row.getLastCellNum();sheetCol++){
                     if(row.getCell(sheetCol)!=null){
                         HSSFCell aCell = row.getCell(sheetCol); 
                         if (aCell.getCellType() == HSSFCell.CELL_TYPE_NUMERIC) {
                             sb.append(aCell.getNumericCellValue() + "\t");
                         } else if (aCell.getCellType() == HSSFCell.CELL_TYPE_BOOLEAN) {
                             sb.append(aCell.getBooleanCellValue() + "\t");
                         } else if (aCell.getCellType() == HSSFCell.CELL_TYPE_STRING) {
                             sb.append(aCell.getStringCellValue() + "\t");
                         } else if (aCell.getCellType() == HSSFCell.CELL_TYPE_FORMULA){
                             sb.append(aCell.getCellFormula() + "\t");
                         } 
                     }
                     if(sheetCol==row.getLastCellNum()-1){
                         sb.append("\n");
                     }
                 }
             }
         }
     }
 }

4.获取excel2007内容。

 

XSSFWorkbook wb = new XSSFWorkbook(fis);
StringBuffer sb = new StringBuffer();
for(int sheetNum = 0;sheetNum < wb.getNumberOfSheets() ;sheetNum++){			
    if(wb.getSheetAt(sheetNum)!=null){
        XSSFSheet sheet = wb.getSheetAt(sheetNum);
        for(int sheetRow =0;sheetRow<sheet.getLastRowNum();sheetRow++){
            if(sheet.getRow(sheetRow)!=null){
		XSSFRow row = sheet.getRow(sheetRow);
		for(int sheetCol =0;sheetCol<row.getLastCellNum();sheetCol++){
		    if(row.getCell(sheetCol)!=null){
			XSSFCell aCell = row.getCell(sheetCol); 
			if (aCell.getCellType() == HSSFCell.CELL_TYPE_NUMERIC) {
			    sb.append(aCell.getNumericCellValue() + "\t");
			} else if (aCell.getCellType() == HSSFCell.CELL_TYPE_BOOLEAN) {
			    sb.append(aCell.getBooleanCellValue() + "\t");
			} else if (aCell.getCellType() == HSSFCell.CELL_TYPE_STRING) {
			    sb.append(aCell.getStringCellValue() + "\t");
			} else if (aCell.getCellType() == HSSFCell.CELL_TYPE_FORMULA){
			    sb.append(aCell.getCellFormula() + "\t");
			} 
		    }
		    if(sheetCol==row.getLastCellNum()-1){
			sb.append("\n");
                    }
                }
            }
        }
    }
}

 

5.获取ppt文件内容。

 

StringBuffer sb = new StringBuffer();
SlideShow ss = new SlideShow(new HSLFSlideShow(fis));
Slide[] s = ss.getSlides();			
for(int i=0;i<s.length;i++){
    sb.append(s[i].getTitle());
    TextRun[] t = s[i].getTextRuns();
    for(int j=0;j<t.length;j++){
        sb.append(t[j].getText()+"\t");
    }
    sb.append("\n");
}

 

6. 获取pdf文件内容。

 

PDFParser parser = new PDFParser(fis);								
parser.parse();														
PDDocument pdDocument = parser.getPDDocument();						
PDFTextStripper stripper = new PDFTextStripper();					
String result = stripper.getText(pdDocument);

 

 

© 著作权归作者所有

共有 人打赏支持
立志尚早
粉丝 23
博文 31
码字总数 19281
作品 0
浦东
程序员
加载中

评论(5)

立志尚早
立志尚早

引用来自“正仔”的评论

引用来自“Jialy”的评论

引用来自“正仔”的评论

这些只能获得纯文本的内容吧!?

嗯,是的。图片要单独处理。

我想问你个问题就是,能不能获得文字以及图片的位置呢!?打算用画的方式让读取出的格式和office显示的格式一样,但是不知道怎么获取它的位置!你有办法获得他们的位置么!?

这个我也没接触过
穿裤衩闯天下
穿裤衩闯天下

引用来自“Jialy”的评论

引用来自“正仔”的评论

这些只能获得纯文本的内容吧!?

嗯,是的。图片要单独处理。

在Android上java.awt.*;包是不能用的。里边的好多现成的方法就不能使用!
穿裤衩闯天下
穿裤衩闯天下

引用来自“Jialy”的评论

引用来自“正仔”的评论

这些只能获得纯文本的内容吧!?

嗯,是的。图片要单独处理。

我想问你个问题就是,能不能获得文字以及图片的位置呢!?打算用画的方式让读取出的格式和office显示的格式一样,但是不知道怎么获取它的位置!你有办法获得他们的位置么!?
立志尚早
立志尚早

引用来自“正仔”的评论

这些只能获得纯文本的内容吧!?

嗯,是的。图片要单独处理。
穿裤衩闯天下
穿裤衩闯天下
这些只能获得纯文本的内容吧!?
Java程序员从笨鸟到菜鸟之(一百零三)java操作office和pdf文件(一)java读取word,excel和pdf文档内容

在平常应用程序中,对office和pdf文档进行读取数据是比较常见的功能,尤其在很多web应用程序中。所以今天我们就简单来看一下java对word、excel、pdf文件的读取。本篇博客只是讲解简单应用。如...

长平狐
2012/11/12
323
0
关于POI操作OFFICE及PDF

在平常应用程序中,对office和pdf文档进行读取数据是比较常见的功能,尤其在很多web应用程序中。所以今天我们就简单来看一下java对word、excel、pdf文件的读取。我列出了一些关于操作OFFICE的...

manlianman
2014/04/17
0
0
Apache POI 3.11-beta2 发布

Apache POI 3.11-beta2 发布,更新内容如下: 56812 - XSLF 图像提供一个获取外部链接图片的 URI 54764 支持 XML 解析器版本 (Xerces 或者 JVM 内置, XMLBeans 2.6),实施合理的 OOXML 文件...

oschina
2014/08/22
1K
2
java获取word里面的文本

需求场景   开发的web办公系统如果需要处理大量的Word文档(比如有成千上万个文档),用户一定提出查找包含某些关键字的文档的需求,这就要求能够读取 word 中的文字内容,而忽略其中的文字...

山里的红杏
05/10
0
0
JAVA使用POI操作excel

一直想写一个poi的使用的总结,话说我第一份正式工作接到的第一个工作就是当时TL让我去整理项目的数据字典,即把内容插入到CSV上,然后把csv的内容插入到数据库中,而且我印象极深的当时使用...

王小明123
2013/01/09
0
12
Apache POI 3.12-beta1 发布

Apache POI 3.12-beta1 发布,此版本包括新领域一些便捷的功能和大量的 bug 修复,二进制包和源代码现已提供下载:http://poi.apache.org/download.html。 更新内容 ------------ 最值得关注...

叶秀兰
2015/03/01
1K
2
Apache POI 3.16 发布,Office 文档的 Java 处理包

Apache POI 3.16 发布了,Apache POI 是一个开源的 Java 读写 Excel、WORD 等微软 OLE2 组件文档的项目。目前 POI 已经有了 Ruby 版本。 更新内容: - add initial streaming, read-only sup...

淡漠悠然
2017/04/19
1K
8
使用POI读写word doc文件

Apache poi的hwpf模块是专门用来对word doc文件进行读写操作的。在hwpf里面我们使用HWPFDocument来表示一个word doc文档。在HWPFDocument里面有这么几个概念: l Range:它表示一个范围,这个...

Mr_Damen
2016/10/19
45
0
Office文档处理 Apache POI 3.6 发布

Apache POI是一个开源的Java读写Excel、WORD等微软OLE2组件文档的项目。目前POI已经有了Ruby版本。 该版本值得注意的改进内容包括: 包含一个轻量级的 ooxml-schemas-1.0.jar 改名为 poi-oo...

红薯
2009/12/16
1K
1
poi如何读取word 2003 文档中内容的超链接?

如何使用POI读取.doc格式的文档中的超链接?并将超链接转成HYPERLINK类型的对象? 我自己读取word内容时,不知道为啥,只要是word内容中有超链接的内容,如下为word文档中 的一段内容: 有关多...

码上中国博客
2016/11/23
473
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

springMVC的流程

1.用户发送请求至前端控制器DispatcherServlet 2.DispatcherServlet收到请求调用HandlerMapping处理器映射器。 3.处理器映射器根据请求url找到具体的处理器,生成处理器对象及处理器拦截器(...

JavaSon712
17分钟前
0
0
大数据教程(3.2):Linux系统软件安装之自动化脚本

博主前面文章有介绍过软件的安装,可以帮助IT人员顺利的完成功能软件安装;但是,对于我们运维人员或者需要管理软件安装的项目经理来说,有些应用一次行需要搭建很多台相同的软件环境(如tom...

em_aaron
35分钟前
0
0
Spring Boot 2.0.3 JDBC整合Oracle 12

整合步骤 1. Oracle驱动引入 Oracle驱动一般不能通过maven仓库直接下载得到,需自行下载并导入到项目的lib目录下,建议通过如下pom依赖引入下载的Oracle驱动 <!-- Oracle 驱动 -->...

OSC_fly
44分钟前
0
0
java 8 并行流 - 1

下面创建一个并行流,与顺序流 //顺序流Stream.iterate(0L, i -> i + 1) .limit(Integer.MAX_VALUE) .reduce(0L, Long::sum);//并行流Stream.iterate(0L, i -> i......

Canaan_
今天
0
0
数据结构与算法5

二分法采用向下取整的方法 使用有序数组的好处是查找的速度比无序数组快的多,不好的方面是因为要将所有靠后的数据移开,所以速度较慢,有序数组和无序数组的删除操作都很慢。 有序数组在查找...

沉迷于编程的小菜菜
昨天
1
1
SpringBoot | 第十一章:Redis的集成和简单使用

前言 上几节讲了利用Mybatis-Plus这个第三方的ORM框架进行数据库访问,在实际工作中,在存储一些非结构化或者缓存一些临时数据及热点数据时,一般上都会用上mongodb和redis进行这方面的需求。...

oKong
昨天
5
0
对基于深度神经网络的Auto Encoder用于异常检测的一些思考

一、前言 现实中,大部分数据都是无标签的,人和动物多数情况下都是通过无监督学习获取概念,故而无监督学习拥有广阔的业务场景。举几个场景:网络流量是正常流量还是攻击流量、视频中的人的...

冷血狂魔
昨天
0
0
并发设计之A系统调用B系统

A-->B A在发送请求之前,用乐观锁,减少对B的重复调用,这样一定程度上是幂等性。 比如A系统支付功能,要调用B系统进行支付操作,但是前端对"支付"按钮不进行控制,即用户会不断多次点击支付...

汉斯-冯-拉特
昨天
0
0
HTTP协议通信原理

了解HTTP HTTP(HyperText Transfer Protocol)是一套计算机通过网络进行通信的规则。计算机专家设计出HTTP,使HTTP客户(如Web浏览器)能够从HTTP服务器(Web服务器)请求信息和服务。 HTTP使用...

寰宇01
昨天
0
0
【Java动态性】之反射机制

一、Java反射机制简介

谢余峰
昨天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部