【问题标题】:Creating a word document from a template dynamically using values from java objects使用 java 对象中的值从模板动态创建 word 文档
【发布时间】:2012-03-14 06:54:19
【问题描述】:

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

谢谢。

【问题讨论】:

    标签: java ms-word jsoup docx4j


    【解决方案1】:

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

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

    【讨论】:

    • 这只是 DOCX 格式。如果您使用的是最新版本的 Word,那就太好了。
    • 我能够创建一个 .doc 文件。我首先创建了一个包含动态值的临时 xml。然后我使用 HTTPServletResponse 的 response.setContentType() 和 response.setHeader() 函数将此临时 xml 转换为 .doc。我希望文档在创建后立即下载。
    【解决方案2】:

    我建议您使用 xslt,因为您的数据已经是 xml 格式,并且有来自 microsoft 的明确定义的 xml 格式。

    您可以用word 编写一个文档模板并将其保存为xml 格式。然后,您可以将 word-xml 转换为 xsl 模板,并将您的 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>
    

    【讨论】:

    • 谢谢。我遇到了一个名为java2word 的东西。你觉得可能有帮助吗。 PS:我真的不知道 xslt 是如何工作的。我刚开始研究它。
    【解决方案3】:

    JODReports 和 Docmosis 也可能对您有用,因为有模板填充和文档输出。如果 DOCX 是您的真正目标,那么您可以自己编写文档,因为 XML 已发布 - 但这是很多工作。

    【讨论】:

    • Docmosis 不是开源的,是吗?
    • 看起来不像。有免费版本,但属于专有版本。
    • 是的。我正在寻找一些开源解决方案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-03-31
    • 2020-03-28
    • 2023-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多