【发布时间】:2014-06-30 15:42:12
【问题描述】:
我们能否在 Android 中将 microsoft office 文档(doc、docx、ppt、pptx、xls、xlsx 等)转换为 html 字符串。 我需要在我的应用程序中显示办公文件。我搜索并找到了 docx4j、apache poi 和 http://angelozerr.wordpress.com/2012/12/06/how-to-convert-docxodt-to-pdfhtml-with-java/ 来转换 html 文件。这种方法在桌面版本中运行良好。但是在 android 中使用时,我收到“无法转换为 Dalvik 格式错误 1”。这可能是由于在我的 android 项目中使用了太多的 jar。 我想知道是否有一种方法可以将office文档转换为android中的html。 对不起英语。
编辑
我现在可以使用 apache poi 将 doc 转换为 html。 这是方法
public void showsimpleWord() {
File file = new File("/sdcard/test.doc");
HWPFDocumentCore wordDocument = null;
try {
wordDocument = WordToHtmlUtils.loadDoc(new FileInputStream(file));
} catch (Exception e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
WordToHtmlConverter wordToHtmlConverter = null;
try {
wordToHtmlConverter = new WordToHtmlConverter(
DocumentBuilderFactory.newInstance().newDocumentBuilder()
.newDocument());
wordToHtmlConverter.processDocument(wordDocument);
org.w3c.dom.Document htmlDocument = wordToHtmlConverter
.getDocument();
ByteArrayOutputStream out = new ByteArrayOutputStream();
DOMSource domSource = new DOMSource(htmlDocument);
StreamResult streamResult = new StreamResult(out);
TransformerFactory tf = TransformerFactory.newInstance();
Transformer serializer = tf.newTransformer();
serializer.setOutputProperty(OutputKeys.ENCODING, "UTF-8");
serializer.setOutputProperty(OutputKeys.INDENT, "yes");
serializer.setOutputProperty(OutputKeys.METHOD, "html");
serializer.transform(domSource, streamResult);
out.close();
String result = new String(out.toByteArray());
System.out.println(result);
((WebView) findViewById(R.id.webview)).loadData(result,
"text/html", "utf-8");
} catch (Exception e) {
e.printStackTrace();
}
}
现在正在寻找其他人。
【问题讨论】:
-
在设备端是否有必要这样做?也许使用服务器进行这些转换会更好?
-
@RafaelOsipov 否,如果我们使用服务器。我们的应用将依赖于互联网连接。
-
本例使用Apache POI在服务器上实现转换引擎,设备只会向服务器发送文档并接收转换结果。
-
@RafaelOsipov 感谢您关注我的问题。实际上在我们的应用程序中,要求是在应用程序中显示办公文档。即使我们离线。
-
将文件发送到服务器进行渲染,然后缓存结果以供离线查看?
标签: java android apache-poi docx4j