使用JAVA将HTML内容写入MS WORD?

时间:2013-10-26 06:13:39

标签: java html ms-word apache-poi

我正在开发一个考试软件,其中我使用了下标和上标。所以我必须将问题以HTML格式存储在数据库中, 现在我想用HTML标签写出这些问题, 我尝试使用Apache POI Library, 这是示例文本:

  <html>
  <head> </head>
  <body><font face="Shruti"> MY QUESTION </font>
  </body>
  </html> 

但是当我尝试使用apache poi在word文档中编写文本时,它会显示HTML标记

2 个答案:

答案 0 :(得分:2)

您可以将HTML添加为AltChunk,并在首次打开文件时将Word转换为本机docx内容。

如果您需要在Java中转换为原生docx内容,可以使用docx4j-ImportXHTML

披露:我管理那个回购。

答案 1 :(得分:-2)

使用java api docx4j-ImportXHTML ,可以通过以下方法实现:

public static void xhtmlToDocx(String destinationPath, String fileName)
    {
        File dir = new File (destinationPath);
        File actualFile = new File (dir, fileName);

        WordprocessingMLPackage wordMLPackage = null;
        try
        {
            wordMLPackage = WordprocessingMLPackage.createPackage();
        }
        catch (InvalidFormatException e)
        {
            e.printStackTrace();
        }


        XHTMLImporterImpl XHTMLImporter = new XHTMLImporterImpl(wordMLPackage);

        OutputStream fos = null;
        try
        {
            fos = new ByteArrayOutputStream();

            System.out.println(XmlUtils.marshaltoString(wordMLPackage
                    .getMainDocumentPart().getJaxbElement(), true, true));

                        HTMLSettings htmlSettings = Docx4J.createHTMLSettings();
            htmlSettings.setWmlPackage(wordMLPackage);
  Docx4jProperties.setProperty("docx4j.Convert.Out.HTML.OutputMethodXML",
                    true);
            Docx4J.toHTML(htmlSettings, fos, Docx4J.FLAG_EXPORT_PREFER_XSL);
            wordMLPackage.save(actualFile); 
        }
        catch (Docx4JException e)
        {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        finally{
            try {
                fos.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

要添加依赖 docx4j-ImportXHTML ,请使用(3.3.1是最新版本,而我正在撰写此答案。如果您以后看到它使用您的时间的最新稳定版本。)

<dependency>
    <groupId>org.docx4j</groupId>
    <artifactId>docx4j-ImportXHTML</artifactId>
    <version>3.3.1</version>
</dependency>