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

.net 是否可以向Word文档中添加一些数据?,.net,ms-word,ms-office,word-2007,.net,Ms Word,Ms Office,Word 2007,是否可以(通过MS Word对象模型?或通过编辑文件)添加一些自定义数据(可能是另一个文件?) 在MS Word中打开、更改和保存文档后,是否会保留该数据 (在某些报表导出期间,我需要将一些跟踪数据放入docx中,在导入期间将再次使用自定义数据)否,如果向此zip文件添加任何内容,Word将开始抱怨文件损坏。 但不要重新发明轮子。Word文档可以具有多个不同的文档属性。就用这个吧。 是的,这是可能的。Word具有一项功能,允许您将任意XML文档嵌入到Word文档中。此功能称为自定义XML 编辑文

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

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


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

否,如果向此zip文件添加任何内容,Word将开始抱怨文件损坏。 但不要重新发明轮子。Word文档可以具有多个不同的文档属性。就用这个吧。
是的,这是可能的。Word具有一项功能,允许您将任意XML文档嵌入到Word文档中。此功能称为自定义XML

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

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

MSDN有一个C#格式的示例,演示如何将自定义XML部件添加到.docx文件中:


对。这相当简单,但据我所知,没有记录(完全或非常好)。假设您想将.ini文件添加到Office文档(.docx、.xslx、.pptx)中,以便与文档一起“随身携带”(即,您通过电子邮件将.docx发送给某人,并希望您添加的文件.ini保留在您的docx.docx中,即使打开docx的人做了一些更改,然后保存并发送回您)

  • 将文档的扩展名重命名为 .zip。解压缩它
  • 在根文件夹中,找到 [Content\u Types].xml文件并打开它
  • 就在
    根目录下 元素,添加
    (注意- 对于另一个文件,只需确保 扩展名与您要访问的文件匹配 将要添加和属性
    extension
    与之匹配。对于
    ContentType
    属性,可以是 什么都可以)
  • 现在将您的文件名.ini文件添加到 包。你可以在任何地方添加它- 根,单词路径,一个新的 文件夹类似于/word/MyIniFiles
  • 接下来,在 您的文件和文档。如果 不要,这个文件不会随身携带 文档。导航到 \word\u rels\document.xml.rels文件, 并在
    类似于
    的地方 属性
    Id
    类型中唯一的名称(最好使用rIDX或类似的名称),
    Type
    反映URI(的 几乎任何东西)和
    Target
    都是 所需文件的相对路径 添加。我将abcpy.ini添加到 /word文件夹,该文件夹位于同一文件夹中 根目录为document.xml,因此我的 相对路径就是文件名。 我是否已将其添加到下面的文件夹中 /word,称为myIniFiles
    目标将是
    myIniFiles/abcpy.ini
  • 保存所有内容。从根目录重新压缩文件,并将文档命名为原始名称和 扩展回到.docx。复制/粘贴到原始文件上。完成
  • 如果您有开放式XML包编辑器(VS2008的一部分或最近为VS2010发布的一部分),您可以使用VS为您做一些这方面的工作,但本质上是相同的。不同的术语,如
    Target
    等于
    Name
    ,等等


    请注意,这并不是什么黑客行为。微软自己在Office 2010中也使用了同样的技术,用于使用新的“艺术效果”修改的图像——原始图像文件被移植到一种类型,修改后的图像被保存为png或jpg(这些是在客户端显示的图像)。hdphoto(带有
    .wdp
    扩展名)与文档一起移动,但从未实际用于Word、PowerPoint等中的显示。

    为了完整起见,您也可以使用字段DocVariable。这实际上是一个书签,与文档属性的方式相同,但更开放,至少在命名方面。这对于相对较小的信息量来说是最好的如果您想添加一个完整的文件,其他方法可能会更好

    见:


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


    您是指不属于文档的数据?这似乎违反直觉。我不希望文字处理器处理、生成或保留与我的文档无关的数据。数据应附加到文件/文档中,但不可访问(很容易)按Word应用程序中的用户列出Microsoft在您描述的技术方面是否存在一些法律问题?据我记忆所及(从某个地方),他们被要求使用补丁禁用它,或者支付一些费用。你有任何此类信息吗,或者我弄错了吗?@Shade:我想你是指。从该链接中读到了很多很好的内容。@razor:如果你想添加一个XML文件,这个答案是正确的。如果你想查看任何其他文件类型,请参阅above、 +1表示0xA3。@Shade:为了让御宅族的话更清楚一点:这种向文档中添加自定义、仲裁XML部分的方法与Microsoft不得不删除的自定义XML标记的技术不同。这非常令人困惑,因为使用的名称非常相似。感谢您的澄清。我现在看到了区别。感谢所有信息!这是非常有用的。目前,我已经使用自定义属性用一些用户ID数据标记文档。这是一个可接受的解决方案。风险在于最终用户