Appia의 IT세상

파이썬 [Python] win32com 이용하여, 엑셀(Excel)에서 셀의 데이터 타입에 따른 셀의 색 변경하기 본문

Python/Python Office 자동화_EXCEL_Outlook

파이썬 [Python] win32com 이용하여, 엑셀(Excel)에서 셀의 데이터 타입에 따른 셀의 색 변경하기

Appia 2021. 5. 14. 06:03
반응형

파이썬 [Python] win32com 이용하여, 엑셀(Excel)에서 셀의 데이터 타입에 따른 셀의 색 변경하기

파이썬 [Python] win32com 이용하여, 엑셀(Excel)에서 빈칸의 셀 색깔 변경하기

앞선 포스팅에서는 셀의 값이 입력되지 않은 공간에 색이 변경하는 부분에 대해서 포스팅을 하였습니다. 그래서 이번 포스팅에서는 입력된 데이터 타입에 따라서 각 셀의 색을 다르게 입력하는 방법에 대해서 포스팅을 해보고자 합니다. 

파이썬[Python] 014 Pywin32 설치

 

파이썬[Python] 014 Pywin32 설치

오늘은 pywin32모듈 설치 하는 방법에 대해서 살펴 보겠습니다. 많은 분들이 python을 사용하는 이유 중 하나는 업무에 있어서 반복적이고 지속적인 업무들에 대해 자동화 하기 위해서 사용 하는 분

appia.tistory.com

이번 포스팅을 하기 위해서는 위의 링크의 pywin32모듈이 필요로 합니다. 위의 링크를 바탕으로 설치를 해주시길 바랍니다. 

엑셀[Excel] 365 입력된 데이터의 타입 확인하기(TYPE)

 

엑셀[Excel] 365 입력된 데이터의 타입 확인하기(TYPE)

엑셀[Excel] 365 입력된 데이터의 타입 확인하기(TYPE) 이번 포스팅은 엑셀에 입력된 셀에 값을 바탕으로 이 값이 어떤 데이터인지에 대해서 확인하는 방법에 대해서 이야기를 해보고자 합니다.

appia.tistory.com

먼저 이포스팅을 앞서서 한가지 고민한 내용이 있습니다. 바로 Type을 확인하는 방법 때문에 약간의 고민을 하였습니다. 상기 링크에서와 같이 Excel에서 제공하는 Type을 사용할 수 있습니다. 하지만, 이 부분을 하는 것에 대해서 약간의 고민이 필요로 하였습니다. 파이썬(Python)을 통해서 엑셀 기능을 호출하고 이를 다시 파이썬(Python)으로 가져오는 것에 대해서 약간의 우려가 되었습니다. 몇 백개의 데이터에서는 그리 큰 문제가 되지 않지만, 몇천개 이상의 데이터에서는 큰문제가 될수 있기 때문입니다. 그래서 이번 포스팅에서는 Python에서 제공하는 type함수를 이용하기로 하였습니다. 

 

다음과 같은 방식으로 셀의 값의 형태를 알수 있습니다. 

type(sheet.Range(해당셀).Value)

위의 셀의 결과는 다음과 같은 형태로 나타납니다. 

<class 'float'>
<class 'str'>
<class 'str'>
<class 'bool'>
<class 'NoneType'>

위의 부분을 비교하기 위해서는 결과 값을 str()로 문자열로 하여 비교 하는 것입니다. 그럼 다음과 같은 비교 문을 형성 할 수 있습니다. 

    if str(type(sheet.Range("A"+str(i)).Value)) == "<class 'float'>" or str(type(sheet.Range("A"+str(i)).Value)) == "<class 'int'>":
        "숫자일 때 동작"
    elif str(type(sheet.Range("A"+str(i)).Value)) == "<class 'str'>" :
        "문자 일 때 동작"
    elif str(type(sheet.Range("A"+str(i)).Value)) == "<class 'bool'>" :
        "논리형 일 때 동작"
    elif str(type(sheet.Range("A"+str(i)).Value)) == "<class 'NoneType'>" :
        "Null 일 때 동작"

위와 같은 형태로 각 타입을 str()함수로 묶어서 비교하는 것입니다. 그럼 전체 예시 코드를 살펴보겠습니다. 

import win32com.client

excel = win32com.client.Dispatch("Excel.Application")

excel.Visible = True

workbook = excel.Workbooks.Add()  # WorkBooks 생성

sheet = workbook.Worksheets("Sheet1")

# 데이터 입력

sheet.Range("A1").Value = 1

sheet.Range("A2").Value = "A2"

sheet.Range("A3").Value = "A3"

sheet.Range("A4").Value = True

sheet.Range("A5").Value = None


for i in range(1,6):
    if str(type(sheet.Range("A"+str(i)).Value)) == "<class 'float'>" or str(type(sheet.Range("A"+str(i)).Value)) == "<class 'int'>":
        sheet.Range("A" + str(i)).Interior.ColorIndex = 3
    elif str(type(sheet.Range("A"+str(i)).Value)) == "<class 'str'>" :
        sheet.Range("A" + str(i)).Interior.ColorIndex = 4

    elif str(type(sheet.Range("A"+str(i)).Value)) == "<class 'bool'>" :
        sheet.Range("A" + str(i)).Interior.ColorIndex = 6
    elif str(type(sheet.Range("A"+str(i)).Value)) == "<class 'NoneType'>" :
        sheet.Range("A" + str(i)).Interior.ColorIndex = 7

위의 코드를 실행하면 다음과 같은 결과가 나타납니다. 

예시 실행 결과 

즉 각 타입들에 맞춰서 각 셀의 색들이 변경되는 것을 알 수 있습니다. 

 

<참조 링크>

파이썬 [Python] win32com 이용하여, 엑셀(Excel)에서 사용되는 Color Index 추출해보기

파이썬 [Python] win32com 이용하여, 엑셀(Excel)에서 빈칸의 셀 색깔 변경하기

 

이번 포스팅에서는 파이썬 [Python] win32com 이용하여, 엑셀(Excel)에서 셀의 데이터 타입에 따른 셀의 색 변경하기라는 주제로 포스팅을 해봤습니다. 혹 궁금하신 점이나 문의 사항이 있으시면 언제든지 댓글 및 방명록에 글 남겨주시길 바랍니다. 

반응형
Comments