是否可以向Word文档添加一些数据?

时间:2010-06-22 15:16:21

标签: .net ms-word ms-office word-2007

是否可以添加(通过MS Word对象模型?或通过编辑文件)一些自定义数据(可能是另一个文件?)

在MS Word中打开,更改和保存文档后,是否会保留该数据?

(我需要在某些报告导出期间在docx中放置一些跟踪数据,导入期间将再次使用自定义数据)

5 个答案:

答案 0 :(得分:7)

是。这是相当简单的,但据我所知,没有记录(完全或非常好)。假设您要将 .ini 文件添加到您的Office文档(.docx,.xslx,.pptx)以随文档“随身携带”(即您发送 .docx 通过电子邮件发送给某人,并希望您添加 yourdoc 。 / strong>即使打开DOCX的人进行了一些更改,然后将其保存并发回给您。

  1. 将文档的扩展名重命名为 的的.zip 即可。解压缩。
  2. 在根文件夹中,找到 [Content_Types] .xml 文件并将其打开。
  3. 位于<Type/>根目录下方 元素,添加<Default Extension="ini" ContentType="custom/ini"/>(注意 - 对于另一个文件,只需确保 extention匹配你的文件 要添加和属性 Extention与之匹配。为了 ContentType属性,即可 什么都没有。)
  4. 现在将 文件名 .ini 文件添加到 包。你可以在任何地方添加它 - 根, / word 路径,一个新的 文件夹如 / word / MyIniFiles
  5. 接下来,建立一个关系 你的文件和文件。如果你 不要,文件不随身携带 文献。导航到 \ word_rels \ document.xml.rels 文件, 并在<Relationships/>下添加 类似于<Relationship Id="rd1" Type="http://schemas.microsoft.com/office/2007/relationships/ini" Target="abcpy.ini" />的地方 属性IdType中的唯一名称(最好坚持使用rID X 或类似名称),Type反映了一个URI(属于 几乎任何事情)和Target是 你的文件的相对路径 添加。我将 abcpy.ini 添加到了 / word 文件夹中的相同内容 root为 document.xml ,所以我的 相对路径只是文件名。 我把它添加到一个文件夹下 被称为 myIniFiles / word Target会是。{1}} 的 myIniFiles / abcpy.ini
  6. 保存一切。从根目录重新压缩文件并将文档命名为原始名称和 延伸回 .docx 。复制/粘贴原始文件。完成。
  7. 如果您拥有Open XML Package Editor(VS {2008 {2}的一部分或VS 2010最近发布的VSTO Power Tools),您可以使用VS为您完成部分工作,但它本质上是相同。不同的术语,如Target等于Name等等。

    请注意,这不是某种黑客行为。 Microsoft在Office 2010中使用这种相同的技术,用于使用新的“艺术效果”修改的图像 - 原始图像文件移植到stand-alone类型,修改后的图像保存为png或jpg(这些是那些在客户端中显示)。 hdphoto(带有.wdp扩展名)随文档一起移动,但实际上从未在Word,PowerPoint等中显示。

答案 1 :(得分:3)

是的,这是可能的。 Word具有允许您将任意XML文档嵌入Word文档的功能。此功能称为自定义XML

编辑文档时保留嵌入文档,也可以从文档中访问嵌入文档,可以使用VBA以编程方式访问,也可以使用Word 2007中引入的内容控件。

请注意,Word要求嵌入内容为XML,但这并不限制您使用纯XML数据,因为您可以使用base64编码将二进制内容嵌入到XML中。

MSDN在C#中有一个示例,向您展示如何将自定义XML部件添加到.docx文件中:

  

<强> How to: Add Custom XML Parts to Documents Without Starting Microsoft Office

答案 2 :(得分:2)

答案 3 :(得分:1)

不,如果您向此zip文件添加任何内容,Word将开始抱怨文件损坏。 但是不要重新发明轮子。 Word文档可以具有多个不同的文档属性。只是使用它。 http://office.microsoft.com/en-gb/word-help/add-property-information-to-a-document-HA010163766.aspx

答案 4 :(得分:1)

感谢您的回复。 我使用自定义属性将一些UserID数据添加到生成的文档中,它足以“跟踪”文档并能够在以后导入它。

http://msdn.microsoft.com/en-us/library/dhxe2d75.aspx