# Excel.Application COM 인스턴스 생성
excel = win32.Dispatch("Excel.Application")
excel.Visible = True
cell = None
# 파일 열기
workbook = excel.Workbooks.Open(self.path)
# 시트 순회
for worksheet in workbook.Worksheets:
print('This sheet name is .. ', worksheet.Name) # 시트 이름 출력
cell = worksheet.UsedRange.Find(self.tag) # 워크시트의 Range 인스턴스에서 찾기
if not cell:
continue
worksheet.Range(str(cell.address).replace("$", '')).Select()
# 찾고자 하는 셀이 없으면 종료
if not cell:
excel.Workbooks.Close()
위 코드는 파이썬에서 엑셀 파일을 제어하기 위한 openpyxl 모듈이 아닌 엑셀 프로그램 자체를 제어하는 코드이다. win32com 모듈을 사용하면 ActiveX 기반의 프로그램들을 직접 제어할 수 있다. Dispatch() 메소드의 인자로 제어하고자 하는 프로그램에 해당하는 문자열을 대입하면 해당 프로그램의 클래스 타입의 인스턴스 (여기서는 excel)을 얻을 수 있다.
win32com 모듈에 대한 python docs가 잘 나와있지 않아서 마이크로소프트에서 제공하는 Docs를 참고했다. 이곳에서 제공되는 문서 또한 python 예제는 없지만 그나마 다른곳에 비해 설명이 친절하다. 정 모르겠으면 python example을 reference해보는 방법도 있다.
참고로 해당 Docs에서 상위 레벨로 올라가면 엑셀 이외에도 다른 프로그램에 대한 문서도 제공하니 필요하면 참고하면 된다.
'[Language] - Python' 카테고리의 다른 글
# 15. [Tip] chunk (0) | 2021.06.02 |
---|---|
# 14. dictionary setdefault, defaultdict (0) | 2021.05.28 |
# 12. 제너레이터 (Generator) (0) | 2021.04.14 |
# 11. [Tip] dictionary merge (0) | 2021.04.14 |
# 10. [Tip] lambda, map, zip 응용 (0) | 2021.04.01 |
댓글