Apache Poi获取各类文档内容。
博客专区 > Jialy 的博客 > 博客详情
Apache Poi获取各类文档内容。
Jialy 发表于5年前
Apache Poi获取各类文档内容。
  • 发表于 5年前
  • 阅读 253
  • 收藏 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);

 

 

标签: apache poi
共有 人打赏支持
粉丝 22
博文 30
码字总数 18127
评论 (5)
穿裤衩闯天下
这些只能获得纯文本的内容吧!?
Jialy

引用来自“正仔”的评论

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

嗯,是的。图片要单独处理。
穿裤衩闯天下

引用来自“Jialy”的评论

引用来自“正仔”的评论

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

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

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

引用来自“Jialy”的评论

引用来自“正仔”的评论

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

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

在Android上java.awt.*;包是不能用的。里边的好多现成的方法就不能使用!
Jialy

引用来自“正仔”的评论

引用来自“Jialy”的评论

引用来自“正仔”的评论

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

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

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

这个我也没接触过
×
Jialy
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: