如何在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进行数据分析》
评论
