文档章节

Apache Poi获取各类文档内容。

立志尚早
 立志尚早
发布于 2013/04/03 16:45
字数 346
阅读 278
收藏 16

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
博文 33
码字总数 21411
作品 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
349
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
关于POI操作OFFICE及PDF

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

manlianman
2014/04/17
0
0

没有更多内容

加载失败,请刷新页面

加载更多

为什么要学习Python?这10个理由足够了!

摘要: 看完这十个理由,我决定买本python从入门到精通! 如果你定期关注现今的科技发展,那么你可能想知道我为什么要写这篇文章告诉人们学习Python?因为几年前我提倡Java而不是Python。 在...

阿里云官方博客
18分钟前
2
0
spring服务方式配置okhttp3

问题 如果把OKhttp以Spring服务方式配置,就解决了从配置中心运行时刷新配置参数的问题。 OkHttpConfig.java package com.zyl.config;import okhttp3.OkHttpClient;import org.springfra...

亚林瓜子
18分钟前
2
0
8张图让你一步步看清 async/await 和 promise 的执行顺序

**摘要:**面试必问 原文:8张图帮你一步步看清 async/await 和 promise 的执行顺序 作者:ziwei3749 Fundebug经授权转载,版权归原作者所有。 为什么写这篇文章? 说实话,关于js的异步执行顺...

Fundebug
19分钟前
1
0
Linux 命令菜单

#!/bin/bash #menu.sh menu(){ source ~/.bashrc echo "=================================" echo "Please enter your choise:" echo "(0) Kill all java" echo "(1) Start all tomcat" echo......

mellen
24分钟前
3
0
原来云数据库也是有思想的...

本文由一刻talks发表 邵宗文,腾讯云数据库专家副总监。十余年数据库从业经验,2009年加入腾讯,曾负责腾讯网,新闻客户端,快报,视频,财经,体育等数据库平台部署、规划及运维支持工作。本...

腾讯云加社区
25分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部