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

使用JAVA将HTML内容写入MS WORD?,java,html,ms-word,apache-poi,Java,Html,Ms Word,Apache Poi,我正在开发一个考试软件,其中我使用了下标和上标。所以我必须将问题以HTML格式存储在数据库中, 现在我想用HTML标记在单词上写这些问题, 我尝试使用ApachePOI库, 以下是示例文本: <html> <head> </head> <body><font face="Shruti"> MY QUESTION </font> </body> </html> 我的问题 但是

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

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

我的问题

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

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

如果需要转换为Java中的本机docx内容,可以使用


披露:我使用java apidocx4j 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是我编写此答案时的最新版本。如果以后看到它,请使用您所在时代的最新稳定版本)


org.docx4j
docx4j导入xhtml
3.3.1

您是在尝试在POI中设置显式格式规则,还是只是盲目地将HTML标记写入word文件,当它们在结果文件中出现时看起来很困惑?我在POI中查看了这些格式规则,但是我没有在文档中编写HTML我猜你没有理解我的问题,或者可能是我无法正确描述它,我没有将HTML转换为文档或将文档转换为HTML,在我的应用程序中,文本窗格的内容类型是HTML,因此我在HTML格式中获取值,我想在没有HTML标记的情况下将其写入,这不是将HTML转换为文档的简单情况吗?如果你想自己从头开始写,问题有两个部分。首先,解析HTML以获取文本。您可能会看到一个“整洁”的程序,然后是SAX或DOM解析。其次,将该文本转换为docx/doc/rtf格式。您可能希望区分块内容和内联内容。那么表格、图像、列表呢?您在哪里使用输入
xhtml
?使用它有什么问题?您能把问题说清楚一点吗?您正在将xhtml传递到方法中,但它从未使用过。你复制粘贴了一段代码,甚至没有验证它是否正常工作,甚至没有阅读它。@stinger-好吧,它正常工作,因为我在粘贴到这里之前已经检查过了。起初,我认为xhtml将作为param(优秀的设计智慧)出现,但在做粗糙的工作时,事情会发生——你知道的。
<dependency>
    <groupId>org.docx4j</groupId>
    <artifactId>docx4j-ImportXHTML</artifactId>
    <version>3.3.1</version>
</dependency>