gpt4 book ai didi

c# - OpenXML 替换 word 文档的特定 customxml 部分

转载 作者:数据小太阳 更新时间:2023-10-29 02:24:26 25 4
gpt4 key购买 nike

我正在使用 OpenXML SDK ver 2 来操作一些 word 文档。这些文档目前有自定义的 xml 部分,我想做的是专门为这些部分替换 xml。

我知道我可以做这样的事情来访问文档的 customxml 部分:

Dim mainStream As New MemoryStream()
Dim buffer As Byte() = File.ReadAllBytes(Server.MapPath("myfile.docx"))
mainStream.Write(buffer, 0, buffer.Length)

Try
Using mainDocument As WordprocessingDocument = WordprocessingDocument.Open(mainStream, True)

MainDocumentPart mainPart = mainDocument.MainDocumentPart;
'collection of custom xml parts
Dim parts = mainPart.CustomXmlParts
For Each part As CustomXmlPart In parts
'how do I replace the xml here??
Next

但是如您所见,我不确定如何替换该部分的 XML。我的文档有两个 XML 部分,分别称为 item1.xml 和 item2.xml。我想替换那些部分中的 XML。我知道我可以使用 .DeleteParts() 删除现有的 xml 部分,我可以使用 AddCustomXmlPart() 创建新部分,但我不想这样做。我只是想替换现有部分的 XML。

谁能建议我该怎么做?任何建议表示赞赏。

谢谢。

编辑 哎呀忘记了代码标签

最佳答案

使用 CustomXmlPart 实例的 FeedData() 方法替换自定义 xml 部件的 XML。 FeedData() 方法首先截断部分的流,然后将新数据写入部分流。因此,您可以使用此方法替换现有自定义 xml 部件中的 XML。

MainDocumentPart mainPart = mainDocument.MainDocumentPart;

Dim parts = mainPart.CustomXmlParts

For Each part As CustomXmlPart In parts

Dim ms As New MemoryStream
Dim xtw As New XmlTextWriter(ms, Encoding.UTF8)

' Create your xml.'

xtw.WriteStartDocument()
xtw.WriteStartElement("bla")
xtw.WriteEndElement()
xtw.WriteEndDocument()
xtw.Flush()

ms.Seek(0, SeekOrigin.Begin)

part.FeedData(ms) ' Replace old xml in part stream.'

xtw.Close()

Next

关于c# - OpenXML 替换 word 文档的特定 customxml 部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11636258/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com