我想通过pythonwin32com模块使用UpdatePageContentCOM方法documentation。到目前为止,我可以做的事情包括获取层次结构、获取页面内容等。我甚至可以有效地操作XML来准备更改(使用matlabcom接口进行测试)。在
这是我要做的最简单的例子:import win32com
from bs4 import BeautifulSoup
oneNoteApp = win32com.client.Dispatch('OneNote.Application')
pageID = '{603BD3F0-4DAB-4E5B-8E28-28CA0F2B0C83}{1}{B0}' # from GetHierarchy
content = oneNoteApp.GetPageContent(pageID)
soup = BeautifulSoup(content, 'xml')
# ... modify xml (changes are valid and tested using MATLAB)
oneNoteApp.UpdatePageContent(soup) # problem is here
现在这最后一行很棘手。根据COM文档,UpdatePageContent的所有其他参数都是可选的。但是,win32com自动生成的绑定中似乎有一个错误。在这个例子中我得到了一个错误
^{pr2}$
因此ExpectedDateLastModified默认参数似乎被破坏了。传递一个像oneNoteApp.UpdatePageContent(content, 0)这样的显式零会导致另一个错误。在
到目前为止,我尝试过的另一件事是用与.net运行时中的DateTime.minValue常量相同的值构造一个pywintypes.TimeType,但是缺少时区信息(astimezone()错误)。在
我尝试了几种添加时区信息的方法,包括在pywintypes.TimeType构造函数中传递它和使用日期时间(这似乎不能由生成的COM绑定自动转换)。在
另一种方法是使用显式时间戳,从xml中解析它们,但是这些时间戳使用毫秒,datetime模块存在问题。在
如何构造一个有效的时间类型0来传递给COM接口?在MATLAB中,我可以传递一个文本0。在
编辑:我知道这个git repo与相关的代码和一些博客文章在网上。代码也使用文本0调用onenote COM,但我无法让包加载COM接口。在
编辑2:我有一个运行,它有同样的问题。在