2012-03-14 54 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