使用C#导出到OneNote

时间:2016-09-18 08:24:35

标签: c# ms-office onenote onenote-api

我想将我的应用程序中的文本导出到MS OneNote并支持Office版本:2007,2010,2013和2016.我使用的是Microsoft.Office.Interop.OneNote.dll Version:12.0. 0,因为它随所有Office版本提供。

问题是,当我尝试使用“CreateNewPage”在Office 2013上创建新的OneNote页面时,我得到了例外:

  

hrSectionReadOnly 0x8004200b

  • 该部分是只读的。

我可以看到属性readOnly="true"我试图改变它并且没有帮助。仍然得到同样的例外。

如果我引用Microsoft.Office.Interop.OneNote.dll Version:15.0.0,那么一切正常。

任何想法,为什么它只读,我怎么能克服这个问题?

以下是代码示例:

string strPath;
string sectionId;
string xml;
// points directly on OneNote's Unfiled section
_app.GetSpecialLocation(SpecialLocation.slUnfiledNotesSection, out strPath);

_app.OpenHierarchy(strPath, "", out sectionId, CreateFileType.cftSection);
_app.CreateNewPage(sectionId, out _sectionId, NewPageStyle.npsDefault);

var strImportXml = @"<?xml version='1.0' ?> 
    <one:Page xmlns:one='" + _oneNoteNamespace + "' ID='" + _sectionId + @"'>
        <one:Title>
               <one:OE>
                      <one:T>
                             <![CDATA[ 
                             ]]> 
                      </one:T>
               </one:OE>
        </one:Title>
        <one:Outline>
               <one:Meta name='Rumba' content='" + new Random().Next() + @"' /> 
                      <one:OEChildren>
                             <one:HTMLBlock>
                                    <one:Data>
                                           <![CDATA[My sample page]]> 
                                    </one:Data>
                              </one:HTMLBlock>
                      </one:OEChildren>
        </one:Outline>
    </one:Page>";

_app.UpdatePageContent(strImportXml, DateTime.MinValue);
_app.NavigateTo(_sectionId, String.Empty, true);

1 个答案:

答案 0 :(得分:0)

function node(x)
{
	this.x=x;
	this.next=null;
}

function sl()
{
	this.l=0;
	this.first=null;
}

sl.prototype.insertl=function(x)
{
	var newnode=new node(x);
	var t=this.first;
	if(!this.first)
		this.first=newnode;
	else
	{
		while(t.next)
			t=t.next;
		t.next=newnode;
	}
	l++;
}

sl.prototype.deletel=function()
{
	if(this.first)
	{
		var t=this.first;
		while(t.next)
			t=t.next;
		if(t)
			t=null;
	}
}

sl.prototype.console=function()
{
	var t=this.first;
	while(t)
	{
		document.write(t.x);
		t=t.next;
	}
}
sl();
sl.prototype.insertl(0);
sl.prototype.insertl(1);
sl.prototype.insertl(2);
sl.prototype.insertl(3);
sl.prototype.insertl(4);
sl.prototype.deletel();
alert("check");
sl.prototype.console();

检查文件是否处于活动状态,如果未激活,则可以使用else部分,以便当前数据附加有退出值