我无法使用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来标识自定义属性的位置。用新值替换现有值。
现在生成的文档包含新值。但问题是,如果旧值和新值的长度不同,则文档会被破坏。我确保逻辑足够好。
任何帮助都将不胜感激。
答案 0 :(得分:1)
更新我用来解决问题的方法:
使用Office 2007(docx)文档作为模板变得更加容易。它只不过是一个zip文档。你可以使用你的zip应用程序(winzip / 7zip)打开它,你可以在其中找到许多xml文件。 document.xml包含内容,styles.xml包含格式信息等。
在运行时,我解压缩文档并解析document.xml,然后使用dom并使用动态内容进行更新。自定义属性在单独的xml文件中提供。
对于2003用户,他们必须使用word应用程序准备模板,并将文档保存为XML,然后将其作为输入提供。
现在没有使用apache-poi。