文档章节

Apache Poi获取各类文档内容。

立志尚早
 立志尚早
发布于 2013/04/03 16:45
字数 346
阅读 651
收藏 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);

 

 

© 著作权归作者所有

立志尚早

立志尚早

粉丝 25
博文 40
码字总数 24803
作品 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
463
0
Android使用ApachePOI组件读写Worddoc和docx文件【doc总结不错】

最近在项目中要生成Word的doc和docx文件,一番百度google之后,发现通过java语言实现的主流是Apache的POI组件。除了POI,这里还有另一种实现,不过我没有去研究,有兴趣的同学可以研究研究。...

Airship
2019/03/13
154
0
关于POI操作OFFICE及PDF

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

manlianman
2014/04/17
0
0
使用卓正PageOffice--Word文档全文检索

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

山里的红杏
2018/09/11
61
0
[转载] Java开发在线编辑Word同时实现全文检索

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

osc_392it4em
2018/04/28
8
0

没有更多内容

加载失败,请刷新页面

加载更多

一文教你学会数据库异地备份

云栖号快速入门:【点击查看更多云产品快速入门】 不知道怎么入门?这里分分钟解决新手入门等基础问题,可快速完成产品配置操作! 数据库备份DBS提供数据库异地备份能力,满足PolarDB、RDS、...

osc_l7zl78wt
58分钟前
28
0
js中对象的定义是指什么

主要内容--乐字节java直播课 事件 事件 (Event) 是 JavaScript 应用跳动的心脏 ,进行交互,使网页动起来。当我们与浏览器中 Web 页面进行某些类型的交互时,事件就发生了。事件可能是用户在...

osc_6ls9vwji
59分钟前
17
0
TypeError: __init__() got an unexpected keyword argument ¨serialized_options¨

TypeError: __init__() got an unexpected keyword argument 'serialized_options' TypeError: __init__() got an unexpected keyword argument 'serialized_options' 这是由于包版本和pytho......

osc_r0irdqn7
今天
29
0
读博难,大神来支招:DeepMind科学家Sebastian Ruder提出十条实用建议 - 知乎

如何找到合适的研究方向?如何维持饱满的科研热情?如何通过读博实现长期规划?……DeepMind 科学家 Sebastian Ruder 来支招。 选自http://ruder.io,作者:Sebastian Ruder,机器之心编译,...

osc_cpolwgcv
今天
26
0
Java收入不再最低,Python被TypeScript击败,2020全球开发者调查报告出炉 - 知乎

Stack Overflow 2020 年度全球开发者调查报告出炉。报告显示,JavaScript 连续八年成为最常用的编程语言,而在最受开发者喜爱的编程语言榜单中,Python 排名第三,较去年下降一位,被 TypeSc...

osc_j3111wl4
今天
24
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部