본문 바로가기
Program/Python

Python :: 파이썬으로 Excel에 접근하여 수정하기

by 시레엔 2018. 1. 26.
반응형

안녕하세요.

이번에는 저번 win32.com 포스팅에서 얘기했듯이, Excel에 접근하는 방법에 대해서 소개하려고 합니다.


#01.  Win32com 모듈을 불러옵니다.

(win32com.client를 다 쓰기가 귀찮아서, win32로 대신 불러올 수 있게 as 커맨드를 썼습니다.)


import win32com.client as win32


#02. Excel 프로그램을 활성화시켜주는 작업을 수행합니다. 


excel = win32.Dispatch("Excel.Application")

excel.Visible = True

Excel.Application은 Excel 파일을 다루기 위한 프로그램을 실행을 시키며, excel.Visible은 그것을 시각화하는 것입니다. 또한, Excel과 마찬가지로 카티아에 접근하기 위해서는 Excel.Application 대신에 Catia.Application을 적용하여 Catia 쪽에 접근할 수 있습니다.


#03. Excel Sheet를 쓰기 위한 새파일 형성 또는 기존 파일 열기


excel1=excel.Workbooks.Add()

sheet=excel1.Worksheets("Sheet1")

기존에 파일이 없을때, 새로운 파일 및 Sheet를 생성하기 위한 방안입니다. 그래서 보통 코딩을 할때는 기존에 정해둔 경로에 파일이 없을 경우에 위와 같은 코드로 생성을 시켜라라는 명령어를 적용시키는게 효율적인 방안으로 생각되어 집니다.


excel1 = excel.Workbooks.Open(_Path_)

sheet=excel1.ActiveSheet

위와 같은 방법으로 적용을 하시면, 기존에 있는 파일을 읽는 부분입니다. Path에서는 당연히 String 구분이 들어가야 하며, 정규표현식으로 r을 붙여주시면 에러방지를 할 수 있을 것 같아요.


예시 : 

_Path_=r'C:\Temp\abc.xlsx'

excel1= excel.Workbooks.Open(_Path_)


#04. Excel Sheet에 읽고 쓰기


sheet.Cells(1,1).Value=1

sheet.Range('A1:B2').Value='Python'

sheet.Range('A1:B2,A3:B4').Value='Fortran'

맨처음 커맨드는 Cell(1,1)에 숫자 1이라는 숫자를 쓰라는 명령어입니다. 또한, 범위로도 넣을 수 있는데요. 일반적으로 도면을 그리듯이 왼쪽 위에서 오른쪽 아래로 두가지의 Cell을 선택해주어 범위를 잡아줍니다. 그래서 A1:B2라는 부분의 범위를 설정하게 된다면, A1,A2,B1,B2 등 총 4가지의 Cell이 잡히게 되며 그 안에 'Python'이라는 문자가 들어가게 됩니다. 또한, 연속적인 범위가 아닌 각자 다른 범위를 잡는 경우도 참고해주시면 좋을 것 같습니다.


(위의 예시 Code 적용시 구현되는 부분)


a=sheet.Cells(1,1).Value

a라는 변수로 Cell(1,1)에 있는 값을 받는 경우이며, 다수의 변수를 받을때에는 리스트(List) 함수를 이용하여 작성할 수 있습니다.


예시 :

name=list()

while self.worksheet.Cells(i,col).Value != None :

name_part=worksheet.Cells(i,col).Value

name.append(name_part)

 i+=1


#05. Excel Cell에 색상입히기


sheet.Range("A1").interior.ColorIndex =3

사실 이 부분은 해석 프로그램으로 최적화를 진행할때 가장 최적화된 모델에 색상을 입히기 위해 찾아본 것입니다. 각 아래 색상표에 따라 입력 숫자를 달리하면, 적용되는 부분이 달라집니다.


(Reference : https://blog.naver.com/new27kr/221020428184)

#06. Excel 파일 저장


excel1.Save()

excel1.SaveAs(r'c:\Temp\abc.xlsx')

excel.Quit()


위은 저장, 다른이름으로 저장, 닫기 등을 대신하는 명령어입니다. 확인하시면 어렵지 않게 구현할 수 있으실 것 같습니다.

반응형

댓글