0

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

我有一个 word 文档,其中包含一个值为“stack”的自定义属性。使用 java 我想将该值更改为“溢出”。我使用了两种方法。

1) 使用 Apache POI

我在 org.apache.poi.hpsf.DocumentSummaryInformation 中设置了 org.apache.poi.hpsf.CustomProperties 并将其写入 POIFSFileSystem。

它确实更新了 word 的 customproperties 表中的值。但不会更新文档中相应属性的值。打开文档后,我需要手动刷新文档以更新该值。

2) 逐字符解析文档,并使用域代码 DC3、DC4 和 NAK 来识别自定义属性的位置。用新值替换现有值。

现在生成的文档包含新值。但这里的问题是,如果旧值和新值的长度不同,文档就会损坏。我确保逻辑足够好。

任何帮助,将不胜感激。

4

1 回答 1

1

要更新我解决问题的方法:

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

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

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

现在不使用 apache-poi。

于 2010-02-11T14:18:20.650 回答