Pandas:将 Dataframe 写入打开的 Excel 文件
Pandas: Writing Dataframe to an open Excel File
我正在尝试通过单击按钮从 Excel 中的 VBA 调用此 python 脚本,它会读取数据,但如果 Excel 文件已打开。当文件关闭时一切正常,但是要从 excel 宏 运行 它,需要打开文件。这可能吗?
错误:
PermissionError: [Errno 13] Permission denied: 'SampleTest.xlsm'
import pandas as pd
from openpyxl import load_workbook
path = 'SampleTest.xlsm'
# Write to excel with Openpyxl
book = load_workbook(filename=path, read_only=False, keep_vba=True)
writer = pd.ExcelWriter(path, mode="a", engine="openpyxl", if_sheet_exists="replace")
writer.book = book
writer.sheets = dict((ws.title, ws) for ws in book.worksheets)
dfMatches.to_excel(writer, "Matches", index=False)
writer.save()
不,这不能用 openpyxl
完成
你要的是xlwings
。此模块可以 运行 实时 excel 文件 - 事实上,您可以直接从 Excel 中将其设置为 运行 python 脚本。这应该完全符合您的要求。可以找到文档 here.
如何使用 xlwings
的快速示例(打开 Excel 文件)。
import xlwings as xw
xw.Range('A1').value = "I wrote to this cell from xlwings"
我正在尝试通过单击按钮从 Excel 中的 VBA 调用此 python 脚本,它会读取数据,但如果 Excel 文件已打开。当文件关闭时一切正常,但是要从 excel 宏 运行 它,需要打开文件。这可能吗?
错误:
PermissionError: [Errno 13] Permission denied: 'SampleTest.xlsm'
import pandas as pd
from openpyxl import load_workbook
path = 'SampleTest.xlsm'
# Write to excel with Openpyxl
book = load_workbook(filename=path, read_only=False, keep_vba=True)
writer = pd.ExcelWriter(path, mode="a", engine="openpyxl", if_sheet_exists="replace")
writer.book = book
writer.sheets = dict((ws.title, ws) for ws in book.worksheets)
dfMatches.to_excel(writer, "Matches", index=False)
writer.save()
不,这不能用 openpyxl
你要的是xlwings
。此模块可以 运行 实时 excel 文件 - 事实上,您可以直接从 Excel 中将其设置为 运行 python 脚本。这应该完全符合您的要求。可以找到文档 here.
如何使用 xlwings
的快速示例(打开 Excel 文件)。
import xlwings as xw
xw.Range('A1').value = "I wrote to this cell from xlwings"