如何在Excel中调用Python脚本,实现数据自动化处理
导读:这次我们会介绍如何使用xlwings将Python和Excel两大数据工具进行集成,更便捷地处理日常工作。



如果你对VBA不算精通,你可以直接使用Python编写分析函数用于Excel运算,而无需使用VBA; Python相比VBA运行速度更快,且代码编写更简洁灵活; Python中有众多优秀的第三方库,随用随取,可以节省大量代码时间;


pip install python
xlwings addin install


在"文件"选项卡上,转到"自定义>选项"。 在“自定义功能区”和“主选项卡”下,选中“开发工具”复选框。

xlwings quickstart ProjectName



Sub SampleCall()
mymodule = Left(ThisWorkbook.Name, (InStrRev(ThisWorkbook.Name, ".", -1, vbTextCompare) - 1))
RunPython "import " & mymodule & ";" & mymodule & ".main()"End Sub
在.xlsm文件相同位置查找相同名称的.py文件 调用.py脚本里的main()函数
import xlwings as xw
import pandas as pd
def main():
wb = xw.Book.caller()
values = ['a','b','c','d','e']
wb.sheets[0].range('A1').value = values
@xw.func
def hello(name):
return f"Hello {name}!"
if __name__ == "__main__":
xw.Book("PythonExcelTest.xlsm").set_mock_caller()
main()




import xlwings as xw
import pandas as pd
def main():
wb = xw.Book.caller()
df = pd.read_csv(r"E:\\test\\PythonExcelTest\\iris.csv")
df['total_length'] = df['sepal_length'] + df['petal_length']
wb.sheets[0].range('A1').value = df
@xw.func
def hello(name):
return f"Hello {name}!"
if __name__ == "__main__":
xw.Book("PythonExcelTest.xlsm").set_mock_caller()
main()

延伸阅读👇
延伸阅读《利用Python进行数据分析》
评论