文档章节

Apache Poi获取各类文档内容。

立志尚早
 立志尚早
发布于 2013/04/03 16:45
字数 346
阅读 277
收藏 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
博文 32
码字总数 20028
作品 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
使用卓正PageOffice--Word文档全文检索

一、 背景介绍 Word文档与日常办公密不可分,在实际应用中,当某一文档服务器中有很多Word文档,假如有成千上万个文档时,用户查找打开包含某些指定关键字的文档就变得很困难,目前网络上能找...

山里的红杏
09/11
0
0
JAVA使用POI操作excel

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

王小明123
2013/01/09
0
12

没有更多内容

加载失败,请刷新页面

加载更多

day122-20181020-英语流利阅读-待学习

蜘蛛侠新片《毒液》来袭!导演灵感来自哪? Roxy 2018-10-20 1.今日导读 你还记得漫威宇宙中飞檐走壁的蜘蛛侠小可爱吗?在刚过去的国庆黄金周里,索尼影业发行的漫威超级英雄蜘蛛侠系列大片《...

飞鱼说编程
16分钟前
1
0
美团点评Docker容器管理平台

美团点评容器平台简介 本文介绍美团点评的Docker容器集群管理平台(以下简称“容器平台”)。该平台始于2015年,是基于美团云的基础架构和组件而开发的Docker容器集群管理平台。目前该平台为...

Skqing
22分钟前
1
0
JDK8笔记

判断两个对象是否相等 Objects.equals(value1, value2)

呼呼南风
今天
1
0
OSChina 周六乱弹 —— 到底谁是小公猫……

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @莱布妮子:分享Trivium的单曲《Throes Of Perdition》 《Throes Of Perdition》- Trivium 手机党少年们想听歌,请使劲儿戳(这里) @小鱼丁:...

小小编辑
今天
354
5
基础选择器

注意:本教程参考自网上流传的李兴华老师的jquery开发框架视频,但是苦于没有相应的配套笔记,由我本人做了相应的整理. 本次学习的内容 学习jquery提供的各种选择器的使用,掌握了jquery选择...

江戸川
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部