如何使用Python读取并解析Lotus Notes文档内的表格数据
问题解决步骤
第二行win32com.client.Dispatch('Lotus.NotesSession')报错通常由以下几种原因导致,按顺序排查即可:
- Python和Notes客户端位数不匹配
Lotus Notes的COM组件默认仅支持32位运行环境,如果你安装的是64位版本的Python,就会出现调用失败的问题。卸载当前Python,安装对应32位版本即可解决该问题。 - COM组件未正确注册
先确认你已经完整安装了Lotus/IBM/HCL Notes客户端,并且已经成功登录过至少一次。之后以管理员身份打开命令提示符,进入Notes的安装目录(默认路径为C:\Program Files (x86)\IBM\Notes),执行以下命令完成组件注册:
弹出注册成功的提示后,再重新运行代码。regsvr32 nlsxbe.dll - ProgID不匹配
如果你用的是新版HCL Notes,COM组件的ID已经变更,将第二行的组件ID改为Notes.NotesSession即可:session = win32com.client.Dispatch('Notes.NotesSession')
其他注意事项
session.Initialize()传入的参数是你Notes客户端的登录密码,如果你的客户端启动时不需要手动输入密码,直接传入空字符串即可。GetDatabase的第二个参数需要传入nsf文件的完整绝对路径,或者确保nsf文件存放在Notes客户端的默认数据目录下,否则会找不到数据库文件。
修正后可参考的代码
import win32com.client # 适配新版Notes可以改成Notes.NotesSession session = win32com.client.Dispatch('Lotus.NotesSession') # 没有密码就传空字符串 session.Initialize('你的Notes客户端密码') # 填nsf文件的完整绝对路径 db = session.GetDatabase('', r'C:\你的数据库完整路径\dddddddd.nsf') view = db.GetView(r'vvvvvvvv') doc = view.GetFirstDocument() print(doc.GetFirstItem('iiiiii').Values)
内容的提问来源于stack exchange,提问作者ImFabien75
相关产品推荐
相关产品推荐

