设置自定义Open XML元数据

时间:2011-07-12 12:34:55

标签: openxml ole office-2007 docx xlsx

背景

Open XML中的自定义属性存储在docProps/custom.xml中,如下所示(对于字符串):

<property fmtid="{xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxxxxx}" pid="2" name="Key">
    <vt:lpwstr>Value</vt:lpwstr>
</property>

Open XML(v1)规范未提供有关fmtidpid的许多详细信息。它仅在第7.3.2.2节中说明:

  

[PID]将自定义属性与OLE属性

唯一关联

问题

关于规范的模糊解释,我有几个问题:

  1. 什么是OLE属性?
  2. 是否可以在custom.xml中添加新的OpenXML属性而不存储OLE属性?
  3. 每个pid fmtid是唯一的,对于custom.xml中的所有fmtid都是唯一的
  4. 为什么我自己的custom.xml中的属性不会出现在Word中?

1 个答案:

答案 0 :(得分:1)

我将根据我通过实验发现的内容来部分回答我自己的问题。

  1. OLE属性是存储在备用文件流中的NTFS扩展属性。可以使用DSOfile.dll查看或修改它们。请参阅this StackOverflow问题。

  2. 可以通过修改custom.xml来添加自定义属性。如果fmtid属于Word或加载的COM加载项,它们将仅出现在Word的属性对话框中。