是否可以添加(通过 MS Word 对象模型?或通过编辑文件)一些自定义数据(可能是另一个文件?)
在 MS Word 中打开、更改和保存文档后,这些数据会保留吗?
(我需要在某些报告导出时将一些跟踪数据放入 docx 中,在导入时将再次使用自定义数据)
是的。这相当简单,但据我所知,没有记录(完全或非常好)。假设您想将一个.ini文件添加到您的 Office 文档(.docx、.xslx、.pptx)中,以便与您的文档“随身携带”(即,您通过电子邮件将您的.docx发送给某人并想要yourfile .ini即使打开 DOCX 的人进行了一些更改,然后将其保存并发回给您,您也已添加以保留yourdoc .docx )。
<Type/>
在根元素下方,添加<Default
Extension="ini"
ContentType="custom/ini"/>
(注意 - 对于另一个文件,只需确保扩展名与您要添加的文件匹配并且属性
Extention
匹配。对于
ContentType
属性,可以是任何东西)。<Relationships/>
反映一个 URI(几乎任何东西)和是您添加的文件的相对路径。我将abcpy.ini添加到与
document.xml位于同一根目录的/word文件夹中,因此我的相对路径只是文件名。如果我将它添加到
/word下名为myIniFiles的文件夹中,<Relationship
Id="rd1"
Type="http://schemas.microsoft.com/office/2007/relationships/ini"
Target="abcpy.ini" />
Id
Type
Type
Target
Target
将是
myIniFiles/abcpy.ini如果您有 Open XML 包编辑器(VS2008 的VSTO Power Tools的一部分或最近发布的 VS 2010的独立工具),您可以使用 VS 为您完成其中的一些工作,但本质上是相同的。不同的术语虽然像Target
equalsName
等。
请注意,这不是某种黑客行为。Microsoft 自己在 Office 2010 中对使用新的“艺术效果”修改的图像使用了同样的技术 - 原始图像文件被移植到HDPhoto类型,修改后的图像保存为 png 或 jpg(这些是显示在客户端)。hdphoto(带有.wdp
扩展名)随文档一起传输,但从未实际用于 Word、PowerPoint 等中的显示。
是的,这是可能的。Word 具有允许您将任意 XML 文档嵌入到 Word 文档中的功能。此功能称为自定义 XML。
编辑文档时会保留嵌入的文档,也可以从文档内访问,使用 VBA 以编程方式或使用 Word 2007 引入的内容控件。
请注意,Word 要求嵌入的内容是 XML,但这并不限制您使用纯 XML 数据,因为您可以使用 base64 编码将二进制内容嵌入 XML。
MSDN 有一个 C# 示例,向您展示如何将自定义 XML 部分添加到 .docx 文件:
为了完整起见,您还可以使用字段DocVariable。这实际上是一个书签,与文档属性的方式相同,但更开放,至少对于命名而言。这些最适合相对较小的信息。如果要添加完整的文件,其他方法可能会更好。
看:
感谢您的所有回复。我使用自定义属性将一些 UserID 数据添加到生成的文档中,这足以“跟踪”文档并能够稍后将其导入。
不,如果您在此 zip 文件中添加任何内容,Word 将开始抱怨文件损坏。但不要重新发明轮子。Word 文档可以有多个不同的文档属性。就用那个。 http://office.microsoft.com/en-gb/word-help/add-property-information-to-a-document-HA010163766.aspx