2016-01-21 193 views
-2

我试图查看Word文件在我的编辑窗格 我想这些线路如何使用Poi阅读doc文件?

import java.awt.Dimension; 
import java.awt.GridLayout; 
import java.io.File; 
import java.io.FileInputStream; 
import javax.swing.JEditorPane; 
import org.apache.poi.hwpf.HWPFDocument; 
import org.apache.poi.hwpf.extractor.WordExtractor; 

public class editorpane extends JEditorPane 
{ 
public editorpane(File file) 
{ 

    try 
    { 
     FileInputStream fis = new FileInputStream(file.getAbsolutePath()); 
     HWPFDocument hwpfd = new HWPFDocument(fis); 
     WordExtractor we = new WordExtractor(hwpfd); 
     String[] array = we.getParagraphText(); 
     for (int i = 0; i < array.length; i++) 
     { 
      this.setPage(array[i]); 
     } 

    } catch (Exception e) 
    { 
     e.printStackTrace(); 
    } 

,但给我

org.apache.poi.poifs.filesystem.OfficeXmlFileException: The supplied data appears to be in the Office 2007+ XML. You are calling the part of POI that deals with OLE2 Office Documents. You need to call a different part of POI to process this data (eg XSSF instead of HSSF) 
at org.apache.poi.poifs.storage.HeaderBlock.<init>(HeaderBlock.java:131) 
at org.apache.poi.poifs.storage.HeaderBlock.<init>(HeaderBlock.java:104) 
at org.apache.poi.poifs.filesystem.POIFSFileSystem.<init>(POIFSFileSystem.java:138) 
at org.apache.poi.hwpf.HWPFDocumentCore.verifyAndBuildPOIFS(HWPFDocumentCore.java:106) 
at org.apache.poi.hwpf.HWPFDocument.<init>(HWPFDocument.java:174) 
at frame1.editorpane.<init>(editorpane.java:24) 

在这一行

HWPFDocument hwpfd = new HWPFDocument(fis); 

我该怎么解决??

旁边我不知道对这些行

for (int i = 0; i < array.length; i++) 
     { 
      this.setPage(array[i]); 
     } 

我可以让他们证实?

+2

你看了错误信息?您是否尝试使用XSSF而不是HSSF? – 2016-01-21 13:23:37

+0

我无法找到什么是xssf或在哪里被替换 –

+1

尝试XWPFDocument类。文档的类型是什么?它是一个doc或docx文件吗? – 2016-01-21 13:40:21

回答

2

您正在尝试打开一个.docx文件(XWPF),其中包含.doc(HWPF)文件的代码。您可以使用XWPFWordExtractor作为.docx文件。

有一个ExtractorFactory,您可以使用它让POI决定哪些应用并使用正确的类来打开文件,但是您可以不按页面迭代,因为只有通用的getText()方法可用。

使用方法如下

POITextExtractor extractor = ExtractorFactory.createExtractor(file); 
extractor.getText(); 
+0

它无关紧要,如果我使用XWPF或HWPF ...我不断在同一行中获取该错误---> HWPFDocument hwpfd = new HWPFDocument(fis);或者---> XWPFDocument Xwpfd = new XWPFDocument(OPCPackage.open(fis)); –

+0

使用XWPFDocument时的堆栈跟踪/错误消息肯定是不同的,或者?你是否也可以将这个问题添加到该问题中。 – centic

+0

它给出了相同的错误 –