일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- git
- Converting
- GitLab
- Python
- Database
- TORCH
- Paper
- Package
- KAKAO
- enV
- numpy
- docker
- DB
- PostgreSQL
- Mac
- CUDA
- list
- pytorch
- evaluation
- Linux
- format
- Windows
- AI
- Container
- judge
- Flask
- LLM
- Laravel
- file
- pandas
Archives
- Today
- Total
Daily Develope
[Python] 엑셀(Excel) 파일 데이터 읽기/쓰기 본문
읽기
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
'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 |