【问题标题】:Updating values of custom properties in word doc using java使用java更新word doc中自定义属性的值
【发布时间】:2012-12-07 15:46:23
【问题描述】:

我无法使用 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 来识别自定义属性的位置。用新值替换现有值。

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

任何帮助将不胜感激。

【问题讨论】:

    标签: java ms-word apache-poi


    【解决方案1】:

    更新我解决问题的方法:

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

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

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

    现在不使用 apache-poi。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多