C#学习教程:从C#创建新的One Note 2010页面分享


从C#创建新的One Note 2010页面

我是一个亲戚c#业余爱好者,我无法快速掌握我想的Office Interop(如果我错了,请纠正我):

我想要一个在One Note 2010中创建新页面的控制台应用程序。新页面将始终进入同一部分,该部分已经存在。 页面标题将是Windows剪贴板中的字符串。 我知道如何做剪贴板部分(该程序还在指定的路径中创建一个文件夹,并使用剪贴板中的字符串命名),但我无法开始使用One Note部分。

我一直试图理解这些文章(第二篇文章只有VB中的例子,所以我也必须处理它):

http://msdn.microsoft.com/en-us/library/gg649853.aspx

http://code.msdn.microsoft.com/windowsdesktop/OneNote-2010-Create-New-880f8ee3

但我仍然基本上迷失了。 我不需要找到任何部分或任何部分的名称,我知道我的新页面将始终进入名为Notes的笔记本中,至少在第一个版本/我还在学习时。

我正在寻找关于如何从C#创建新的One Note页面的精彩,有针对性的解释。 MSDN文章假设我没有的各种先验知识,而且我宁愿从一开始就学习,而不是花一个月的时间阅读。 一旦基本程序工作,我会花很多时间调整它,这应该是一个很好的学习方法。

有关详细文章,请查看此MSDN Magazine链接 。

我在那里使用示例代码创建了一个快速代码段,供您在给定笔记本中的给定部分中创建新页面。

如果您使用的是Visual Studio 2010,则文章中列出了几个“陷阱”:

首先,由于Visual Studio 2010附带的OneNote互操作程序集不匹配,因此不应直接引用
“添加引用”对话框的“.NET”选项卡上的Microsoft.Office.Interop.OneNote组件,但在COM选项卡上引用Microsoft OneNote 14.0类型库组件。 这仍然会在项目的引用中添加OneNote互操作程序集。

其次,OneNote 14.0类型库与Visual Studio 2010“NOPIA”function不兼容(默认情况下,主要互操作程序集未嵌入应用程序中)。 因此,请确保为OneNote互操作程序集引用将“嵌入互操作类型”属性设置为False。

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Xml.Linq; using Microsoft.Office.Interop.OneNote; namespace OneNote { class Program { static Application onenoteApp = new Application(); static XNamespace ns = null; static void Main(string[] args) { GetNamespace(); string notebookId = GetObjectId(null, HierarchyScope.hsNotebooks, "Tasks"); string sectionId = GetObjectId(notebookId, HierarchyScope.hsSections, "Notes"); string pageId = CreatePage(sectionId, "Test"); } static void GetNamespace() { string xml; onenoteApp.GetHierarchy(null, HierarchyScope.hsNotebooks, out xml); var doc = XDocument.Parse(xml); ns = doc.Root.Name.Namespace; } static string GetObjectId(string parentId, HierarchyScope scope, string objectName) { string xml; onenoteApp.GetHierarchy(parentId, scope, out xml); var doc = XDocument.Parse(xml); var nodeName = ""; switch (scope) { case (HierarchyScope.hsNotebooks): nodeName = "Notebook"; break; case (HierarchyScope.hsPages): nodeName = "Page"; break; case (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 CreatePage(string sectionId, string pageName) { // Create the new page string pageId; onenoteApp.CreateNewPage(sectionId, out pageId, NewPageStyle.npsBlankPageWithTitle); // Get the title and set it to our page name string xml; onenoteApp.GetPageContent(pageId, out xml, PageInfo.piAll); var doc = XDocument.Parse(xml); var title = doc.Descendants(ns + "T").First(); title.Value = pageName; // Update the page onenoteApp.UpdatePageContent(doc.ToString()); return pageId; } } } 

如果MS Interop不是您的选项,请尝试查看Aspose.Note 。 创建新页面非常简单:

上述就是C#学习教程:从C#创建新的One Note 2010页面分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—猴子技术宅(www.ssfiction.com)

 var doc = new Document(); var page = new Page(doc); page.Title = new Title(doc) { TitleText = new RichText(doc) { Text = "Title text.", DefaultStyle = TextStyle.DefaultMsOneNoteTitleTextStyle }, TitleDate = new RichText(doc) { Text = new DateTime(2011, 11, 11).ToString("D", CultureInfo.InvariantCulture), DefaultStyle = TextStyle.DefaultMsOneNoteTitleDateStyle }, TitleTime = new RichText(doc) { Text = "12:34", DefaultStyle = TextStyle.DefaultMsOneNoteTitleTimeStyle } }; page.AppendChild(outline); doc.AppendChild(page); doc.Save("output.one") 

本文来自网络收集,不代表猴子技术宅立场,如涉及侵权请点击右边联系管理员删除。

如若转载,请注明出处:https://www.ssfiction.com/ckf/1031786.html

发表评论

邮箱地址不会被公开。 必填项已用*标注