-
openpyxl - 엑셀을 다루기 위한 패키지.Python study/실전프로젝트 2021. 8. 20. 16:56
파이선에서 엑셀을 다루기 위한 패키지들은 많이 있다. xlwt , OpenPyXL, XlsxWriter, PyExceleate 등이 있는데
그 중 가장 많이 쓰이는 것이 XlsxWriter 와 OpenPyXL이다.
XlsxWriter
는 엑셀의 많은 기능을 지원하고 있음에도 불구하고 커다란 단점이 하나 있다. 바로 기존에 저장해둔 엑셀 파일을 불러 들이지 못한다는것 (=fileload 불가)
OpenPyXL
충실하게 엑셀기능을 지원하면서도 이러한 단점이 없어서 많이 쓰이고 있다.
openpyxl 설치
pip install openpyxl
워크북 생성
모든 데이터 읽어오기
import openpyxl as xl wb = xl.load_workbook('C:/Project/steel/faq.xlsx') for sheet_nm in wb.sheetnames: print('*' * 100) print('시트명:', sheet_nm) sheet = wb[sheet_nm] for row_data in sheet.iter_rows(min_row=1): # min_row는 시작 행을 지정 for cell in row_data: print('[', cell.value, ']') print('=' * 100) wb.close()
출처: https://needjarvis.tistory.com/640 [자비스가 필요해]
workbookname.sheetnames
.sheetnames:
sheet 명을 가져올수있는 함수.
sheet.iter_rows(min_row=1)
.iter_rows:
로우데이터를 가져오는 함수 매게변수인 min_row 는 시작 행을 지정한다.
row_data 의 값은 셸(cell) 값들로 이루어져 있으며 , 셀의 값을 가져오려면 cell.value 를 사용해야 한다.
모든 작업이 끝날 경우 , 워크 북을 close하여 엑셀 access를 닫는다.
엑셀 쓰기
import openpyxl as xl wb = xl.Workbook() sheet = wb.active sheet.title = '테스트' # 컬럼명 지정(헤더) col_names = ['질문', '답변'] for seq, name in enumerate(col_names): sheet.cell(row=1, column=seq+1, value=name) # 시트 저장 faq_data = [('비밀번호 변경', '비밀번호 변경은 어떻게 해야 합니다.'), ('테스트 하는 방법', '테스트는 잘 해야 합니다.')] row_no = 2 for n, rows in enumerate(faq_data): for seq, value in enumerate(rows): sheet.cell(row=row_no+n, column=seq+1, value=value) wb.save("c:/project/steel/faq2.xlsx") wb.close()
출처: https://needjarvis.tistory.com/640 [자비스가 필요해]
enumerate() :
'열거하다'라는 뜻으로 이 함수는 순서가 있는 자료형(리스트 , 튜플, 문자열)을 입력으로 받아 인덱스 값을 포함 하는 enumerate 객체를 돌려준다
'Python study > 실전프로젝트' 카테고리의 다른 글
python_android device 제어 : 다수의 device_serial number 문자열 처리 (0) 2022.10.11 for문 구조에 대한 고민 (0) 2021.08.23 파이썬 GUI 프로그래밍 - PYQT5 (0) 2021.07.20 파이썬 GUI 프로그래밍 (0) 2021.07.20 파이썬 소켓 프로그래밍 사용법 (0) 2021.07.19