我看过很多关于此的文章,但所有这些文章要么不完整,要么没有回答我的问题。使用C#
和 OneNote Interop,我想简单地将文本写入现有的 OneNote 2013 页面。目前我有一个 OneNote 笔记本,其中一个部分标题为"Sample_Section
”和一个名为"MyPage"
.
我需要能够使用C#
代码将文本写入此页面,但我无法弄清楚如何或找到任何资源来执行此操作。我查看了网络上的所有代码示例,但没有一个能够回答这个简单的问题或能够做到这一点。此外,许多代码示例已经过时,并且在尝试运行它们时会中断。
我用的是Microsoft
代码示例显示了如何更改部分的名称,但我找不到任何代码来将文本写入Page
。据我所知,没有简单的方法可以做到这一点。我花了很多时间来研究这个并在线查看不同的示例,但没有一个能够提供帮助。
我已经看过了MSDN
文章关于OneNote
Interop
以及。我隐约明白如何OneNote
Interop
工作通过XML
但任何额外的帮助理解这一点也将不胜感激。最重要的是,我真的很欣赏一个代码示例,它演示了如何将文本写入OneNote
2013 笔记本页。
我尝试过使用这个堆栈溢出答案:从 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(使用前将#替换为@)