如何使用 C# 和 OneNote 互操作性写入 OneNote 2013 页面

2023-12-24

我看过很多关于此的文章,但所有这些文章要么不完整,要么没有回答我的问题。使用C#和 OneNote Interop,我想简单地将文本写入现有的 OneNote 2013 页面。目前我有一个 OneNote 笔记本,其中一个部分标题为"Sample_Section”和一个名为"MyPage".

我需要能够使用C#代码将文本写入此页面,但我无法弄清楚如何或找到任何资源来执行此操作。我查看了网络上的所有代码示例,但没有一个能够回答这个简单的问题或能够做到这一点。此外,许多代码示例已经过时,并且在尝试运行它们时会中断。

我用的是Microsoft代码示例显示了如何更改部分的名称,但我找不到任何代码来将文本写入Page。据我所知,没有简单的方法可以做到这一点。我花了很多时间来研究这个并在线查看不同的示例,但没有一个能够提供帮助。

我已经看过了MSDN文章关于OneNote Interop以及。我隐约明白如何OneNote Interop工作通过XML但任何额外的帮助理解这一点也将不胜感激。最重要的是,我真的很欣赏一个代码示例,它演示了如何将文本写入OneNote2013 笔记本页。

我尝试过使用这个堆栈溢出答案:从 C# 创建新的 One Note 2010 页面 https://stackoverflow.com/questions/8186819/creating-new-one-note-2010-page-from-c-sharp

然而,这个解决方案有两件事不能回答我的问题:

1) 标记的解决方案显示了如何创建新页面,而不是如何向其写入文本或如何使用任何信息填充页面。

2)当我尝试运行标记为解决方案的代码时,我在以下行中收到错误:

var node = doc.Descendants(ns + nodeName).Where(n => n.Attribute("name").Value == objectName).FirstOrDefault();
return node.Attribute("ID").Value;

原因是“节点”的值为空,任何帮助将不胜感激。


我在 MSDN 论坛上问了同样的问题,并得到了这个很好的答案。下面是一个漂亮、简洁的示例,说明如何使用 C# 和 OneNote 互操作写入 OneNote。我希望这可以帮助将来的人们。

    static Application onenoteApp = new Application();
    static XNamespace ns = null;

    static void Main(string[] args)
    {
        GetNamespace();
        string notebookId = GetObjectId(null, OneNote.HierarchyScope.hsNotebooks, "MyNotebook");
        string sectionId = GetObjectId(notebookId, OneNote.HierarchyScope.hsSections, "Sample_Section");
        string firstPageId = GetObjectId(sectionId, OneNote.HierarchyScope.hsPages, "MyPage");
        GetPageContent(firstPageId);
        Console.Read();
    }
    static void GetNamespace()
    {
        string xml;

        onenoteApp.GetHierarchy(null, OneNote.HierarchyScope.hsNotebooks, out xml);
        var doc = XDocument.Parse(xml);
        ns = doc.Root.Name.Namespace;
    }

    static string GetObjectId(string parentId, OneNote.HierarchyScope scope, string objectName)
    {
        string xml;
        onenoteApp.GetHierarchy(parentId, scope, out xml);

        var doc = XDocument.Parse(xml);
        var nodeName = "";

        switch (scope)
        {
            case (OneNote.HierarchyScope.hsNotebooks): nodeName = "Notebook"; break;
            case (OneNote.HierarchyScope.hsPages): nodeName = "Page"; break;
            case (OneNote.HierarchyScope.hsSections): nodeName = "Section"; break;
            default:
                return null;
        }

        var node = doc.Descendants(ns + nodeName).Where(n => n.Attribute("name").Value == objectName).FirstOrDefault();

        return node.Attribute("ID").Value;
    }
    static string GetPageContent(string pageId)
    {
        string xml;
        onenoteApp.GetPageContent(pageId, out xml, OneNote.PageInfo.piAll);
        var doc = XDocument.Parse(xml);
        var outLine = doc.Descendants(ns + "Outline").First();
        var content = outLine.Descendants(ns + "T").First();
        string contentVal = content.Value;
        content.Value = "modified";
        onenoteApp.UpdatePageContent(doc.ToString());
        return null;
    }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 C# 和 OneNote 互操作性写入 OneNote 2013 页面 的相关文章

  • WPF 中的屏幕分辨率问题?

    我将在 WPF 中使用以下代码检测分辨率 double height System Windows SystemParameters PrimaryScreenHeight double width System Windows Syste
  • 在 VS2017 下使用 Conan 和 CMake 项目进行依赖管理

    我正在尝试使用 CMake 与 VS2017 集成为 C 设置一个开发环境 以便在 Linux x64 下进行编译 为了更好地管理依赖关系 我选择使用 Conan 但我对这个软件还很陌生 我想知道让 VS2017 识别项目依赖关系的最佳方法
  • 内联函数/方法

    声明 内联函数必须在调用之前定义 这个说法正确吗 EDIT 该问题最初是德语 内联功能穆森 弗 伊赫雷姆 奥夫鲁夫定义 sein 也许它对任何人都有帮助 是的 它是正确的 但只是部分正确 它可能正确地重新构建如下 内联函数必须在每个翻译单位
  • 从多线程程序中调用 system()

    我们正在开发一个用 C 编写的多线程内存消耗应用程序 我们必须执行大量的 shellscript linux 命令 并获取返回码 读完之后article http www linuxprogrammingblog com threads a
  • SSL/TLS/HTTPS 站点在 C#/.NET WebBrowser 控件中非常慢,但在 Internet Explorer 中则很好

    背景 我正在修改自动维基浏览器 http en wikipedia org wiki Wikipedia AutoWikiBrowser使用托管在安全服务器上的 MediaWiki 站点 我允许用户通过 C 应用程序中的 WebBrowse
  • 如何尝试/捕获所有异常

    我正在完成由其他人启动的 UWP 应用程序 该应用程序经常崩溃 我总是陷入困境应用程序 at if global System Diagnostics Debugger IsAttached global System Diagnostic
  • 为什么大多数平台上没有“aligned_realloc”?

    MSVC有自己的非标准函数 aligned malloc aligned realloc and aligned free C 17和C11引入了 std aligned alloc 其结果可以是de分配有free or realloc B
  • CultureInfo 的实例(来自相同的文化)根据操作系统而变化

    我有一个网站 上面写着这样的日期 CultureInfo cultureInfo CultureInfo GetCultures CultureTypes AllCultures FirstOrDefault c gt string Equ
  • mprotect 之后 malloc 导致分段错误

    在使用 mprotect 保护内存区域后第一次调用 malloc 时 我遇到分段错误 这是执行内存分配和保护的代码片段 define PAGESIZE 4096 void paalloc int size Allocates and ali
  • 如何在 C++ 中将 CString 转换为 double?

    我如何转换CString to a double在 C 中 Unicode 支持也很好 Thanks A CString可以转换为LPCTSTR 这基本上是一个const char const wchar t 在 Unicode 版本中 知
  • libxml2 xmlChar * 到 std::wstring

    libxml2似乎将所有字符串存储在 UTF 8 中 如xmlChar xmlChar This is a basic byte in an UTF 8 encoded string It s unsigned allowing to pi
  • OpenCV 2.4.3 中的阴影去除

    我正在使用 OpenCV 2 4 3 最新版本 使用内置的视频流检测前景GMG http docs opencv org modules gpu doc video html highlight gmg gpu 3a 3aGMG GPU算法
  • 为什么具有相同名称但不同签名的多个继承函数不会被视为重载函数?

    以下代码片段在编译期间产生 对 foo 的调用不明确 错误 我想知道是否有任何方法可以解决此问题而不完全限定对 foo 的调用 include
  • tabcontrol selectedindex 更改事件未被触发 C#

    嘿伙计们 我有一个很小的问题 请参阅下面的代码 this is main load private void Form1 Load object sender EventArgs e tabAddRemoveOperator Selecte
  • asp.net网格分页的SQL查询

    我在用iBatis and SQLServer 使用偏移量和限制进行分页查询的最佳方法是什么 也许我添加该列ROW NUMBER OVER ORDER BY Id AS RowNum 但这只会阻止简单查询的数据访问 在某些情况下 我使用选择
  • 使用 iTextSharp 5.3.3 和 USB 令牌签署 PDF

    我是 iTextSharp 和 StackOverFlow 的新手 我正在尝试使用外部 USB 令牌在 C 中签署 PDF 我尝试使用从互联网上挖掘的以下代码 Org BouncyCastle X509 X509CertificatePar
  • 从 Delphi 调用 C# dll

    我用单一方法编写了 Net 3 5 dll 由Delphi exe调用 不幸的是它不起作用 步骤 1 使用以下代码创建 C 3 5 dll public class MyDllClass public static int MyDllMet
  • 在 C++17 中使用 成员的链接错误

    我在 Ubuntu 16 04 上使用 gcc 7 2 并且需要使用 C 17 中的新文件系统库 尽管确实有一个名为experimental filesystem的库 但我无法使用它的任何成员 例如 当我尝试编译此文件时 include
  • C语言声明数组没有初始大小

    编写一个程序来操纵温度详细信息 如下所示 输入要计算的天数 主功能 输入摄氏度温度 输入功能 将温度从摄氏度转换为华氏度 独立功能 查找华氏度的平均温度 我怎样才能在没有数组初始大小的情况下制作这个程序 include
  • 在 Xamarin 中获取 OutOfMemoryException

    java lang OutOfMemoryError 考虑增加 JavaMaximumHeapSize Java 执行时内存不足 java exe 我的 Visualstudio Xamarin 项目出现内存不足异常 请帮助我如何解决此问题

随机推荐

  • 获取个人应用代码并显示

    我正在尝试获取应用程序代码并显示它 例如 如果按钮 X 启动一个新活动 则 textView 显示整个方法 我只到达了如何以 HTML 格式显示代码这个问题 https stackoverflow com questions 1529068
  • 跟踪电子中的窗口大小

    我今天才开始玩 Electron 我需要能够获取可用的窗口大小 并在窗口大小调整时更新它 看起来这并不像传统的 JS 应用程序那么简单 跟踪窗口大小的推荐方法是什么 目前 我有我的主进程和一个渲染器 不打算一次打开超过 1 个渲染器 窗口
  • 如何从命令行发送电子邮件?

    我想从命令行快速发送电子邮件 我意识到可能有多种不同的方法可以做到这一点 我正在寻找一种从 Linux 终端 可能是 bash shell 但任何东西都可以 执行此操作的简单方法 以及在 Windows 上执行此操作的替代方法 我希望能够直
  • 如何在 UML 序列图中表示监听器

    在序列图中 如何表示事件触发的侦听器 它不仅仅是常规方法调用 因此这样显示似乎不正确 我尝试制作包含 JMS 侦听器的系统的序列图 我可以通过系统对 JMS 队列的 send 调用来启动生命线 将调用 send 的系统显示为业务参与者 或者
  • Django 克隆递归对象

    以前 当我想递归地克隆对象时 我遇到了问题 我知道克隆对象的简单方法是这样的 obj Foo objects get pk
  • Swift 中何时使用静态常量和变量?

    有一些帖子介绍如何编写代码static constant and static variable在斯威夫特 但不清楚什么时候使用static constant and static variable而不是constant and varia
  • (InvalidRequestException) 调用 GetQueryResults 时...从 Lambda Python 查询 Athena...无法读取结果

    我一直在尝试从我的 lambda 函数 Python3 8 查询 Athena 但尽管尝试添加 if else 语句来检查执行状态 但我不断收到相同的错误 并且在 aws 控制台和 cli 上总是出现相同的错误本地 这是 lambda 函数
  • 根据用户用于浏览的设备(android tab、iphone、ipad)动态更改 zend 中的布局和模板

    我正在开发一个应用程序 PC 杂志商店 我已经完成了 PC 的大部分工作 但客户端也希望在其他 Android 设备上有同样的东西 作为 Web 视图加载 由于这些设备的高度和宽度与PC不同 所以我需要以最简单的方式获取设备的尺寸和高度 以
  • 我也应该连接到 QNetworkReply::error() 吗?

    我创建了一个 POST 请求并连接到完成的 http qt project org doc qt 5 0 qtnetwork qnetworkreply html finished signal QNetworkReply reply ma
  • 从 Uri 打开文件,与 Android 中的位置无关

    我可以使用一些帮助来了解如何在 android 中打开文件 我的具体问题与打开图像文件有关 在我的应用程序中 用户使用他们选择的相机应用程序拍摄图像 然后我对返回的图像进行操作 根据手机 Android 版本和所选相机应用程序的不同 我会在
  • javascript正则表达式从字符串末尾到开头搜索

    是否可以使用正则表达式从字符串末尾到开头进行搜索 例如我有一个字符串 a2bba2b 我知道我需要最后一次出现 a2 并且让机器遍历可能很长的整个字符串似乎效率非常低 我知道针将位于字符串 haystack 末尾附近的某个位置 所以我想颠倒
  • 显示特定产品类别的 WooCommerce 购物车项目简短描述

    在 WooCommerce 中 我尝试添加购物车项目中特定类别的产品简短描述 I found 这段代码 https stackoverflow com questions 27900033 solution for short descri
  • 使用 Javascript 将油画/素描效果应用于照片

    我想使用javascript从照片开始模拟人体绘图效果 我一直在搜索几个进行图像处理的 js 库 主要是在画布上 但似乎没有人尝试过我正在寻找的东西 我认为用javascript实现这样的效果并不是不可能的 所以我想知道为什么我找不到任何已
  • 如何在点击链接时创建 iframe?

    我有一个网页 表格内有几个链接 其中一个链接位于 td 标记内 我想要一种调用 iframe 的方法 一旦用户单击链接 该 iframe 就会打开 当 iframe 弹出时 页面的其余部分将变得无响应 一旦用户退出 iframe 外部页面就
  • 从哪里可以获得 SQL Server Compact Edition 4? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 将 lambda 表达式作为 C++ 中的成员函数指针传递

    我有一个框架函数 它需要一个对象和一个成员函数指针 回调 如下所示 do some work Object optr void Object fptr will call optr gt fptr 我怎样才能将 lambda 表达式传递给它
  • 为什么我需要调用 Dispatcher.BeginInvoke() 以允许视觉对象在打印之前正确绑定?

    我有一个固定大小为 850x1100 的 UserControl 它可以提供与信纸大小的纸张相同的宽高比 我将其显示在我的窗口中Viewbox 它的作用很像打印预览 该控件继承了我的窗口的 DataContext 当它显示在屏幕上时 所有绑
  • 从 Python 运行 WinSCP 命令

    我创建了以下命令文件 其名称为submitCmd txt open email protected cdn cgi l email protection privatekey C Users Mike Desktop uploader my
  • 如何定义一个 Emacs Lisp 函数来生成一个 shell 缓冲区,并在 shell 中执行特定的命令?

    我正在做 Rails 开发 发现我需要生成一个shell 重命名缓冲区 例如 webrick 然后启动命令 rails s 如果每次启动 emacs 时我想要一个 Rails 控制台或 Rails dbconsole rspec spork
  • 如何使用 C# 和 OneNote 互操作性写入 OneNote 2013 页面

    我看过很多关于此的文章 但所有这些文章要么不完整 要么没有回答我的问题 使用C 和 OneNote Interop 我想简单地将文本写入现有的 OneNote 2013 页面 目前我有一个 OneNote 笔记本 其中一个部分标题为 Sam