엑셀이라고 하면 단연 데이터 처리 분야의 왕입니다. 탄생한 지 30년이 넘었지만 여전히 전 세계적으로 충성도가 높은 사용자가 7억 5천만 명에 달하며, 인터넷 유명인사인 파이썬이 있습니다. 언어의 개발자는 700만 명에 불과합니다.
Excel은 세계에서 가장 인기 있는 프로그래밍 언어입니다. 예, 맞습니다. Microsoft가 LAMBDA 정의 기능을 도입한 이후 Excel은 프로그래밍 언어로 알고리즘을 구현할 수 있게 되었기 때문에 JavaScript, Java 및 Python과 마찬가지로 Turing Complete입니다.
엑셀은 소규모 데이터 시나리오에 없어서는 안 될 도구이지만, 빅데이터를 마주할 때는 다소 부족합니다.
Excel 테이블은 최대 1,048,576개의 행과 16,384개의 열을 표시할 수 있다는 것을 알고 있습니다. 수십만 개의 행이 있는 테이블을 처리하는 것은 약간 지연될 수 있습니다. 물론 데이터 처리에 VBA를 사용할 수도 있고 Python을 사용하여 처리할 수도 있습니다. 엑셀을 조작하다
이 글의 주제는 Python과 Excel 간의 대화형 도구 역할을 하는 Python의 타사 라이브러리인 xlwings로, VBA를 통해 Python 스크립트를 쉽게 호출하여 복잡한 데이터 분석을 수행할 수 있습니다.
예를 들어 자동으로 데이터 가져오기:
또는 무작위로 텍스트 일치:
VBA는 Excel에 내장된 매크로 언어로 자동화, 데이터 처리, 분석 모델링 등 거의 모든 작업을 수행할 수 있습니다. 그러면 Excel VBA를 통합하기 위해 Python을 사용하는 이유는 무엇일까요? 세 가지 주요 이유가 있습니다.
여기서 xlwings의 입문 사용법을 설명하지 않습니다. xlwings 설치는 매우 간단합니다. 명령줄에서 pip를 통해 빠르게 설치할 수 있습니다.
pip install python
xlwings를 설치한 후 xlwings의 Excel 통합 플러그인을 설치해야 합니다. 설치하기 전에 모든 Excel 응용 프로그램을 닫아야 합니다. 그렇지 않으면 오류가 보고됩니다.
또한 명령줄에 다음 명령을 입력하세요.
xlwings addin install
다음 프롬프트는 통합 플러그인이 성공적으로 설치되었음을 나타냅니다.
xlwings와 플러그인이 설치된 후 이때 엑셀을 열면 툴바에 xlwings 메뉴 상자가 나타나는데 이는 xlwings 플러그인이 성공적으로 설치되었음을 의미합니다. VBA를 위한 브릿지 역할을 합니다. Python 스크립트를 호출합니다. 또한 메뉴 표시줄에 아직 "개발 도구"가 표시되지 않으면 매크로를 사용해야 하므로 리본에 "개발 도구"를 추가해야 합니다.단계는 간단합니다.
1 "파일" 탭에서 "사용자 정의 > 옵션"으로 이동합니다.
2. "리본 사용자 정의" 및 "기본 탭"에서 "개발 도구" 확인란을 선택합니다.
메뉴 표시줄에는 개발 도구가 표시되며 매크로 사용을 시작할 수 있습니다.아직도 매크로가 무엇인지 모른다면 일시적으로 자동화 및 일괄 처리를 위한 도구로 이해하면 됩니다.
이쯤 되면 사전 준비 작업이 완료되고 다음 단계는 실전입니다!
要想在excel中调用python脚本,需要写VBA程序来实现,但对于不懂VBA的小伙伴来说就是个麻烦事。
但xlwings解决了这个问题,不需要你写VBA代码就能直接在excel中调用python脚本,并将结果输出到excel表中。
xlwings会帮助你创建.xlsm
和.py
两个文件,在.py
文件里写python代码,在.xlsm
文件里点击执行,就完成了excel与python的交互。
怎么创建这两个文件呢?非常简单,直接在命令行输入以下代码即可:
xlwings quickstart ProjectName
这里的ProjectName
可以自定义,是创建后文件的名字。
如果你想把文件创建到指定文件夹里,需要提前将命令行导航到指定目录。
创建好后,在指定文件夹里会出现两个文件,就是之前说的.xlsm
和.py
文件。
我们打开.xlsm
文件,这是一个excel宏文件,xlwings已经提前帮你写好了调用Python的VBA代码。
按快捷键Alt + F11
,就能调出VBA编辑器。
Sub SampleCall()<br>mymodule = Left(ThisWorkbook.Name, (InStrRev(ThisWorkbook.Name, ".", -1, vbTextCompare) - 1))<br>RunPython "import " & mymodule & ";" & mymodule & ".main()"<br>End Sub<br><br>
里面这串代码主要执行两个步骤:
1、在.xlsm
文件相同位置查找相同名称的.py
文件
2、调用.py
脚本里的main()
函数
我们先来看一个简单的例子,自动在excel表里输入['a','b','c','d','e']
第一步:我们把.py
文件里的代码改成以下形式。
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()
然后在.xlsm
文件sheet1
中创建一个按钮,并设置默认的宏,变成一个触发按钮。
设置好触发按钮后,我们直接点击它,就会发现第一行出现了['a','b','c','d','e']
。
同样的,我们可以把鸢尾花数据集自动导入到excel中,只需要在.py文件里改动代码即可,代码如下:
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()
好了,这就是在excel中调用Python脚本的全过程,你可以试试其他有趣的玩法,比如实现机器学习算法、文本清洗、数据匹配、自动化报告等等。
Excel+Python,简直法力无边。
参考medium文章
위 내용은 Excel에서 Python 스크립트를 호출하여 데이터 처리를 자동화하는 방법!의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!