任何人都可以分享任何代码片段,在unix环境下使用python代码执行execl宏吗?我试过使用xlwings,但它不支持unix环境。用例:我有一个数据透视表报告在Excel中与过滤器和使用宏,我们要改变过滤器的值。
nzrxty8p1#
在Unix环境中,执行Excel宏确实具有挑战性,因为不支持xlwings等工具。但是,您可以尝试使用Python库和外部应用程序的组合来实现这一点。但您需要:
xlwings
Wine
openpyxl
这意味着,您必须安装:
sudo apt update
sudo apt install wine
它将允许您在类Unix操作系统上运行Windows应用程序。
win32com
wine python -m pip install pywin32
pip install openpyxl
创建一个Python脚本(例如,名为run_macro.py),该脚本将通过Wine在Windows Python环境中执行。该脚本应该利用win32com库来运行宏。
run_macro.py
import os import sys from win32com.client import DispatchEx def run_excel_macro(file_path, macro_name): xl = DispatchEx("Excel.Application") xl.Workbooks.Open(file_path) xl.Application.Run(macro_name) xl.Application.Save() # Save the changes xl.Application.Quit() # Quit Excel del xl if __name__ == "__main__": run_excel_macro(sys.argv[1], sys.argv[2])
在Unix环境中创建一个Python脚本trigger_macro_unix.py,通过Wine触发上面的run_macro.py脚本。您可以使用subprocess调用Wine并执行脚本:
trigger_macro_unix.py
subprocess
import subprocess def call_macro_through_wine(file_path, macro_name): subprocess.run(["wine", "python", "path/to/run_macro.py", file_path, macro_name], check=True) if __name__ == "__main__": call_macro_through_wine("path/to/excel_file.xlsm", "MacroName")
现在,您可以执行Unix Python脚本trigger_macro_unix.py,通过Wine和Windows Python环境调用您的宏:
python3 path/to/trigger_macro_unix.py
请将“path/to/run_macro.py“、“path/to/excel_file.xlsm“和“MacroName“替换为实际的文件路径和宏名称。
path/to/run_macro.py
path/to/excel_file.xlsm
MacroName
vx6bjr1n2#
你走进死胡同了。Excel Excel Excel宏使用底层Windows COM服务与真正的Excel进程通信,该进程进而操作文件。换句话说,即使在真正的Windows系统中,您也需要安装Microsoft Office才能运行这些宏,无论调用语言是什么。我个人在没有安装Microsoft Office的Windows机器上遇到过这个问题(由于许可证原因,只有LibreOffice),尽管正确安装了pywin 32,但我无法执行宏。从Linux的唯一可能性是直接操纵Excel文件与openpyxl.这绝对不同于通过Excel宏使用Excel引擎!
2条答案
按热度按时间nzrxty8p1#
在Unix环境中,执行Excel宏确实具有挑战性,因为不支持
xlwings
等工具。但是,您可以尝试使用Python库和外部应用程序的组合来实现这一点。
但您需要:
Wine
虚拟化Windows应用程序以执行Windows宏。openpyxl
这意味着,您必须安装:
sudo apt update
+sudo apt install wine
)。它将允许您在类Unix操作系统上运行Windows应用程序。
win32com
库:wine python -m pip install pywin32
openpyxl
库(在您的 Unix Python环境中)用于读取和操作Excel文件(pip install openpyxl
)创建一个Python脚本(例如,名为
run_macro.py
),该脚本将通过Wine在Windows Python环境中执行。该脚本应该利用win32com
库来运行宏。在Unix环境中创建一个Python脚本
trigger_macro_unix.py
,通过Wine触发上面的run_macro.py
脚本。您可以使用subprocess
调用Wine并执行脚本:现在,您可以执行Unix Python脚本
trigger_macro_unix.py
,通过Wine和Windows Python环境调用您的宏:请将“
path/to/run_macro.py
“、“path/to/excel_file.xlsm
“和“MacroName
“替换为实际的文件路径和宏名称。vx6bjr1n2#
你走进死胡同了。Excel Excel Excel宏使用底层Windows COM服务与真正的Excel进程通信,该进程进而操作文件。换句话说,即使在真正的Windows系统中,您也需要安装Microsoft Office才能运行这些宏,无论调用语言是什么。
我个人在没有安装Microsoft Office的Windows机器上遇到过这个问题(由于许可证原因,只有LibreOffice),尽管正确安装了pywin 32,但我无法执行宏。
从Linux的唯一可能性是直接操纵Excel文件与openpyxl.这绝对不同于通过Excel宏使用Excel引擎!