2010-02-03 45 views
0

我無法使用java更新word文檔中定製屬性的值。使用java更新word doc中定製屬性的值

我有一個word文檔,其中包含一個值爲'stack'的自定義屬性。使用java我想將該值更改爲'溢出'。我使用了兩種方法。

1)使用Apache POI

我org.apache.poi.hpsf.DocumentSummaryInformation設置org.apache.poi.hpsf.CustomProperties並寫入POIFSFileSystem。

它更新word的customproperties表中的值。但不會更新文檔中各個屬性的值。文檔打開後,我需要手動刷新文檔以更新該值。

2)通過char解析文件char,並使用字段代碼DC3,DC4和NAK來標識自定義屬性的位置。用新值替換現有值。

現在生成的文檔包含新的值。但是這裏的問題是,如果舊值和新值的長度不同,則文檔被損壞。我確信這個邏輯足夠好。

任何幫助,將不勝感激。

回答

1

要更新我把解決問題的辦法:

使用Office 2007(DOCX)文件作爲模板變得更加容易。這只不過是一個zip文件。您可以使用您的zip應用程序(winzip/7zip)打開它,並且您可以在其中找到許多xml文件。 document.xml包含內容,styles.xml包含格式化信息等。

在運行時,我解壓縮了文檔並解析了document.xml,然後使用了dom並更新了動態內容。自定義屬性在單獨的xml文件中可用。

對於2003用戶,他們必須使用word應用程序準備模板並將文檔保存爲XML,然後將其作爲輸入提供。

現在不使用apache-poi。