【问题标题】:How to convert office documents into html in android如何在android中将office文档转换为html
【发布时间】: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


【解决方案1】:

虽然肯定可以在 android 设备本身上将 word 文档转换为 HTML,但正如其他人所提到的,由于一系列问题,这是不可取的。 (即有限的处理能力和 android 的内存,以及与大多数旨在处理 MS Office 文件的库的兼容性问题)正如他们都提到的那样,最好在服务器端进行转换。就是说,如果鉴于您的情况确实不可能,您可能想看看this stackoverflow question

提问者似乎和你有类似的问题。 (假设我正确理解了您的问题)发帖者在讨论的中途回答了他们自己的问题,并在评论中提供了指向他自己答案的来源的链接。他在他的解决方案中使用了 Apachi POI 库,但将该库分解为几个较小的 DEX 文件(库的每个组件一个文件),以便它可以很好地与 android 配合使用。

希望对您有所帮助!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多