我正在使用poi库来处理MS文件。要为docx,xlsx和pptx提取嵌入式ole对象,我使用方法:PackagePart pp = src.getAllEmbedds()
但是对于像doc,xls和ppt这样的MS文件的旧格式,没有这样的方法。所以我使用的是提取器:POITextExtractor[] embeddedExtractors =
ExtractorFactory.getEmbededDocsTextExtractors(oleTextExtractor);
但是这只能提取文本而不是整个文件。
任何人都可以帮我解压doc,ppt和xls文件吗?
答案 0 :(得分:1)
OLE2 文件包含大多数 Microsoft Office 文件,例如XLS
,DOC
和PPT
以及{{1基于序列化API的文件格式。 Office OpenXML格式是 Microsoft Office 2007 和 2008 中基于新标准的 XML 文件格式。其中包括MFC
,XLSX
和DOCX
。
对于每个 MS Office 应用程序,都存在一个组件模块,它试图为 OLE2 和 Java api > OOXML 文档格式。
见
答案 1 :(得分:0)
import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import org.apache.poi.hssf.usermodel.HSSFObjectData;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.poifs.filesystem.DirectoryNode;
import org.apache.poi.poifs.filesystem.DocumentEntry;
import org.apache.poi.poifs.filesystem.Entry;
import org.apache.poi.poifs.filesystem.NPOIFSFileSystem;
import org.apache.poi.util.IOUtils;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
public class TestEmbedded {
public static void main(String[] args) throws Exception {
String path = "ParentExcel.xls";
File file = new File(path);
NPOIFSFileSystem fs = new NPOIFSFileSystem(file);
HSSFWorkbook wb = new HSSFWorkbook(fs.getRoot(), true);
for (HSSFObjectData obj : wb.getAllEmbeddedObjects()) {
System.out.println(obj.getDirectory()+"***************HSSFObject data value************"+obj.getOLE2ClassName());
String oleName = obj.getOLE2ClassName();
System.out.println("Has directory Entry node"+obj.hasDirectoryEntry());
DirectoryNode dn = (DirectoryNode)obj.getDirectory();
Iterator<Entry> ab = dn.getEntries();
System.out.println("The entries in the directory node are"+dn.getEntries()+"And also the count"+dn.getEntryCount());
if(oleName.contains("Worksheet")){
InputStream is ;
Entry entry = ab.next();
is = dn.createDocumentInputStream(entry);
FileOutputStream fos = new FileOutputStream("EmbeddedWorkbook.xlsx");
IOUtils.copy(is, fos);
fos.close();
}
}
}
}
答案 2 :(得分:0)
<a href="photographicadventures.co.uk">
<img src="images/w3schools.jpg" class="center" size width ="200" height="200">
</a>
<br><br><hr>
<h2>This is a Smaller Heading.</h2>
<p>This is a paragraph and is colored red and resized and centered due to the external style sheet</p>