从excel读取嵌入式MS Word文件,并使用Java将其保存在驱动器上

时间:2014-02-19 11:58:11

标签: java excel ms-word apache-poi

我有excel文件,其中嵌入了两个Ms Word文件。 我正在使用Apache POI从java中的excel文件中读取Embedded对象。 问题是当我读取嵌入文件并将其保存在磁盘上并在Ms Word中打开保存的文件时,MS Word无法读取其格式。 如果从excel文件直接打开它,它会打开并且Word正确读取它。 任何人帮助我。 [代码]

public class test {
    public static void main(String[] args) throws Exception {
        File file = new File("C:/Book2.xls");
        NPOIFSFileSystem fs = new NPOIFSFileSystem(file);
        HSSFWorkbook wb = new HSSFWorkbook(fs.getRoot(), true);
        for (HSSFObjectData obj : wb.getAllEmbeddedObjects()) {
            String oleName = obj.getOLE2ClassName();
            DirectoryNode dn = (DirectoryNode)obj.getDirectory();
            Iterator<Entry> ab = dn.getEntries();
            if(oleName.contains("Document")){
                HWPFDocument embeddedWordDocument = new HWPFDocument(dn);
              String docTitle = embeddedWordDocument.getSummaryInformation().getTitle();
                InputStream is ;
                Entry entry = ab.next();
                is = dn.createDocumentInputStream(entry);

                FileOutputStream fos = new FileOutputStream("d:/"+docTitle+".doc");
                System.out.println(is.available());
                 System.out.println(((DocumentEntry)entry).getSize());
                IOUtils.copy(is, fos);
                fos.close();
                is.close();
            }
        }
        fs.close();
    }
}

0 个答案:

没有答案