oneNote 2013使用visual studio 2015编程c# [英] oneNote 2013 programing c# with visual studio 2015

查看:59
本文介绍了oneNote 2013使用visual studio 2015编程c#的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试编写一个脚本,每次打开一个新的onenote 2013页面并将图像过去到该页面。


我正在使用视觉工作室2015.你能帮我解决一下我需要添加的图书馆才能让它工作。 



这是我正在使用的代码:



static







应用程序onenoteApp =
new < span style ="font-size:small"> 应用程序();



           





静态 XNamespace ns
=
null ;



           





静态 void Main( < span style ="color:#0000ff; font-size:small"> string []
args)



            {


                GetNamespace();


               





string notebookId = GetObjectId( null
HierarchyScope.hsNotebooks,
"任务" );



        ;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP; &NBSP;





string sectionId = GetObjectId(notebookId,
HierarchyScope.hsSections,
"注释" );



     &NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;





string pageId = CreatePage(sectionId,
" ;测试" );



       &NBSP;&NBSP;&NBSP;&NBSP;&NBSP; }


           





静态 void GetNamespace()



            {


               





string xml;



             ;&NBSP;&NBSP;&NBSP;&NBSP; onenoteApp.GetHierarchy(





null ,HierarchyScope.hsNotebooks,
out xml);



         ;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;





var doc =
XDocument 。Parse(xml);



         ;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP; ns = doc.Root.Name.Namespace;


            }


           





静态 string GetObjectId( < span style ="color:#0000ff; font-size:small"> string parentId,
HierarchyScope范围,
string objectName)



            {


               





string xml;



             ;&NBSP;&NBSP;&NBSP;&NBSP; onenoteApp.GetHierarchy(parentId,scope,





out xml);



       &NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;





var doc =
XDocument 。Parse(xml);



         ;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;





var nodeName =
"" ;



          ;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;





开关 (范围)


< span style ="font-size:small">

           &NBSP;&NBSP;&NBSP;&NBSP;&NBSP; {


                   





case (HierarchyScope.hsNotebooks):nodeName
=
"笔记本" ;
break ;



  &NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;





case (HierarchyScope.hsPages):nodeName
=
"页面" ;
break ;



  &NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;





case (HierarchyScope.hsSections):nodeName
=
" Section" ;
break ;



  &NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;





默认


<跨度风格= "字体大小:小">

&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP; &NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;





return null ;


<跨度风格=" 字体大小:小">

&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP; &NBSP;&NBSP; }


               





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



&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;





return node.Attribute( <跨度风格=" 颜色:#a31515;字体大小:小 "> <跨度风格=" 颜色:#a31515;字体大小:小">" ID" )。值;



         &NBSP;&NBSP;&NBSP; }


           





静态 string CreatePage( < span style ="color:#0000ff; font-size:small"> string sectionId,
string pageName)



            {


               





//创建新页面




<跨度风格=" 字体大小:小">

&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP ;





string pageId;



             ;&NBSP;&NBSP;&NBSP;&NBSP; onenoteApp.CreateNewPage(sectionId,





out pageId,NewPageStyle.npsBlankPageWithTitle);



      &NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;





//获取标题和集它到我们的页面名称




<跨度风格= "字体大小:小">

&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP ;&NBSP;&NBSP;&NBSP;





string xml;



             ;&NBSP;&NBSP;&NBSP;&NBSP; onenoteApp.GetPageContent(pageId,





out xml,PageInfo.piAll);



      &NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;





var doc =
XDocument 。Parse(xml);



         ;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;





var title = doc.Descendants(ns +
" T" )。First();



    &NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP; title.Value = pageName;


               





//更新页面





                onenoteApp.UpdatePageContent(doc.ToString());


               &NBSP;





return pageId;



             ; }


        }



解决方案

嗨sudelman ,


根据您的代码,您已创建新页面。


为了插入图像,我建议你尝试以下方法。

 public void InsertImgById(string pageId)
{
string strNamespace =" http://schemas.microsoft.com/office/onenote/2013/onenote" ;;
string m_xmlImageContent =
"< one:Image>< one:Size width = \" {1} \"高度= \" {2} \" isSetByUser = \" true\" /><一个:数据与GT; {0}< /之一:数据与GT;< /之一:图像>英寸;
string m_xmlNewOutline =
"<?xml version = \" 1.0 \"?>< one:Page xmlns:one = \" {2} \" ; ID = \" {1} \"><一个:标题><一个:OE><一个:T>< [CDATA [{3}]]>< /一个:T>< /之一:OE>< /一个:标题> {0}< /之一:>英寸;


位图位图=新位图(@"C:\Users\your image path \ test.png");
MemoryStream stream = new MemoryStream();
bitmap.Save(stream,ImageFormat.Jpeg);
string fileString = Convert.ToBase64String(stream.ToArray());
string notebookXml;

onenoteApp.GetHierarchy(null,HierarchyScope.hsPages,out notebookXml);
var doc = XDocument.Parse(notebookXml);
// var ns = doc.Root.Name.Namespace;

var existingPageId = pageId;
var pageNodeName = doc.Descendants(ns +" Page")。其中(n => n.Attribute(" ID")。Value == existingPageId).FirstOrDefault();
string pageToBeChange = pageNodeName.Attribute(" name")。Value;

string imageXmlStr = string.Format(m_xmlImageContent,fileString,bitmap.Width,bitmap.Height);
// string pageChangesXml = string.Format(m_xmlNewOutline,new object [] {imageXmlStr,existingPageId,strNamespace,pageToBeChange});
string pageChangesXml = string.Format(m_xmlNewOutline,new object [] {imageXmlStr,existingPageId,ns,pageToBeChange});
onenoteApp.UpdatePageContent(pageChangesXml.ToString(),DateTime.MinValue);
}
//调用InsertImgById
GetNamespace();
string notebookId = GetObjectId(null,HierarchyScope.hsNotebooks,"your notebook");
string sectionId = GetObjectId(notebookId,HierarchyScope.hsSections,"your section");
string pageId = CreatePage(sectionId," Test");
InsertImgById(pageId);

最好的问候,


Edward


hi, I'm trying to write a script that will open a new onenote 2013 page each time and past images to that page.

I'm using visual studio 2015. Can you please help me with the library's that I need to add in order for it to work. 

this is the code i'm using:

static

Application onenoteApp = newApplication();

           

staticXNamespacens = null;

           

staticvoidMain(string[] args)

            {

                GetNamespace();

               

stringnotebookId = GetObjectId(null, HierarchyScope.hsNotebooks, "Tasks");

               

stringsectionId = GetObjectId(notebookId, HierarchyScope.hsSections, "Notes");

               

stringpageId = CreatePage(sectionId, "Test");

            }

           

staticvoidGetNamespace()

            {

               

stringxml;

                onenoteApp.GetHierarchy(

null, HierarchyScope.hsNotebooks, outxml);

               

vardoc = XDocument.Parse(xml);

                ns = doc.Root.Name.Namespace;

            }

           

staticstringGetObjectId(stringparentId, HierarchyScope scope, stringobjectName)

            {

               

stringxml;

                onenoteApp.GetHierarchy(parentId, scope,

outxml);

               

vardoc = XDocument.Parse(xml);

               

varnodeName = "";

               

switch(scope)

                {

                   

case(HierarchyScope.hsNotebooks): nodeName = "Notebook"; break;

                   

case(HierarchyScope.hsPages): nodeName = "Page"; break;

                   

case(HierarchyScope.hsSections): nodeName = "Section"; break;

                   

default:

                       

returnnull;

                }

               

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

               

returnnode.Attribute("ID").Value;

            }

           

staticstringCreatePage(stringsectionId, stringpageName)

            {

               

// Create the new page


               

stringpageId;

                onenoteApp.CreateNewPage(sectionId,

outpageId, NewPageStyle.npsBlankPageWithTitle);

               

// Get the title and set it to our page name


               

stringxml;

                onenoteApp.GetPageContent(pageId,

outxml, PageInfo.piAll);

               

vardoc = XDocument.Parse(xml);

               

vartitle = doc.Descendants(ns + "T").First();

                title.Value = pageName;

               

// Update the page


                onenoteApp.UpdatePageContent(doc.ToString());

               

returnpageId;

            }

        }

解决方案

Hi sudelman,

Based on your code, you have achieved creating a new page.

For inserting images, I suggest you try below methods.

        public void InsertImgById(string pageId)
        {
            string strNamespace = "http://schemas.microsoft.com/office/onenote/2013/onenote";
            string m_xmlImageContent =
"<one:Image><one:Size width=\"{1}\" height=\"{2}\" isSetByUser=\"true\" /><one:Data>{0}</one:Data></one:Image>";
            string m_xmlNewOutline =
               "<?xml version=\"1.0\"?><one:Page xmlns:one=\"{2}\" ID=\"{1}\"><one:Title><one:OE><one:T><![CDATA[{3}]]></one:T></one:OE></one:Title>{0}</one:Page>";


            Bitmap bitmap = new Bitmap(@"C:\Users\your image path\test.png");
            MemoryStream stream = new MemoryStream();
            bitmap.Save(stream, ImageFormat.Jpeg);
            string fileString = Convert.ToBase64String(stream.ToArray());
            string notebookXml;           

            onenoteApp.GetHierarchy(null, HierarchyScope.hsPages, out notebookXml);
            var doc = XDocument.Parse(notebookXml);
           // var ns = doc.Root.Name.Namespace;

            var existingPageId = pageId;
            var pageNodeName = doc.Descendants(ns + "Page").Where(n => n.Attribute("ID").Value == existingPageId).FirstOrDefault();
            string pageToBeChange = pageNodeName.Attribute("name").Value;

            string imageXmlStr = string.Format(m_xmlImageContent, fileString, bitmap.Width, bitmap.Height);
            //string pageChangesXml = string.Format(m_xmlNewOutline, new object[] { imageXmlStr, existingPageId, strNamespace, pageToBeChange });
            string pageChangesXml = string.Format(m_xmlNewOutline, new object[] { imageXmlStr, existingPageId, ns, pageToBeChange });
            onenoteApp.UpdatePageContent(pageChangesXml.ToString(), DateTime.MinValue);
        }
//call InsertImgById
                GetNamespace();
                string notebookId = GetObjectId(null, HierarchyScope.hsNotebooks, "your Notebook");
                string sectionId = GetObjectId(notebookId, HierarchyScope.hsSections, "your section");            
                string pageId = CreatePage(sectionId, "Test");
                InsertImgById(pageId);

Best Regards,

Edward


这篇关于oneNote 2013使用visual studio 2015编程c#的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆