0

我尝试使用 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);
        }
    }

我真的不知道如何解决这个问题。

4

2 回答 2

1

您的 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 中可以发送最后修改日期进行检查,还有一个参数可以强制本地覆盖。

于 2013-11-03T22:35:31.723 回答
0

strImportXML 字符串中存在一些问题,导致更新失败。

  • 调整 @"<?xml version="+"1.0"+" encoding="+"utf-16"+"?>""<?xml version=\"" + "1.0" + "\" encoding=\"" + "utf-16" + "\"?>"
  • 在页面 ID 属性前添加一个空格(+ " " + "ID...
    而不是+ "" + "ID
  • 确保在您的onApplication 层次结构中找到/存在页面 ID
  • 确保您使用元素
    中定义的匹配命名空间引用 COM 库(例如 Office 2013/15.0 对象库有另一个命名空间)one:Page
于 2013-03-08T09:40:30.513 回答