“파이썬으로 엑셀을 제어하는 자동화 도구”
| 기능 | 설명 | 예시 |
|---|---|---|
| Excel 데이터 읽기 | 셀, 범위, 시트 단위로 읽기 | ws.range('A1').value |
| Excel 데이터 쓰기 | DataFrame, 리스트, 문자열 등 바로 입력 가능 | ws.range('A1').value = df |
| 엑셀 자동화 | 반복 업무 자동 실행, 수식 계산, 시트 관리 | 보고서 자동 생성 |
| Excel ↔ Python 연결 | 엑셀 VBA에서 Python 함수 호출 가능 | “Python으로 엑셀 함수 만들기” |
| 시각화 | pandas, matplotlib 그래프 결과를 엑셀에 출력 | ws.pictures.add(fig) |
import xlwings as xw
# ① 엑셀 열기
wb = xw.Book(r'C:\temp\test.xlsx') # 또는 새 파일: xw.Book()
# ② 시트 선택
ws = wb.sheets['Sheet1']
# ③ 엑셀 데이터 읽기
data = ws.range('A1:B5').value
# ④ 엑셀에 데이터 쓰기
ws.range('D1').value = "결과"
ws.range('D2').value = data
# ⑤ 저장 및 닫기
wb.save()
wb.close()
import pandas as pd
import xlwings as xw
df = pd.DataFrame({
'이름': ['김영환', '안대환', '서동기'],
'나이': [25, 30, 28],
'직업': ['개발자', '디자이너', '기획자']
})
wb = xw.Book()
ws = wb.sheets[0]
# DataFrame → Excel
ws.range('A1').value = df
# Excel → DataFrame
df2 = ws.range('A1').options(pd.DataFrame, expand='table').value
📌 Excel에서 pandas의 표(DataFrame)를 자유롭게 주고받을 수 있습니다.
| 작업 | 코드 예시 |
|---|---|
| 새 시트 추가 | wb.sheets.add('새시트') |
| 시트 이름 변경 | ws.name = '결과' |
| 시트 삭제 | ws.delete() |
| 행 삽입 | ws.range('5:5').api.EntireRow.Insert() |
| 열 삽입 | ws.range('C:C').api.EntireColumn.Insert() |
| 셀 병합 | ws.range('A1:C1').merge() |
| 셀 색상 변경 | ws.range('A1').color = (255, 255, 0) |
| 폰트 스타일 변경 | ws.range('A1').api.Font.Bold = True |
| 그래프 삽입 | ws.charts.add() |
| Excel 닫기 | wb.close() |
| 예시 | 설명 |
|---|---|
| ✅ 업무 보고서 자동 생성 | 엑셀 서식에 데이터를 자동으로 채워서 PDF로 저장 |
| ✅ 매일 반복되는 엑셀 작업 자동화 | 복붙, 계산, 정렬 등을 Python으로 자동 처리 |
| ✅ 데이터 분석 결과 시각화 | Python 그래프 → 엑셀에 자동 삽입 |
| ✅ PLM/ERP 연동 | DB나 API에서 불러온 데이터를 엑셀 보고서로 변환 |
import pandas as pd
import xlwings as xw
df = pd.read_excel('bom데이터.xlsx')
# 매출 1000 이상인 고객만 추출
filtered = df[df['수량'] >= 1000]
# 결과를 새로운 시트에 작성
wb = xw.Book('bom데이터.xlsx')
ws = wb.sheets.add('요약')
ws.range('A1').value = filtered
wb.save('bom데이터_결과.xlsx')
wb.close()
“xlwings = Excel을 Python으로 자동화하는 다리”