使用开发人员API更新OneNote页
本文关键字:更新 OneNote API 开发 | 更新日期: 2023-09-27 17:58:55
我尝试使用Microsoft参考更新OneNote中的页面:http://msdn.microsoft.com/en-us/library/office/jj680118.aspx
这是我的问题。当我试图用正确的ID更新页面时,它向我抛出了一个错误:HRESULT异常:0x80042000。
这是我的代码:
static void UpdatePageContent()
{
ApplicationClass onApplication = new ApplicationClass();
String strImportXML;
strImportXML = @"<?xml version="+"1.0"+" encoding="+"utf-16"+"?>" +
" <one:Page xmlns:one="+"http://schemas.microsoft.com/office/onenote/12/2004/onenote'""+"" +
"ID='"{5BE09697-903A-45DD-88D4-8AD301A3D91F}{1}{B0}'">" +
" <one:PageSettings RTL='"false'" color='"automatic'">" +
" <one:PageSize>" +
" <one:Automatic/>" +
" </one:PageSize>" +
" <one:RuleLines visible='"false'"/>" +
" </one:PageSettings>" +
" <one:Title style='"font-family:Calibri;" +
" font-size:17.0pt'" lang='"en-US'">" +
" <one:OE alignment='"left'">" +
" <one:T>" +
" <![CDATA[My Sample Page]]>" +
" </one:T>" +
" </one:OE>" +
" </one:Title>" +
" <one:Outline >" +
" <one:Position x='"120'" y='"160'"/>" +
" <one:Size width='"120'" height='"15'"/>" +
" <one:OEChildren>" +
" <one:OE alignment='"left'">" +
" <one:T>" +
" <![CDATA[Sample Text]]>" +
" </one:T>" +
" </one:OE>" +
" </one:OEChildren>" +
" </one:Outline>" +
" </one:Page>";
// Update page content
try
{
onApplication.UpdatePageContent(strImportXML, System.DateTime.MinValue);
}
catch (COMException e)
{
Console.WriteLine("Error Message : " + e.Message);
}
}
我真的不知道该怎么解决。
您的XML对OneNote不友好。
以下是错误代码列表:http://msdn.microsoft.com/en-us/library/office/jj680117.aspx
你可以去掉第一行,正如@Sebastian所说,它无论如何都是错误的,我的经验是OneNote不需要它。
另外,请记住,您不需要发送整个页面。您只需要发送页面的objId和任何更新的对象。因此,需要添加一个大纲,然后这也应该起作用:
"<one:Page xmlns:one='"http://schemas.microsoft.com/office/onenote/12/2004/onenote'" +
"ID='"{5BE09697-903A-45DD-88D4-8AD301A3D91F}{1}{B0}'">" +
" <one:Outline >" +
" <one:Position x='"120'" y='"160'"/>" +
" <one:Size width='"120'" height='"15'"/>" +
" <one:OEChildren>" +
" <one:OE alignment='"left'">" +
" <one:T>" +
" <![CDATA[New Text]]>" +
" </one:T>" +
" </one:OE>" +
" </one:OEChildren>" +
" </one:Outline>";
只会添加此新大纲。
如果你仍然有问题(它没有抱怨,但内容没有更新),那么检查UpdatePageContent的额外参数,当然在2013年API中,你可以发送最后修改的日期来检查,还有一个参数可以强制本地重写。
strImportXML字符串中存在一些问题,导致更新失败。
- Adjust
@"<?xml version="+"1.0"+" encoding="+"utf-16"+"?>"
至"<?xml version='"" + "1.0" + "'" encoding='"" + "utf-16" + "'"?>"
- 在页面ID属性(
+ " " + "ID
…
而不是+ "" + "ID
) - 确保在
onApplication
中找到/存在页面ID层次结构 - 请确保引用具有匹配项的COM库
one:Page
元素中定义的命名空间(例如Office 2013/15.0
对象库有另一个命名空间)