2012-03-14 53 views
3

我想从HTML页面创建word文档。 我打算获取HTML页面上的值,然后将这些值传递给文档模板。 我已经使用JSOUP解析HTML页面的内容,并在我的java程序中获取值。我现在想要将这些值传递给Word文档模板。 我想知道什么是我可以用来创建文档模板的最佳技术,并将值传递给模板以创建word文档。使用来自java对象的值动态地从模板创建word文档

谢谢。

回答

4

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

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

+0

虽然只是DOCX格式。如果您使用的是最新版本的Word,那就太好了。 – 2012-03-15 09:55:39

+0

我能够创建一个.doc文件。我首先创建了一个包含动态值的temperory xml。然后,我使用HTTPServletResponse的response.setContentType()和response.setHeader()函数将此temp xml转换为.doc。我希望文档一旦创建就可以下载。 – 2012-10-18 05:27:13

2

我建议你使用xslt,因为你的数据已经是xml格式,并且有来自Microsoft的定义好的xml格式。

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

<?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> 
+0

谢谢。我遇到了一个名为[java2word](http://code.google.com/p/java2word/)的东西。你认为这可能有帮助吗? PS:我真的不知道xslt是如何工作的。我刚开始研究它。 – 2012-03-14 08:12:45

0

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

+0

Docmosis不是开源的,是吗? – 2012-03-15 09:37:28

+0

不看那样。有一个免费版本,但是是专有的。 – 2012-03-15 09:53:25

+0

是的。我正在寻找一些开源解决方案。 – 2012-03-16 06:58:44