gpt4 book ai didi

c# - 在 C# 中操作 Word 2007 文档 XML

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

我正在尝试使用 C# 操作 Word 2007 文档的 XML。我设法找到并操纵了我想要的节点,但现在我似乎无法弄清楚如何将其保存回来。这是我正在尝试的:

// Open the document  from memoryStream
Package pkgFile = Package.Open(memoryStream, FileMode.Open, FileAccess.ReadWrite);
PackageRelationshipCollection pkgrcOfficeDocument = pkgFile.GetRelationshipsByType(strRelRoot);

foreach (PackageRelationship pkgr in pkgrcOfficeDocument)
{
if (pkgr.SourceUri.OriginalString == "/")
{
Uri uriData = new Uri("/word/document.xml", UriKind.Relative);

PackagePart pkgprtData = pkgFile.GetPart(uriData);

XmlDocument doc = new XmlDocument();
doc.Load(pkgprtData.GetStream());

NameTable nt = new NameTable();
XmlNamespaceManager nsManager = new XmlNamespaceManager(nt);
nsManager.AddNamespace("w", nsUri);

XmlNodeList nodes = doc.SelectNodes("//w:body/w:p/w:r/w:t", nsManager);

foreach (XmlNode node in nodes)
{
if (node.InnerText == "{{TextToChange}}")
{
node.InnerText = "success";
}
}


if (pkgFile.PartExists(uriData))
{
// Delete template "/customXML/item1.xml" part
pkgFile.DeletePart(uriData);
}
PackagePart newPkgprtData = pkgFile.CreatePart(uriData, "application/xml");
StreamWriter partWrtr = new StreamWriter(newPkgprtData.GetStream(FileMode.Create, FileAccess.Write));

doc.Save(partWrtr);
partWrtr.Close();
}
}

pkgFile.Close();

我收到错误“内存流不可扩展”。有什么想法吗?

最佳答案

我建议您使用 Open XML SDK而不是自己修改格式。

关于c# - 在 C# 中操作 Word 2007 文档 XML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4793695/

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