programing

Windows에서 Python에서 Excel 구동

padding 2023. 4. 18. 21:49
반응형

Windows에서 Python에서 Excel 구동

복잡한 모델을 만들기 위해 맛있는 복잡한 매크로와 서드파티 확장 기능을 사용하는 다양한 스프레드시트가 있습니다.저는 다양한 입력을 약간 수정하고 결과를 보는 프로젝트를 진행하고 있습니다.손으로 하거나 VBA를 쓰는 대신 Python 스크립트를 작성하여 구동할 수 있는지 확인하고 싶습니다.즉, python 스크립트가 시작되고 Excel 시트를 로드한 후 일부 셀에서 사소한 변경을 가하고 다른 셀에 어떤 영향을 미치는지 확인함으로써 시트와 상호 작용합니다.

그래서 제 질문은 두 가지입니다.

  • 파이썬에서 이러한 방식으로 엑셀을 구동하기 위해 사용할 수 있는 최고의 라이브러리는 무엇입니까?

  • 해당 라이브러리 사용에 관한 가장 좋은 문서/예시는 어디입니까?

건배, /YGA

Excel을 제어하려면 @igowen이 제안하는 것과 같이 pywin32를 사용합니다.

스태틱 디스패치를 사용할 수 있습니다.사용하다makepy.pypywin32 프로젝트에서 python 래퍼를 사용하여 python 모듈을 만듭니다.생성된 래퍼를 사용하면 예를 들어 ipython을 사용하면 탭 완료 및 개발 중 도움말이 제공되므로 개발이 단순해집니다.

스태틱 디스패치의 예:

x:> makepy.py "Microsoft Excel 11.0 객체 라이브러리"...생성하는 중...
모듈을 Import하고 있습니다.x:> ipython
> from win32com.client import Dispatch
> excel = Dispatch("Excel.Application")
> wb = excel.Workbooks.Append()
> range = wb.Sheets[0].Range("A1")
> range.[Press Tab]
range.Activate                 range.Merge
range.AddComment               range.NavigateArrow
range.AdvancedFilter           range.NoteText
...
range.GetOffset                range.__repr__
range.GetResize                range.__setattr__
range.GetValue                 range.__str__
range.Get_Default              range.__unicode__
range.GoalSeek                 range._get_good_object_
range.Group                    range._get_good_single_object_
range.Insert                   range._oleobj_
range.InsertIndent             range._prop_map_get_
range.Item                     range._prop_map_put_
range.Justify                  range.coclass_clsid
range.ListNames                range.__class__
> range.Value = 32
...

문서 링크:

pywin32를 사용하여 이 작업을 수행했습니다.추상화가 전혀 없기 때문에 특별히 즐거운 경험은 아닙니다.VBA를 사용하는 것과 비슷하지만 python 구문을 사용하는 것과 같습니다.문서스트링에 의존할 수 없기 때문에 MSDN Excel 레퍼런스를 쉽게 사용할 수 있습니다(제 기억이 맞다면 http://msdn.microsoft.com/en-us/library/aa220733.aspx이 제가 사용한 것입니다).Excel 2007 문서를 찾으시면 찾을 수 있을 겁니다.)

간단한 예는 여기를 참조해 주세요.

from win32com.client import Dispatch

xlApp = Dispatch("Excel.Application")
xlApp.Visible = 1
xlApp.Workbooks.Add()
xlApp.ActiveSheet.Cells(1,1).Value = 'Python Rules!'
xlApp.ActiveWorkbook.ActiveSheet.Cells(1,2).Value = 'Python Rules 2!'
xlApp.ActiveWorkbook.Close(SaveChanges=0) # see note 1
xlApp.Quit()
xlApp.Visible = 0 # see note 2
del xlApp

행운을 빕니다.

DataNitro 프로젝트(이전 이름 IronSpread)를 확인합니다.Excel용 Python 플러그인입니다.

Windows http://sourceforge.net/projects/excelcomforpython/에서 COM 인터페이스를 통해 Excel로 작업할 수 있는 python 클래스를 작성했습니다.

클래스는 win32com을 사용하여 Excel과 대화합니다.클래스를 직접 사용할 수도 있고 예로 사용할 수도 있습니다.어레이 수식, 조건부 포맷, 차트 등 많은 옵션이 구현되어 있습니다.

저는 작년에 Python Excel 플러그인으로 작성된 클라이언트와 관련된 홈 프로젝트를 진행했습니다.이 프로젝트는 기본적으로 최종 사용자의 접근을 위해 간소화된 온라인 데이터베이스입니다.Excel 플러그인을 사용하면 Excel에 표시하기 위해 데이터베이스에서 데이터를 조회할 수 있습니다.

엑셀 플러그인은 아직 멀었고 코드도 좀 못생겼어요.하지만 제가 가지고 있는 것은 BSD 라이선스로 Baza를 통해 입수할 수 있습니다.

http://www.launchpad.net/analyz/trunk

퍼블릭 서버가 실행되고 있지 않기 때문에 클라이언트는 동작하지 않습니다만, 적어도 이 코드로 무엇을 했는지 보고, 어떻게 동작하는지를 알 수 있습니다.코드는 100% Python에서 MFC 대화상자를 구축하는 방법도 보여줍니다.

약 1주일에 걸쳐 구현(혹은 개념 실증)을 소개합니다.

주요 아이디어는 Python 코드를 VBA 매크로처럼 쉽게 쓰고 Microsoft Office에서 호출할 수 있도록 하는 것입니다(Excel 전용 애드인을 만들었습니다).

  • 클라이언트-서버 아키텍처(TCP 경유)로 Python은 1회만 기동합니다.
  • 서버가 실행되지 않으면 서버가 자동으로 시작됩니다.
  • 매크로 모듈을 사용자가 변경하면 서버가 자동으로 새로고침
  • 오피스 리본으로 사용하기 쉬운 컨트롤 인터페이스

python을 excel에 통합하기 위한 흥미로운 프로젝트가 있습니다. 이 프로젝트는 다음 사이트에서 확인할 수 있습니다.

http://opentradingsystem.com/PythonForExcel/main.html

같은 아이디어에 따라 좀 더 간단한 다른 프로젝트가 다음 위치에 있습니다.

http://www.codeproject.com/Articles/639887/Calling-Python-code-from-Excel-with-ExcelPython

이 프로젝트들은 유망해 보이지만 더 발전해야 한다.

언급URL : https://stackoverflow.com/questions/441758/driving-excel-from-python-in-windows

반응형