如何在openpyxl进行更改时观察Excel文件更改

时间:2015-10-19 16:20:06

标签: python excel applescript pywin32 openpyxl

我构建了一个iOS应用程序,它接受用户的输入,然后将他们的数据作为.csv文件上传到dropbox。

现在,我想构建一个跨平台桌面应用程序,它使用openpyxl和Python dropbox api来监听这些.csv上传,然后将这些.csv文件中的数据写入各种.xlsx工作簿。我对此没有任何问题,除了我的客户希望能够在excel工作簿更改时在他们的桌面上观看。

每当我使用openpyxl进行作业时,例如......

wb = load_workbook(“sample.xlsx”)#load一个现有的.xlsx文件

ws = wb.active #get活动工作表

ws ['A1'] = 12 #assign data to cell A1

...然后运行此脚本将成功更改文件,但我必须关闭然后打开文件才能看到更改,而不是在发生变化时观察更改。

所以,我的问题是,我如何看待openpyxl对excel工作簿的更改发生,并且是否有针对此的跨平台解决方案?感谢接受问题的替代方法!

我对此的研究已经持续了几个小时,而我提出的最好的是AppleScript和pywin32的混合体,但这可能真正快速实现丑陋/错误!

我非常感谢你的帮助!

1 个答案:

答案 0 :(得分:2)

我认为你不能轻易做到这一点。 Excel文件本身就是zip存档,这使得监控变得非常困难,因为您无法修改zip文件:您始终创建新的存档。这正是Excel使用文件锁定的原因。

听起来我觉得你需要一些Excel本身可以监控和集成的外部数据源。您可能希望查看xlwings以进行就地编辑。或者,也可以使用openpyxl创建外部数据源。它将与外部文件一起使用。