'파이썬(Python)/파이썬으로 엑셀 제어하기' 카테고리의 글 목록
본문 바로가기

파이썬(Python)/파이썬으로 엑셀 제어하기20

파이썬 win32com 으로 시트 이름 바꾸기 파이썬의 win32com 라이브러리로 엑셀의 시트 이름을 바꿔 보도록 하겠습니다. 우선 엑셀 VBA에서는 아래와 같이 바꿀 수 있습니다. Sub sbTest() Sheets("Sheet1").Name = "바뀐시트이름" End Sub 역시 VBA는 간단하죠? 참으로 제가 좋아하는 컴퓨터 언어입니다. 어떤 언어가 이보다 더 쉬울 수 있을까요? 이번에는 파이썬으로 바꿔 보도록 하겠습니다. import win32com.client xl = win32com.client.Dispatch("Excel.Application") xl.Visible = True file = 'C:\\Users\\fibt5\\Desktop\\test.xlsx' wb = xl.Workbooks.Open(file) wb.Worksheets(.. 2024. 1. 12.
파이썬 win32com으로 엑셀 여는 법, 음영 넣는 법, 닫는 법 openpyxl이 아닌 win32com으로 엑셀을 열어 보도록 하겠습니다. 1 2 3 import win32com.client xl = win32com.client.Dispatch("Excel.Application") xl.Visible = True Colored by Color Scripter cs win32com 모듈에서 client 파일을 불러옵니다. 여기서 Dispatch()는 괄호안에 어플리케이션을 xl이라는 변수로 바인딩할 수 있게 도와줍니다. 즉, 엑셀을 사용할래. 근데 이름이 기니깐 'xl'로 할래. 이렇게 이해하시면 됩니다. xl.Visible을 True로 한 이유는 엑셀 창을 보면서 코딩을 하기 위함입니다. 저렇게 Visible을 True로 하더라도 엑셀을 생성하거나 열지 않으면 엑셀창.. 2024. 1. 11.
Python - openpyxl 을 사용 중 값이 아닌 수식을 가져올때 해결방법 openpyxl 라이브러리를 사용하여 특정셀의 값을 가져올 수가 있습니다. 값을 가져오려고 했는데, 예기치 않게 수식을 가져오는 경우가 발생하더라구요. 예제를 통해 보겠습니다. 이렇게 임의로 10, 20 그리고 "=A1 + B1" 수식을 차례로 입력하였습니다. 코드를 위와 같이 입력하고 결과값을 출력해 보도록 하겠습니다. C1 셀은 '30'이 아닌 수식("=A1+B1")이 출력 되었습니다. openpyxl 라이브러리가 익숙하지 않은 탓에 다소 당황했습니다. 이럴때는 load_workbook 클래스에서 파일을 가져오는 옵션을 추가해주면 수식이 아닌 값을 가져올 수 있습니다. wb = load_workbook(file, data_only=True) 이런식으로 'data_only=True' 옵션을 추가로 넣어.. 2021. 10. 30.
Python(파이썬) openpyxl - 엑셀 스타일 지우기(주의) 다른 사람의 엑셀파일에다 작업을 하다보면 필요없는 스타일이 만들어지게 됩니다. 이런 지저분한 스타일 때문에 엑셀파일이 느려지거나 에러가 발생하는 경우도 있습니다. 사용자가 지정한 스타일을 파이썬을 사용하여 자동으로 삭제해 보도록 하겠습니다. 스타일을 삭제하기 전 파일 모습은 아래와 같습니다. 스타일을 지우기 위한 파이썬 코드는 아래와 같습니다. 실행을 시켜보니 큰일이 났네요....ㅠㅠ 이렇게 되어 버렸어요....ㅠㅠ 스티일은 지워졌는데, 모든 적용된 양식들이 싹 다 지워졌네요.... 이렇게 되면 못쓰겠네요....ㅠㅠ 구글링을 열심히 해서 만들었는데, 비전공자의 능력은 여기까지인가 보네요.... 혹시 스타일을 지우시고 싶은 분은 아래에 VBA 로 만든 코드 참고하시기 바랍니다. 2020.11.28 - [I.. 2021. 5. 6.
Python(파이썬) openpyxl - 엑셀 글자정렬(Text Align) 파이썬의 openpyxl 모듈을 사용하여 엑셀에서 글자를 정렬해 보도록 하겠습니다. openpyxl 의 Workbook을 사용해서 새로운 파일을 만드시거나, load_workbook을 사용해서 기존 파일을 이용합니다. openpyxl.styles 에서 Alignment 를 import 합니다. 저는 새로운 워크시트를 만들어서 'wb'라는 변수에 저장하고, wb 의 활성화 된 시트를 'ws'로 저장하겠습니다. 글자정렬이 제대로 잘 되었는지 쉽게 확인해 보기 위해 행과 열너비를 크게 했습니다. 방법은 위와 같이 하시면 됩니다. 정렬을 설정할 셀의 alignment 속성에 Alignment(horizonal='ceneter', vertical='bottom') 이런식으로 설정해 주면 됩니다. horizonta.. 2021. 5. 5.
Python(파이썬) openpyxl - 글자(Font) 크기, 색깔, 스타일 지정하는 방 openpyxl 을 이용하여 엑셀의 폰트를 설정하는 방법입니다. 우선 미리 만든 엑셀파일을 로드해서 두번째 시트를 ws 변수에 담겠습니다. openpyxl.styles에서 Font 를 가져와서 폰트 설정에 사용하도록 하겠습니다. A1 셀에 'Font Test'라고 글자를 입력하겠습니다. 글꼴과 글자 색깔을 Font 함수를 사용해서 설정한 후 'f'라는 변수에 담습니다. 그리고 해당셀의 폰트 속성에 'f' 변수를 넣어주면 됩니다. 폰트가 지정된 것을 확인할 수 있습니다. 샐깔은 아래와 같이 Color 관련 사이트를 참고하시면 됩니다. www.w3schools.com/colors/colors_picker.asp HTML Color Picker Selected Color: Black Text Shadow Wh.. 2021. 5. 2.
Python(파이썬) openpyxl - 엑셀 시트(Work sheet)를 호출하는 방법 엑셀 VBA에서는 시트를 호출하기 위해서 sheets('시트명') 또는 sheets(index) 형식으로 사용하면 됩니다. 하지만, openpyxl 을 사용하면 방법이 달라집니다. 원래 VBA 매크로를 사용하시는 분이면 조금 헷갈릴 수가 있겠네요. 기존에 만든 엑셀파일을 로드하고 모든 시트명을 프린트 해 보겠습니다. 만약 시트이름을 하나만 부르고 싶을때는 어떻게 해야 할까요? 이렇게 사용하면 됩니다. 인덱스를 사용해서 호출하는 방법은 아래와 같습니다. 이건 단순히 sheet name을 불러오는 방법이라 셀에 접근해서 특정 작업을 하려면 에러가 뜹니다. VBA에 익숙한 터라 제 개인적으로는 상당히 헷갈렸습니다. 요론 식으로 쓰면 인덱스를 사용해서 엑셀 시트를 활용할 수 있습니다. 이제 반복문을 사용해서 여.. 2021. 5. 1.
python(파이썬) openpyxl - 엑셀 시트 추가, 삭제 방법 파이썬 openpyxl 을 이용하여 시트를 추가하는 방법입니다. 미리 만든 엑셀파일을 가져와 wb 변수에 넣겠습니다. create_sheet('시트명', index) 를 써서 엑셀 시트를 추가할 수 있습니다.시트가 추가 되었습니다. 이번에는 전체 시트명을 불러와 보겠습니다. sheetnames 를 사용해서 반복문으로 시트이름을 하나씩 출력해 보았습니다.이번에는 시트를 삭제해 보겠습니다. https://cafe.naver.com/111coding/44?tc=shared_link 파이썬을 10분만에 배우는 방법프로그램밍 언어를 공부하는 것은 외국어를 배우는 것과 상당히 흡사합니다. 우리는 대체로 초등학교 3년, 중학교 3년, 고등학교 3년 최소 9년은 영어를 배웁니다. 하지만,...cafe.naver.com.. 2021. 4. 30.
python openpyxl - 파이썬으로 엑셀의 셀에 음영 색 넣기 파이썬의 openpyxl 모듈을 사용하여 셀에 음영 색을 넣어 보도록 하겠습니다. openpyxl에서 Workbook을 이용해서 새로 엑셀파일을 만들거나, load_workbook을 사용해서 기존 파일을 불러 옵니다. 셀을 색으로 채우기 위해서 openpyxl.styles 에서 PatternFill 을 가져옵니다. 활성화 된 시트를 ws의 변수에 담습니다. PatternFill 함수에서 컬러를 지정해 주고 타입을 solid 지정해 줍니다. 이것을 y_color 라는 변수에 저장합니다. 음영색을 채울 셀에 만든 변수를 넣여주면 됩니다.( ws.cell(3,2).fill=y_color ) 그리고 저장을 합니다. 결과는 아래와 같이 잘 실행되었습니다. 색깔을 지정할 때에는 Hex code를 사용해야 합니다. .. 2021. 4. 27.
python openpyxl - 파이썬으로 엑셀의 열너비, 행높이 변경하기 (여러 행, 열 크기 동시에 조절하기) VBA처럼 파이썬으로 엑셀의 열너비, 행높이를 조절할 수 있습니다. 모듈은 openpyxl 에서 Workbook 이나 load_workbook 중 아무거나 불러오면 됩니다. 저는 임의로 엑셀파일을 만들어서 가져온 다음에 활성화 된 시트를 'ws'라는 변수에 담았습니다. 행 높이를 변경하려면 worksheet function에서 'row_dimensions.height'를 쓰면 됩니다. Column도 비슷한 방법으로 너비를 지정할 수 있습니다. 아쉬운 건 VBA에서는 range를 써서 여러 행이나 열의 크기를 변경할 수 있지만, 파이썬에서는 for 문을 써서 변경해야 하네요. 행은 이렇게 범위를 설정해서 반복해 주면 됩니다. 하지만, 열은 'A', 'B', 'C' 이렇게 되어 있기에 반복문을 쓰기가 곤란합.. 2021. 4. 25.
python(파이썬) openpyxl - 열 위치를 숫자로 가져오기(Get column's index number) 파이썬을 이용해서 엑셀을 사용하는 방법입니다. 반복문을 사용할때 row는 숫자를 이용하면 되는데, 열(column)은 'A', 'B', 'C' ... 이런식으로 되어 있어서 사용하기가 쉽지 않습니다. coulum 위치를 숫자로 변환해서 사용하면 편합니다. openpyxl.utils 에서 get_column_letter 모듈을 임포트 합니다. get_column_letter(index) 이런 식으로 사용하면 됩니다. index 값에 3을 넣으니 'C'가 반환 되었습니다. 2021. 4. 24.
Python(파이썬) openpyxl - 엑셀 셀 테두리 자동으로 선 그리기 Python을 이용하여 엑셀의 원하는 셀에 테두리를 그릴 수 있습니다. 표를 만들거나 문서를 좀 더 보기 좋게 자동으로 만들고 싶을때 활용하면 좋을것 같습니다. 우선 모듈을 불러옵니다. openpyxl.styles 에서 Border 와 Side를 임포트 해 줍니다. 일일이 선을 그릴때마다 속성을 지정해 주기 귀찮으니깐 'box'라는 변수에 속성을 지정해 줍니다. 셀에 지정해 줄때는 ws['A2'] = box 이런식으로 적어 주시면 됩니다. 그런데 표를 만들때는 범위가 "A1:E50" 이런식으로 되기 때문에 for 문을 사용해서 셀 하나씩 테두리를 그려줘야 합니다. (VBA는 좀 더 Range("A1:E50").borders 이런식으로 좀 더 간단한데, 파이썬으로 하려니깐 귀찮네요) 파이썬으로 매크로를 만.. 2021. 4. 22.
파이썬으로 엑셀 VBA 매크로를 작동 시키는 방법(Calling Excel VBA Macro script by using Python script) 지난번 포스트에 이어서 파이썬을 통해 엑셀 VBA 매크로를 작동하는 방법에 대해서 포스트 해 보겠습니다. 시작하기 앞서 addin install 과 약간의 설정이 필요한데 이 부분은 아래 포스틀 참고하시기 바랍니다. 2021.03.31 - [파이썬/Python & Excel & VBA] - xlwings - 설치 및 addin 설정 방법 xlwings - 설치 및 addin 설정 방법 제가 컴퓨터 전공도 아니고 업무를 좀 편하게 하고자 VBA를 잔기술을 먼저 배웠습니다. 그런탓에 요즘 유행하는 파이썬을 이용해서 업무 자동화 하기보다는 VBA를 사용하기가 개인적으로는 훨씬 dotsnlines.tistory.com 우선 예제로 엑셀 VBA 코드를 작성해 보겠습니다. 파이썬 파일과 같은 디렉토리에 위와 같이 .. 2021. 4. 1.
xlwings - 설치 및 addin 설정 방법 제가 컴퓨터 전공도 아니고 업무를 좀 편하게 하고자 VBA를 잔기술을 먼저 배웠습니다. 그런탓에 요즘 유행하는 파이썬을 이용해서 업무 자동화 하기보다는 VBA를 사용하기가 개인적으로는 훨씬 편하게 느껴집니다. 하지만, 확장성은 VBA가 Python을 따라가지 못하는 탓에 고민을 계속 하다가 좋은 모듈을 하나 발견했습니다. "xlwings'라는 모듈입니다. 이 모듈을 사용하면 파이썬으로 VBA 코드를 구동할 수 있습니다. 반대로 VBA로 파이썬 코드도 구동할 수 있고요. Anaconda를 설치하시면 패키지로 자동 설치가 되는 모듈입니다.(아나콘다를 아직 설치하지 않으셨다면 아래 링크의 포스트를 참고하시기 바랍니다.) 2020.11.12 - [파이썬/시작 - 아나콘다,파이참 설치] - 파이썬 시작하기 1 -.. 2021. 3. 31.
python openpyxl - 파일을 열어서 데이터 입력, 가져오기 이번 포스트는 만들어진 엑셀 파일의 데이터를 가져오고, 입력하는 방법에 대하여 알아 보도록 하겠습니다. from openpyxl import load_workbook 모듈을 가져옵니다. wb = load_workbook('cell.xlsx') ws = wb.active 가져올 파일을 wb 변수에 담고, 활성화 된 시트를 ws 변수에 담습니다. for x in range(1,11): for y in range(1,11): print(ws.cell(column=x, row=y).value, end=" ") print() for 문을 써서 column 과 row를 1부터 10까지의 좌표에 값을 가져옵니다. 결과값은 위와 같습니다. 셀의 개수(행과 열의 개수)를 모를때는 아래와 같이 작성하면 됩니다. for x.. 2021. 3. 23.
Python openpyxl - 셀에 값 입력하기 openpyxl 모듈을 이용하여 셀을 다루는 방법에 대해서 알아보도록 하겠습니다. 우선 모듈을 불러옵니다. random 모듈은 셀을 무작위 수로 채울때 쓰기위해 일단 불러오겠습니다. 워크북을 하나 생성해서 wb라는 변수에 만들고, 활성화 된 시트를 ws 변수로 지정하겠습니다. 시트명ㅇ느 'test sheet'로 만들겠습니다. A1 셀부터 B3 셀까지 값을 넣어줍니다. ws['A1'] 으로 프린트를 하면 아래와 같이 셀의 정보가 출력이 됩니다. ws['A2'].value 라고 해야지 값이 출력이 됩니다. 셀의 위치는 숫자로 표시하면 더욱 유용합니다. ws.cell(column=3, row=1, value=10) 이런식으로 값을 입력할 수도 있습니다. 결과값이 제대로 출력이 된 것을 확인할 수 있습니다. f.. 2021. 3. 21.
Python openpyxl - 파일생성, 시트명 바꾸기, 탭색 변경 openpyxl 라이브러리를 이용하여 엑셀파일을 만들어서 저장해 보도록 하겠습니다. 전체 코드는 아래와 같습니다. 1 2 3 4 5 6 7 from openpyxl import Workbook wb = Workbook() ws = wb.active ws.title = 'test_sheet' wb.save('sample.xlsx') wb.close() cs openpyxl 모듈에서 Workbook을 불러오고, Workbook() 은 wb 변수에 저장합니다. ws는 활성화 된 시트를 담을 변수입니다. 시트의 이름은 ws.title='OOO'으로 변경합니다. 현 파일 위치에 만들어진 엑셀파일을 'sample.xlsx'라는 이름으로 저장하고, 워크북을 닫아 줍니다. 실행해 보면 아래와 같이 엑셀파일이 만들어 진.. 2021. 3. 17.
openpyxl - 여러 엑셀파일 데이터 가져오기 여러개의 엑셀파일에 있는 데이터를 하나의 엑셀파일로 가져와 보겠습니다. 'Test'라는 이름의 폴더를 만든다음 임의로 엑셀파일을 3개 만들어 보겠습니다. 'Test' 폴더 안에는 각각의 파일에 아래 그림과 같이 글자를 임의로 입력 하였습니다. 전체 코드는 본 포스트의 맨 아래에 있으니 참고하시기 바랍니다. 여러개의 엑셀파일의 데이터를 가져오기 위해서는 총 3개의 모듈이 필요합니다. 'os' 모듈은 정해진 경로의 폴더내에 있는 엑셀파일의 이름을 가져오기 위해 필요하며, openpyxl 패키지의 'Workbook' 과 'load_workbook'은 각각 엑셀파일 생성과 폴더내의 엑셀파일을 열기위해 필요합니다. 폴더의 경로는 'path'라는 변수에 입력합니다. 각 파일의 Worksheet를 'ws'라는 변수에.. 2020. 12. 31.
openpyxl - 엑셀파일의 데이터 가져오기 이번 포스트는 openpyxl 모듈을 사용하여 이미 만들어진 엑셀파일의 데이터를 가져오도록 하겠습니다. 제가 엑셀은 VBA가 익숙하다 보니깐 python으로 엑셀을 다루려고 하다보니 많이 헷갈리네요.. 우선 필요한 모듈을 불러옵니다. 'openpyxl' 중에서 엑셀파일을 불러 오기 위해서는 'load_workbook' 모듈이 필요합니다. 엑셀파일의 경로를 지정해주고 'wb'라는 변수에 입력합니다. 그리고 엑셀파일에서 활성화 된 시트를 'ws'라는 변수에 입력합니다. 엑셀시트에 임의로 글자를 입력해서 저장합니다. 이 글자를 파이썬으로 불러오도록 하겠습니다. '시트['셀위치']].value' 형식으로 쓰면 해당셀의 값이 불러와집니다. 셀 값을 불러오는 다른 방법도 있습니다. '시트.cell(row=행번호, .. 2020. 12. 19.
openpyxl - 파이썬으로 엑셀파일 만들기 파이썬으로 엑셀을 다뤄 보겠습니다. 어떤 모듈을 써야하나 검색했는데 'openpyxl'이라는 모듈이 괜찮다고 하더라구요. 단, 이 모듈은 'xls' 즉 2003이하 버전의 엑셀은 호환이 안 된다네요. 우선 모듈을 불러 오겠습니다. import openpyxl 이렇게 적으셔도 되고, 'from openpyxl import Workbook' 이라고 적으셔도 됩니다. wb = openpyxl.Workbook() 엑셀 워크북을 생성해서 'wb'라는 변수에 저장합니다. ws = wb.active 활성화 된 시트를 'ws'라는 변수에 저장합니다. ws['A1'] = 'test' 'A1' 의 셀에 'test'라고 적어보겠습니다. wb.save(r'C:\Users\passi\Desktop\Test.xlsx') 그리고 .. 2020. 12. 8.