如何在Excel应用程序打开时使Python更改xlsx文件?

对不起,如果我问一个以前可能已经问过的问题,但我不能真正find在谷歌和堆栈溢出论坛的答案。

问题与openpyxl用法有关,因为它是使用xlsx文件的最方便的库。

  import openpyxl wb = openpyxl.load_workbook("D:/Python.xlsx") sheet = wb.active i = 0 sheet["A1"] = i wb.save("D:/Python.xlsx") 

但是,它不适用于打开的Excel文件。 我得到一个错误

  [Errno 13] Permission denied: 'D:/Python.xlsx' 

我也发现了类似的问题:

PermissionError [errno 13]在Komodo中运行openpyxl python脚本时

写一个开放的exceldocument

我能做些什么来解决这个错误,并使Python在Excel中打开的文件工作? 我目前的版本是Python 2.7。 另外,如果可能的话,在xlsm文件中制作相同的魔法有什么解决scheme?

UPD:

如果没有第一个问题的解决scheme(除了Google Docs,也许感谢@Alex),是否有可能编写一个代码使得以下algorithm能够执行:1.closuresExcel应用程序并保存2.在Python中执行工作人员,并将结果保存在Excel中的某个目标中3.在Excel应用程序中打开Excel文件?

我知道该怎么做2.对1和3有什么想法?

UPD2:

xlwings真的很棒! 正是我所需要的! 谢谢!

我想提供一个适用于我的代码(其他用户可以在Google中find并使用):

  import xlwings as xl import time wb = xl.Workbook.active() sheet = wb.active iter = 10 i = 0 while True: i += 1 if i <= iter: xl.Range("A1").value = i time.sleep(1) print(i) else: break wb.save() print("Done!") 

OpenPyXL直接在文件上运行; 它与Excel程序无关,并且不能控制Excel程序。 因此,如果它试图修改的文件被Excellocking,那么OpenPyXL就无法做到这一点。

这个问题用excel-vba标记,这当然是控制Excel程序的一个合适的方法(这样您可以在Excel中打开数据或closuresExcel时修改数据)。 如果你想要一个使用Python的Excel接口,最好的包装是xlwings 。