使用java对象中的值动态地从模板创建word文档

时间:2012-03-14 06:54:19

标签: java ms-word jsoup docx4j

我想从HTML页面创建word文档。 我计划在HTML页面上获取值,然后将这些值传递给文档模板。 我使用JSOUP来解析HTML页面的内容,并在java程序中获取值。我现在想将这些值传递给word文档模板。 我想知道什么是我可以用来创建文档模板的最佳技术,并将值传递给模板以创建word文档。

谢谢。

3 个答案:

答案 0 :(得分:5)

我发现了一些非常有趣和简单的东西。我们只需要为要创建的文档创建一个简单的.xml模板,然后以编程方式更改xml文件的内容并将其另存为ms word文档。

您可以找到xml模板和代码here

答案 1 :(得分:2)

我建议您使用xslt,因为您的数据已经是xml格式,并且有很好的xml格式的xml格式。

您可以使用word编写文档模板并将其保存为xml格式。然后,您可以将word-xml转换为xsl-template,并将html-xml作为输入。在xslt转换之后,您将获得一个有效的word-xml,其中包含来自html-xml的动态值。

excel的XSLT示例

<?xml version="1.0" encoding="UTF-8" ?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0">
<xsl:output method="xml" encoding="UTF-8" omit-xml-declaration="no" />
<xsl:template match="/">
    <Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet" xmlns:o="urn:schemas-microsoft-com:office:office"
        xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet"
        xmlns:html="http://www.w3.org/TR/REC-html40">
        ...
        <xsl:for-each
            select="/yourroot/person">
        ...
        <Cell ss:StyleID="uf">
                            <Data ss:Type="String">
                                <xsl:value-of
                                    select="@Name" />
                            </Data>
                        </Cell>
        ..
        </xsl:for-each>

...
</xsl:template>
</xsl:stylesheet>

答案 2 :(得分:0)

JODReportsDocmosis也可能是您的有用选项,因为有模板填充和文档输出。如果DOCX是您的真正目标,那么您可以自XML发布以来自己写出文档 - 但这需要做很多工作。