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

How to Watch Excel File Change While openpyxl Makes Changes

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

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

每当我用 openpyxl 做作业时,例如...

wb = load_workbook("sample.xlsx") #load an existing .xlsx file
ws = wb.active #get active worksheet
ws['A1'] = 12 #assign data to cell A1

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

所以,我的问题是,我如何观察 openpyxl 对 excel 工作簿的更改,是否有跨平台解决方案?解决问题的替代方法表示赞赏!

我对此进行了几个小时的研究,我想出的最好的办法是 AppleScript 和 pywin32 的某种混合体,但这可能会变得真实 ugly/buggy 非常快!

非常感谢您的帮助!

我不认为你可以轻松做到这一点。 Excel 文件本身就是简单的 zip 存档,这使得监控非常困难,因为您无法就地修改 zip 文件:您总是创建一个新的存档。这正是 Excel 使用文件锁定的原因。

在我看来,您需要某种 Excel 本身可以监控和集成的外部数据源。您可能想查看 xlwings 以进行就地编辑。或者,可以使用 openpyxl 创建外部数据源。它将与外部文件一起使用。