在 C# 中操作 Word 2007 文档 XML

2023-12-02

我正在尝试用 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();

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


我建议你使用开放 XML SDK而不是自己破解格式。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 C# 中操作 Word 2007 文档 XML 的相关文章

  • 当事件button.click发生时,如何获取按钮名称/标签?

    我以编程方式制作按钮并将它们添加到堆栈面板中 以便每次用户导航到页面时按钮都会发生变化 我正在尝试做这样的事情 当我单击创建的按钮时 它将获取按钮的标签并转到正确的页面 但是 我无法使用 RoutedEventHandler 访问按钮元素
  • java中如何重新初始化int数组

    class PassingRefByVal static void Change int pArray pArray 0 888 This change affects the original element pArray new int
  • Task.Run 作为反模式?

    我正在将 SQLite NET PCL 库用于我的 WinRT 项目SQliteAsyncConnection类 它提供经典的异步版本SQLiteConnection方法 然而 就该项目而言Github页面 https github com
  • 处理右值时的 insert 与 emplace

    std string myString std unordered set
  • 语音识别编程问题入门

    所以 你们可能都看过 钢铁侠 其中托尼与一个名为贾维斯的人工智能系统进行交互 演示剪辑here http www youtube com watch v Go8zsh1Ev6Y 抱歉 这是广告 我非常熟悉 C C 和 Visual Basi
  • 如何在 C# Designer.cs 代码中使用常量字符串?

    如何在 designer cs 文件中引用常量字符串 一个直接的答案是在我的 cs 文件中创建一个私有字符串变量 然后编辑 Designer cs 文件以使用此变量 而不是对字符串进行硬编码 但设计者不喜欢这样抛出错误 我明白为什么这行不通
  • 不同 C++ 文件中的相同类名

    如果两个 C 文件具有相同名称的类的不同定义 那么当它们被编译和链接时 即使没有警告也会抛出一些东西 例如 a cc class Student public std string foo return A void foo a Stude
  • 如何使用 ASP.NET Core 获取其他用户的声明

    我仍在学习 ASP NET Core 的身份 我正在进行基于声明的令牌授权 大多数示例都是关于 当前 登录用户的 就我而言 我的 RPC 服务正在接收身份数据库中某个用户的用户名和密码 我需要 验证是否存在具有此类凭据的用户 获取该用户的所
  • 获取没有显式特征的整数模板参数的有符号/无符号变体

    我希望定义一个模板类 其模板参数始终是整数类型 该类将包含两个成员 其中之一是类型T 另一个作为类型的无符号变体T 即如果T int then T Unsigned unsigned int 我的第一直觉是这样做 template
  • 在 C 中使用枚举而不是 #defines 作为编译时常量是否合理?

    在 C 工作了一段时间后 我将回到 C 开发领域 我已经意识到 在不必要的时候应该避免使用宏 以便让编译器在编译时为您做更多的工作 因此 对于常量值 在 C 中我将使用静态 const 变量或 C 11 枚举类来实现良好的作用域 在 C 中
  • C++ - 多维数组

    处理多维数组时 是否可以为数组分配两种不同的变量类型 例如你有数组int example i j 有可能吗i and j是两种完全不同的变量类型 例如 int 和 string 听起来您正在寻找 std vector
  • 将二变量 std::function 转换为单变量 std::function

    我有一个函数 它获取两个值 x 和 y 并返回结果 std function lt double double double gt mult double x double y return x y 现在我想得到一个常量 y 的单变量函数
  • ASP.NET - 在表示层中显示业务层错误

    目前 在我正在开发的 ASP NET 应用程序中 基本验证 即必填字段 是在表示层中使用验证器和 ValidationSummary 完成的 这对我来说非常有用 因为 ValidationSummary 将显示多个错误消息 假设多个验证器设
  • 模板类的模板构造函数的 C++ 显式模板特化

    我有一个像这样的课程 template
  • Android:是否可以在可绘制选择器中使用字符串/枚举?

    问题 Q1 有人设法让自定义字符串 枚举属性在 xml 选择器中工作吗 我通过以下 1 获得了一个布尔属性 但不是字符串属性 编辑 感谢您的回答 目前 android 仅支持布尔选择器 原因请参阅已接受的答案 我计划实现一个复杂的自定义按钮
  • C++ 对象用 new 创建,用 free() 销毁;这有多糟糕?

    我正在修改一个相对较大的 C 程序 不幸的是 并不总是清楚我之前的人使用的是 C 还是 C 语法 这是在一所大学的电气工程系 我们 EE 总是想用 C 来做所有事情 不幸的是 在这种情况下 人们实际上可以逃脱惩罚 但是 如果有人创建一个对象
  • Visual Studio 2015 - Web 项目上缺少共享项目参考选项卡

    我从 MSDN 订阅升级到 Visual Studio 2015 因为我非常兴奋地阅读有关共享项目的信息 当我们想要做的只是重用代码时 不再需要在依赖项中管理 21382 个 nuget 包 所以我构建了一个测试共享项目 其中包含一些代码
  • C++:二叉树所有节点值的总和

    我正在准备面试 我被一个二叉树问题困住了 我们如何计算二叉树所有节点中存在的值的总和 优雅的递归解决方案 伪代码 def sum node if node NULL return 0 return node gt value sum nod
  • 在 Win32 控制台应用程序中设置光标位置

    如何在 Win32 控制台应用程序中设置光标位置 最好 我想避免制作句柄并使用 Windows 控制台功能 我花了整个早上沿着那条黑暗的小巷跑 它产生的问题比它解决的问题还要多 我似乎记得当我在大学时使用 stdio 做这件事相对简单 但我
  • 无法将字符串文字分配给装箱的 std::string 向量

    这是我的类型系统的简化版本 include

随机推荐

  • NSDateFormatter 的时间错误

    我有一个字符串 我想从中解析时间 NSString longdate Mar 27 2011 8 38 38 PM 我想解析这个日期并仅输出时间部分 小时 分钟 上午 下午 First convert our string into an
  • 如何排除与 ASP.Net 中 HttpHandler 的指定路径匹配的内容?

    我知道 如果我想将 MyPage aspx 的请求转到名为 MyAssembly 的程序集中名为 MyHandler 的类 我可以将其添加到我的 web config 文件中
  • VS 2010 无法删除继承的附加依赖项

    您好 我错误地在项目配置 gt 链接器 gt 输入 gt 附加依赖项设置下添加了 cv210d lib cxcore210d lib 和 highgui210d lib 作为继承值 但我似乎无法将它们从 继承的 附加依赖项中删除 因此 每次
  • 如何执行伴生对象 Lateinit 是否初始化检查

    如果我有一个 Lateinit 变量 我可以检查它是否使用 this lateInitVar isInitialized 进行初始化 如下所示https stackoverflow com a 47860466 3286489 但是 如果该
  • 单击微调器时出现无法添加窗口、令牌无效错误

    我有一个 Android 应用程序 当单击侧栏中的选项时 它会转到一个片段 然后进入另一个具有可单击单选按钮的片段 单击这些时 它将创建一个弹出窗口 其中包含一些文本字段 基本上流程是这样的 活动 gt 片段 1 gt 片段 2 gt 弹出
  • 如果散列中有一个或多个字段,则使用 HashSet 和 Contains 返回 TRUE

    我想知道是否可以使用 HashSet 并创建该方法Contains如果某个字段位于给定对象的哈希中 则返回 true 这是我想要的一个例子 static void Main string args HashSet
  • Google Drive API v3 在 java 中获取根文件夹 ID

    我尝试了几种方法 但无法获取 Java Api v3 中的根文件夹 id 我尝试过的 String id service files get fileId root setFields id execute getId String id
  • 如何将 JSON 字符串转换为 BSONDocument

    我有以下使用reactivemongo 驱动程序的函数 并且实际上可以很好地写入数据库 def writeDocument val document BSONDocument firstName gt Stephane lastName g
  • 如何更新 Tkinter 标签?

    我有一个简单的 tkinter GUI 其中有一个显示数字和按钮的标签 我将其设置为变量 x 当按下按钮时 x 的值增加 1 但是 当我点击按钮时 标签不会更新 我该怎么做呢 from tkinter import x 1 def add
  • Windows 7 图标大小问题

    我正在尝试创建一个应用程序图标 我拿了一堆创建的 ico 文件 每个大小一个 并将它们组合成一个 ico 文件 我可以看到他们都很好 我有 16x16 32x32 48x48 64x64 和 128x128 图标 全部 32 位 带透明度
  • SwiftUI - NavigationLink 不适用于按钮

    我正在制作一个应用程序 在其中输入两个数字 并希望在单击按钮时在第二个屏幕中显示数字的相加结果 我可以在控制台中打印结果 但不幸的是 按钮周围的导航链接似乎不起作用 如果我将 NavigationLink 放在按钮标签周围而不是整个按钮周围
  • 如何从 Node.js 以编程方式运行“yarn tag”?

    我想从node js 以编程方式运行yarn 命令 但找不到任何sdk 或cli 实用程序 唯一的事情就是产生一个新的进程 但这很麻烦 截至 2019 年 1 月 Yarn 尚无可直接调用的 API 你cannot需要 Yarn 并使用类似
  • 在 wxPython 中绘图的最佳画布?

    我必须绘制组成物理网络拓扑模型的元素图 会有节点和拱门 后者可以是单向的或双向的 我想捕获节点和拱门的单击事件 以选择元素并在某处显示其属性 以及节点 以移动它们 和拱门 以连接或断开元素 的拖动事件 我做了一些研究 并将替代方案缩小到OG
  • 创建 Visual Studio 扩展时如何获取“源代码管理历史记录”窗口中的选定项目?

    我开发了一个Visual Studio 扩展 我将一个按钮附加到源代码管理历史记录窗口的上下文菜单 菜单上有 变更集详细信息 比较 等 我需要得到选定的历史项目从窗户看 但不知道该怎么做 Update 我使用 Team Foundation
  • 无法从客户端设备通过 C# 表单应用程序访问我的 SQL Server

    我有一个 C 应用程序连接到我的计算机上的在线服务器 当我在 Visual Studio 中测试我的应用程序时 它工作正常 但是当我将应用程序提供给客户端时 它无法工作 我在代码中直接在单击按钮事件中使用此连接字符串 Data Source
  • _app.getInitialProps 不会在每个请求上调用

    我正在根据主机名设置主题 一切都在开发模式下运行 但我只是跑了npm run build我看到了getInitialProps在构建期间被调用 我找不到任何有关何时的信息 app s getInitialProps被叫 我构建了整个应用程序
  • Git 分支名称 - 区分大小写还是不区分大小写?

    我是一个新的 git 用户 最近需要照顾一个过时的 git 存储库 这是原始状态 由 git show branch 输出 cr232 CR 232 Release dev Style Changes dev Style Changes d
  • 将 ListBox.SelectedObjectCollection 转换为 ListBox.ObjectCollection?

    是否可以将 ListBox SelectedObjectCollection 转换为 C 中的 ListBox ObjectCollection 如果是这样 我该怎么办 我有一个接受的函数List
  • robots.txt 中没有索引

    我总是阻止谷歌使用 robots txt 文件为我的网站建立索引 最近我读到了谷歌员工的一篇文章 他说你应该使用元标签来做到这一点 这是否意味着 Robots txt 不起作用 由于我正在使用 CMS 我的选择非常有限 并且仅使用 robo
  • 在 C# 中操作 Word 2007 文档 XML

    我正在尝试用 C 操作 Word 2007 文档的 XML 我已经设法找到并操作我想要的节点 但现在我似乎不知道如何将其保存回来 这是我正在尝试的 Open the document from memoryStream Package pk