如何在打开 Excel 应用程序时 Python 更改 xlsx 文件?
How to make Python change xlsx files when Excel app is opened?
抱歉,如果我问了一个以前可能有人问过的问题,但我在 Google 和 Stack Overflow 论坛中找不到真正的答案。
问题与 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'
我也发现了类似的问题:
write to an open exceldocument
如何解决此错误并使 Python 处理 Excel 中打开的文件?我当前的版本是 Python 2.7。另外,如果可能的话,在 xlsm
文件中制作相同魔法的解决方案是什么?
更新:
如果第一个问题没有解决方案(除了 Google 文档,感谢@Alex),是否可以编写代码使以下算法执行:
1. 关闭 Excel 应用程序并保存
2. 在python中做人员,并将结果保存在Excel中的某个目的地
3. 在 Excel 应用程序中打开 Excel 文件?
我知道怎么做 2。对 1 和 3 有什么想法吗?
UPD2:
xlwings
真的很棒!正是我需要的!谢谢!
我想提供一个对我有用的代码(其他用户可以在 Google 中找到并使用):
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程序没有控制权。因此,如果它试图修改的文件被 Excel 锁定,OpenPyXL 对此无能为力。
这个问题被标记为 excel-vba and that is certainly one appropriate way to control the Excel program (so you can modify data while it is open in Excel, or close Excel). If you want an interface to Excel using Python, the best package these days is xlwings。
抱歉,如果我问了一个以前可能有人问过的问题,但我在 Google 和 Stack Overflow 论坛中找不到真正的答案。
问题与 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'
我也发现了类似的问题:
write to an open exceldocument
如何解决此错误并使 Python 处理 Excel 中打开的文件?我当前的版本是 Python 2.7。另外,如果可能的话,在 xlsm
文件中制作相同魔法的解决方案是什么?
更新:
如果第一个问题没有解决方案(除了 Google 文档,感谢@Alex),是否可以编写代码使以下算法执行: 1. 关闭 Excel 应用程序并保存 2. 在python中做人员,并将结果保存在Excel中的某个目的地 3. 在 Excel 应用程序中打开 Excel 文件?
我知道怎么做 2。对 1 和 3 有什么想法吗?
UPD2:
xlwings
真的很棒!正是我需要的!谢谢!
我想提供一个对我有用的代码(其他用户可以在 Google 中找到并使用):
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程序没有控制权。因此,如果它试图修改的文件被 Excel 锁定,OpenPyXL 对此无能为力。
这个问题被标记为 excel-vba and that is certainly one appropriate way to control the Excel program (so you can modify data while it is open in Excel, or close Excel). If you want an interface to Excel using Python, the best package these days is xlwings。