如何从.docx文件中提取数据,包括图像,表格,公式等?

时间:2015-01-23 12:45:41

标签: java ms-word apache-poi

我正在完成一项任务,我必须从word文档中提取数据,主要是图像,表格和特殊文本(公式等)。

我可以保存从网上下载的word文件中的图像,但是当我将相同的代码应用到我的.docx文件时,它会给出错误。

相同的代码是

//create file inputstream to read from a binary file
      FileInputStream fs=new FileInputStream(filename);
      //create office word 2007+ document object to wrap the word file
      XWPFDocument docx=new XWPFDocument(fs);
      //get all images from the document and store them in the list piclist
      List<XWPFPictureData> piclist=docx.getAllPictures();
      //traverse through the list and write each image to a file
      Iterator<XWPFPictureData> iterator=piclist.iterator();
      System.out.println(piclist.size());
      while(iterator.hasNext()){

       XWPFPictureData pic=iterator.next();
       byte[] bytepic=pic.getData();
       int i=0;
       BufferedImage imag=ImageIO.read(new ByteArrayInputStream(bytepic));
       //captureimage(imag,i,flag,j);
       if(imag != null)
       {
               ImageIO.write(imag, "jpg", new File("D:/imagefromword"+i+".jpg"));  
       }else{
           System.out.println("imag is empty");
       }

它给出了错误的格式错误。但我无法更改doc文件。 其次,对于上面的代码,如果我有一个以上的图像,当我保存这个比每次保存保存图像。假设我们有3个图像,那么它将保存3个图像,但这三个图像将是最新的图像。

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

没有实际错误,我只能猜测。 但是有两个POI实现HWPF和XWPF取决于您读取旧文档一或xml-new-one docx的word文档版本。通常,当您尝试使用错误的文档打开文档时会出现格式错误。 您还需要完整的poi-ooxml-schemas jar来阅读更复杂的文档。