使用java更新word doc中自定义属性的值

时间:2010-02-03 06:51:17

标签: java ms-word apache-poi

我无法使用java更新word文档中自定义属性的值。

我有一个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 个答案:

答案 0 :(得分:1)

更新我用来解决问题的方法:

使用Office 2007(docx)文档作为模板变得更加容易。它只不过是一个zip文档。你可以使用你的zip应用程序(winzip / 7zip)打开它,你可以在其中找到许多xml文件。 document.xml包含内容,styles.xml包含格式信息等。

在运行时,我解压缩文档并解析document.xml,然后使用dom并使用动态内容进行更新。自定义属性在单独的xml文件中提供。

对于2003用户,他们必须使用word应用程序准备模板,并将文档保存为XML,然后将其作为输入提供。

现在没有使用apache-poi。