`
fangjing
  • 浏览: 52889 次
  • 性别: Icon_minigender_1
文章分类
社区版块
存档分类
最新评论

JAVA读取WORD,EXCEL,POWERPOINT,PDF文件的方法

阅读更多
OFFICE文档使用POI控件,PDF可以使用PDFBOX0.7.3控件,完全支持中文,用XPDF也行,不过感觉PDFBOX比较好,而且作者也在更新。水平有限,万望各位指正
 
WORD:

import org.apache.lucene.document.Document;
import org.apache.lucene.document.Field;
import org.apache.poi.hwpf.extractor.WordExtractor;

import java.io.File;
import java.io.InputStream;
import java.io.FileInputStream;

import com.search.code.Index;

public Document getDocument(Index index, String url, String title, InputStream is) throws DocCenterException {

  String bodyText = null;
  try {
   WordExtractor ex = new WordExtractor(is);//is是WORD文件的InputStream 
   bodyText = ex.getText();
   if(!bodyText.equals("")){
    index.AddIndex(url, title, bodyText);
   }
  }catch (DocCenterException e) {
   throw new DocCenterException("无法从该Mocriosoft Word文档中提取内容", e);
  }catch(Exception e){
   e.printStackTrace();
  }
}
  return null;
 }

 

Excel:

import org.apache.lucene.document.Document;
import org.apache.lucene.document.Field;

import org.apache.poi.hwpf.extractor.WordExtractor;
import  org.apache.poi.hssf.usermodel.HSSFWorkbook; 
import  org.apache.poi.hssf.usermodel.HSSFSheet; 
import  org.apache.poi.hssf.usermodel.HSSFRow; 
import  org.apache.poi.hssf.usermodel.HSSFCell; 

import java.io.File;
import java.io.InputStream;
import java.io.FileInputStream;

import com.search.code.Index;

 

public Document getDocument(Index index, String url, String title, InputStream is) throws DocCenterException {
  StringBuffer content = new StringBuffer();
  try{
   HSSFWorkbook  workbook  =  new  HSSFWorkbook(is);//创建对Excel工作簿文件的引用 
   for (int numSheets = 0; numSheets < workbook.getNumberOfSheets(); numSheets++) {
    if (null != workbook.getSheetAt(numSheets)) {
     HSSFSheet aSheet = workbook.getSheetAt(numSheets);//获得一个sheet
        for (int rowNumOfSheet = 0; rowNumOfSheet <= aSheet.getLastRowNum(); rowNumOfSheet++) {
         if (null != aSheet.getRow(rowNumOfSheet)) {
          HSSFRow aRow = aSheet.getRow(rowNumOfSheet); //获得一个行
          for (short cellNumOfRow = 0; cellNumOfRow <= aRow.getLastCellNum(); cellNumOfRow++) {
           if (null != aRow.getCell(cellNumOfRow)) {
            HSSFCell aCell = aRow.getCell(cellNumOfRow);//获得列值
            content.append(aCell.getStringCellValue());
           }
          }
         }
        }
    }
   }
   if(!content.equals("")){
    index.AddIndex(url, title, content.toString());
   }
  }catch (DocCenterException e) {

   throw new DocCenterException("无法从该Mocriosoft Word文档中提取内容", e);
  }catch(Exception  e)  { 
   System.out.println("已运行xlRead()  :  "  +  e  ); 
  }
  return null;
 }

 

PowerPoint:

import java.io.InputStream;

import org.apache.lucene.document.Document;
import org.apache.poi.hslf.HSLFSlideShow;
import org.apache.poi.hslf.model.TextRun;
import org.apache.poi.hslf.model.Slide;
import org.apache.poi.hslf.usermodel.SlideShow;

 public Document getDocument(Index index, String url, String title, InputStream is)
 throws DocCenterException {
  StringBuffer content = new StringBuffer("");
  try{
   SlideShow ss = new SlideShow(new HSLFSlideShow(is));//is 为文件的InputStream,建立SlideShow
   Slide[] slides = ss.getSlides();//获得每一张幻灯片
   for(int i=0;i     TextRun[] t = slides[i].getTextRuns();//为了取得幻灯片的文字内容,建立TextRun
    for(int j=0;j      content.append(t[j].getText());//这里会将文字内容加到content中去
    }
    content.append(slides[i].getTitle());
   }
   index.AddIndex(url, title, content.toString());
  }catch(Exception ex){
   System.out.println(ex.toString());
  }
  return null;
 }

 

PDF:

import java.io.InputStream;
import java.io.IOException;
import org.apache.lucene.document.Document;

import org.pdfbox.cos.COSDocument;
import org.pdfbox.pdfparser.PDFParser;
import org.pdfbox.pdmodel.PDDocument;
import org.pdfbox.pdmodel.PDDocumentInformation;
import org.pdfbox.util.PDFTextStripper;

import com.search.code.Index;

 

 public Document getDocument(Index index, String url, String title, InputStream is)throws DocCenterException {
  
  COSDocument cosDoc = null;
  try {
   cosDoc = parseDocument(is);
  } catch (IOException e) {
   closeCOSDocument(cosDoc);
   throw new DocCenterException("无法处理该PDF文档", e);
  }
  if (cosDoc.isEncrypted()) {
   if (cosDoc != null)
    closeCOSDocument(cosDoc);
   throw new DocCenterException("该PDF文档是加密文档,无法处理");
  }
  String docText = null;
  try {
   PDFTextStripper stripper = new PDFTextStripper();
   docText = stripper.getText(new PDDocument(cosDoc));
  } catch (IOException e) {
   closeCOSDocument(cosDoc);
   throw new DocCenterException("无法处理该PDF文档", e);
  }

  PDDocument pdDoc = null;
  try {
   pdDoc = new PDDocument(cosDoc);
   PDDocumentInformation docInfo = pdDoc.getDocumentInformation();
   if(docInfo.getTitle()!=null && !docInfo.getTitle().equals("")){
    title = docInfo.getTitle();
   }

  } catch (Exception e) {
   closeCOSDocument(cosDoc);
   closePDDocument(pdDoc);
   System.err.println("无法取得该PDF文档的元数据" + e.getMessage());
  } finally {
   closeCOSDocument(cosDoc);
   closePDDocument(pdDoc);
  }
  
  return null;
 }

 private static COSDocument parseDocument(InputStream is) throws IOException {
  PDFParser parser = new PDFParser(is);
  parser.parse();
  return parser.getDocument();
 }

 private void closeCOSDocument(COSDocument cosDoc) {
  if (cosDoc != null) {
   try {
    cosDoc.close();
   } catch (IOException e) {
   }
  }
 }

 private void closePDDocument(PDDocument pdDoc) {
  if (pdDoc != null) {
   try {
    pdDoc.close();
   } catch (IOException e) {
   }
  }
 }

代码复制可能出错,不过代码经过测试,绝对能用,POI为3.0-rc4,PDFBOX为0.7.3

POI: http://jakarta.apache.org/poi/index.html

PDFBOX: http://www.pdfbox.org/

分享到:
评论
5 楼 moronliang 2008-12-08  
poi在aix系统下能否正常工作,pdfbox呢?
4 楼 yijie 2008-09-02  
能把你用的poi控件传给我一份吗,我用时老是出错,说是没用这个方法。
我的邮箱:616720305@qq.com
3 楼 咖啡舞者 2008-07-02  
PDFBOX的类库怎么下不了啊。
2 楼 fangjing 2008-05-14  
比如PDF有时候可能是你生成的时候没加中文字体
1 楼 晨星★~雨泪 2008-04-07  
所有中文都行吗,为什么我用,有的可以,有的还是乱码??
yuleihome@hotmail.com

相关推荐

    JAVA读取WORD_EXCEL_POWERPOINT_PDF文件的方法(poi)

    JAVA 读取 WORD_EXCEL_POWERPOINT_PDF 文件的方法(poi) JAVA 读取 WORD_EXCEL_POWERPOINT_PDF 文件的方法是使用 Apache POI 库来实现的。POI 库是一个开放源代码的 Java 库,提供了对 Microsoft Office 文件格式...

    java OpenOffice wordExcel转换PDF

    这个压缩包"java OpenOffice wordExcel转换PDF.zip"包含了必要的jar包和其他资源,帮助开发者实现这个功能。 首先,我们要了解OpenOffice的架构。OpenOffice是由Apache基金会维护的开源办公套件,它包含了处理文字...

    java 读取 word pdf 等

    ### JAVA读取Word、Excel、PowerPoint及PDF文件方法详解 #### 一、概述 在企业级应用开发中,经常需要处理Office文档(如Word、Excel、PowerPoint)以及PDF文件。这些文件格式广泛用于存储数据和信息。本文将详细...

    Word,Excel,PPT等转PDF文件JAVA源代码

    本主题主要关注如何使用JAVA编程语言将常见的办公软件格式,如Word(.doc)、Excel(.xls)、PowerPoint(.ppt)以及图像文件(如.tif)转换为统一的PDF格式。PDF(Portable Document Format)因其跨平台兼容性和...

    word、ppt、excel转pdf读取页数Demo

    本Demo主要关注将Microsoft Office的三种主要文件类型——Word(.doc或.docx)、PowerPoint(.ppt或.pptx)和Excel(.xls或.xlsx)转换为PDF格式,并在此过程中读取转换后的PDF文件的页数。以下是对这个主题的详细...

    Java读取word文档内容并输出成网页(含图片,公式)

    Java POI库是Apache软件基金会开发的一个开源项目,专门用于处理Microsoft Office格式的文件,包括Word、Excel和PowerPoint等。在这个场景中,我们将重点讨论如何使用Java POI读取Word文档并将其内容转换为HTML网页...

    word,excel,ppt文件转换成pdf文件

    描述中提到的"word文件,excel文件,ppt文件转换成pdf文件,java代码实现,已经集成为工具类,可以直接使用,自测ok"表明已经有开发者编写了一个工具类,该类能够处理这些转换操作,并且经过测试,功能正常。...

    java读取word文档.pdf

    Java 读取Word文档主要涉及的是处理不同类型的文档格式,如.doc、.docx或.rtf等。在Java中,由于Microsoft的Word文档格式复杂,直接读取并不简单,因此通常需要借助第三方库来实现。在给定的描述中提到了几种常用的...

    java读取word,excel和pdf文档-利用POI实现数据导出excel报表.docx

    Apache POI 是一个广泛使用的 Java 库,专为处理 Microsoft Office 格式的文件,包括 Excel、Word 和 PowerPoint。它是一个免费且开源的解决方案,允许开发者使用 Java 读取、创建和修改这些文件。在本文中,我们将...

    在线或本地读取word、ppt、pdf、excel、doc等文件

    读取Word文件通常需要有Microsoft Office套件或者兼容的第三方软件,如WPS Office。在线读取可以通过Google Docs或其他云办公服务实现,它们提供了浏览器上的文件预览和编辑功能。对于开发者来说,可以使用API,如...

    java文档excel、word、pdf、ppt转图片

    在Java编程环境中,将文档(如Excel、Word、PDF、PPT)转换为图片是一种常见的需求,这在处理大量文档预览、数据可视化或者移动设备兼容性问题时尤其有用。以下是一些关于如何使用Java实现这种转换的关键知识点: 1...

    JAVA读取WORD_pdf等.docx

    【JAVA读取WORD/PDF等】的技术领域主要集中在Java编程语言中对Microsoft Office文档(如Word、Excel、PowerPoint)以及PDF格式文件的处理。在Java中,有多种方法可以实现对这些文件的读取、操作和转换。以下将详细...

    java为多种文档(word ppt pdf excel)添加文本水印

    本教程将详细介绍如何使用Free Spire.Office for Java库为Word、PPT和PDF文档添加文本水印,以及如何利用Apache POI库为Excel文档实现相同功能。 1. **Free Spire.Office for Java** Free Spire.Office for Java是...

    POI修改word、excel、pdf、ppt文件属性如作者以及将其转成html

    Apache POI是一个强大的Java库,专门用于处理Microsoft Office格式的文件,如Word(.doc, .docx)、Excel(.xls, .xlsx)、PowerPoint(.ppt, .pptx)等。通过使用POI,开发者可以创建、读取、修改这些文件,并且将...

    java实现office、wps转pdf,pdf转word

    在Java中,可以使用Apache POI库来处理Microsoft Office的文件(如Word、Excel和PowerPoint),而Kingsoft WPS也有相应的API接口供开发者使用。Apache POI提供了对Office文件的低级别访问,允许读取和写入文件内容。...

    使用java将office word pdf excel ppt文件转换成html文件

    1. **Apache POI** - 这是用于处理Microsoft Office格式(如Word、Excel和PowerPoint)的Java库。通过Apache POI,我们可以读取、写入和修改这些文件,并将其转换为其他格式,包括HTML。 2. **PDFBox** - 是Apache...

    JAVA读取WORD-pdf等.docx

    1. **读取Word文档** - 使用 Apache POI 库中的 `HWPFDocument` 类可以处理 `.doc` 文件,而 `XWPFDocument` 类则用于 `.docx` 文件。例如,你可以通过 `WordExtractor` 来提取文档中的文本内容。 ```java import...

    poi将word、PPT、Excel转pdf实现在线预览的jar包

    Apache POI是Java平台上用于读写Microsoft Office格式文件的开源库,包括Word(.doc/.docx)、PowerPoint(.ppt/.pptx)和Excel(.xls/.xlsx)等。 首先,Apache POI提供了API,允许开发者以编程方式操作这些文件,...

Global site tag (gtag.js) - Google Analytics