Daily Develope

[Python] 엑셀(Excel) 파일 데이터 읽기/쓰기 본문

Develope/Python

[Python] 엑셀(Excel) 파일 데이터 읽기/쓰기

noggame 2022. 9. 22. 13:49

읽기

CSV Lib. 사용

### Data sample (target.csv 파일)
# word     count
# hello    5
# bye      3
# good     4

import csv

targetFile = open(f'{target_path}/target.csv', 'r')
csvData = csv.reader(targetFile)

header = next(csvData)     # header 정보 분리 (word, count)
print(header)

for word, count in csvData:
    print(word, count)

### Output
# word    count
# hello    5
# ...

쓰기

openpyxl & Workbook Lib. 사용

파일/시트 생성

import Workbook

### 작업영역 생성 (파일별 워크북 개별 할당)
wb = openpyxl.Workbook()
ws = wb.active            # 워크시트 생성
ws.title = "sheet_01"    # Title of the Sheet


### 값 쓰기
ws['A1'] = '쓰기 예시1'        # 방법1) 특정 cell 위치에 비로 쓰기
ws.cell(row=1, col=2).value = '쓰기 예시2'    # 방법2) index 위치의 cell개체에 값으로 지정 (주의_row와 col의 값은 1부터 시작)


### 셀 병합 & 값 쓰기
ws.merge_cells('A2:D2')
top_left_cell = ws['A2']
top_left_cell.value = "Merged Cell"


### 파일로 저장
wb.save(filename="/some/path/my_first_excel.xlsx")

디자인

  • 테두리
from openpyxl.styles import Border
from openpyxl import Workbook

## 특정 셀 테두리 설정
ws.cell(row=1, col=1).border = Border(left=Side(style=border),
                                          right=Side(style=border),
                                          top=Side(style=border),
                                          bottom=Side(style=border))

## 설정된 시트 전체 테두리 설정
for row in range(1, target.max_row+1):
for col in range(1, target.max_column+1):
ws.cell(row, col).border = Border(left=Side(style=border),
                                              right=Side(style=border),
                                              top=Side(style=border),
                                              bottom=Side(style=border))
  • 폰트 / 정렬 / 색 채우기
from openpyxl.workbook import Workbook
from openpyxl.styles import Font, Alignment, PatternFill, GradientFill

wb = Workbook()
ws = wb.active

c = ws['A1']
c.font = Font(size=12)

## 폰트 및 셀
c.font  = Font(b=True, color="FF0000")
c.alignment = Alignment(horizontal="center", vertical="center")
c.fill = PatternFill("solid", fgColor="DDDDDD")
c.fill = fill = GradientFill(stop=("000000", "FFFFFF"))
  • 색 번호
from openpyxl.styles.colors import Color
c = Color(indexed=32)
c = Color(theme=6, tint=0.5)

참고 - Pandas

[Python] 엑셀 파일 다루기 with Pandas

'Develope > Python' 카테고리의 다른 글

[Python] Json 읽기 / 쓰기  (0) 2022.11.15
[Python] 단위테스트 (Unit test)  (0) 2022.10.25
[Anaconda] Python conda 가상환경  (0) 2022.07.04
[Python] 시간 측정 (예제코드)  (0) 2022.06.28
[Python] Draw Image 이미지 그리기  (0) 2022.04.11
Comments