.xlsx
구조화된 이진 파일.xlsx
파일 하나로 저장됨cell
라고 함pip install openpyxl
import openpyxl
wb = openpyxl.load_workbook('example.xlsx')
print(wb.active) # <Worksheet "Sheet1">
ws = wb.active
print(ws.['A1']) # <Cell 'Sheet1'.A1>
print(ws.['A1'].value) # This is Sheet1
b = ws['B1']
print(b.coordinate) # B1
print(b.value) # This is Sheet1 B1 Cell
from openpyxl.utils import get_column_letter,column_index_from_string
# 열 인덱스를 숫자 → 문자
# 1번째 열의 문자
print(get_column_letter(1)) # A
# 2번째 열의 문자
print(get_column_letter(2)) # B
# 27번째 열의 문자
print(get_column_letter(27)) # AA
# 현재 워크시트의 최대 열
print(get_column_letter(ws.max_column)) # C
# 열 인덱스를 문자열 → 숫자
print(column_index_from_string('AA')) # 27
for cell_obj in list(ws.columns)[0]:
print(cell_obj.value)
# This is Sheet1 A1 Cell
# This is Sheet1 A2 Cell
# This is Sheet1 A3 Cell
import openpyxl
# 스타일변경을 하려면 openpylx.styles를 가져와야 한다.
from openpyxl.styles import Font,Color
wb = openpyxl.Workbook('파일명.xlsx')
ws = wb.active
font = Font(name='Tahoma', # 폰트 종류
size=20, # 폰트 사이즈
bold=True, # 폰트 굵게(True/False)
italic=True, # 폰트 기울기(True/False)
color='FFC0CB') # 폰트 색상(hex code)
ws['A1'].font = font # A1셀에 폰트 스타일 적용
wb.save('파일명.xlsx') # 같은 이름으로 저장하면 덮어쓰기 된다.
# wb = openpyxl.load_workbook('example.xlsx')
del wb['워크시트 이름']
wb.save('파일명.xlsx')
1) 설치
pip install pandas
2) read_excel() 엑셀 파일에서 특정 시트 값 읽기
# padas 모듈을 가져오고 pd 라고 부르겠다.
import pandas as pd
df = pd.read_excel('example.xlsx',sheet_name='Sheet1')
print(df)
# This is Sheet1 A1 Cell This is Sheet1 B1 Cell This is Sheet1 C1 Cell
# 0 This is Sheet1 A2 Cell This is Sheet1 B2 Cell This is Sheet1 C2 Cell
# 1 This is Sheet1 A3 Cell This is Sheet1 B3 Cell This is Sheet1 C3 Cell
3) to_excel() 엑셀 파일 저장
# df(DataFrame)
df.to_excel('example_from_pandas.xlsx',index=False)
4) read_html() html에서 table가져오기
# table이 존재하는 url만 가능
# 한국어의 경우 인코딩을 안해주면 글자가 깨져서 나올 수도 있다.
pd.read_html('https://mizykk.tistory.com/39', header=0, encoding='utf-8')
'''
[ 과일 색상 가격
0 사과 빨강 1500원
1 사과 초록 1000원
2 바나나 노랑 3000원
3 바나나 초록 2000원,
국가 도시 언어
0 한국 서울 한국어
1 미국 뉴욕 영어
2 이탈리아 피렌체 이탈리아어
3 프랑스 파리 불어,
한국어 영어
0 1월 January
1 2월 Feburary
2 3월 March,
[Python] 리스트 정렬하기 :: sort / sorted (0) 2021.02.10
0 [Python] 영문 > 한글 키보드 입력 변환하기 :: 자모결합 / 자소결합 (0) 2021.01.29
1 [Python] for문(반복문) 진행상황 표시 :: tqdm / tqdm_note... 2021.01.28
2 [Python] has no attribute 'compat' (most likel... 2020.10.05
3 [Python] 위경도 거리 구하기 :: haversine (1) 2020.01.28]
'''
1) 설치
pip install xlwings
xlwings addin install
2) 엑셀 파일에서 시트 연결
import xlwings
import pandas
wb = xlwings.Book('파일명.xlsx')
sheet = wb.sheets[0] # 첫번째 시트 읽어오기
3) value() 셀에 값 설정
# 셀 A1에 값 설정
sheet.range('A1').value() = 'Hello'
sheet.range('A1') # 'Hello'
# 셀 A2부터 A5까지 값으로 25를 설정
sheet.range('A2:A5').value() = 25
3) formula() 셀에 수식 설정
# 셀 A2~A5까지의 값의 합계를 구하는 수식
sheet.range('A6').formula = '=SUM(A2:A5)'
4) 창 없이 매크로를 실행하고 싶을 때
# 엑셀 인스턴스 생성 => 안 보이게
app = xlwings.App(visible=False)
# 여기에 실행할 코드 삽입
# 인스턴스 종료 => 엑셀 프로그램 종료
app.kill()
터미널에서 사용자로부터 2개의 값을 입력받아 엑셀에 구구단 표를 작성하고, 작성된 내용을 엑셀 파일로 저장하는 프로그램을 만들어 봤다.
import openpyxl
import sys
# 엑셀에 구구단을 만드는 함수
def main(file_name, M, N):
wb = openpyxl.Workbook() # 워크북>워크시트>셀
ws = wb.active #활성화된 워크시트
# %%
ws['A1'] = ''
print(ws['A1'].value)
# A2~A5까지 1~4까지 값 입력
for n in range(1, N+1):
ws.cell(row=n+1,column=1).value = n
# B2~F5까지 1~4까지 값 입력
for m in range(1, M+1):
ws.cell(row=1,column=m+1).value = m
for m in range(1, M+1):
for n in range(1, N+1):
ws.cell(row=n+1,column=m+1).value = m*n
file_name = file_name.split('.')[0] # 파일명과 확장자명을 .을 기준으로 나눠서 파일명만 가져오기
wb.save(f'{file_name}.xlsx') # 매번 파일 이름을 지정하기 귀찮으므로..
if __name__=='__main__':
# 실행하려면?
# 1. multiplicationTable.py가 있는 폴더로 이동
# 2. 터미널에 python multiplicationTable.py 값1 값2 입력
file_name = sys.argv[0]
M = int(sys.argv[1])
N = int(sys.argv[2])
main(file_name, M, N)
# os 모듈 : 운영체제 관리할 때 쓰는 모듈, 파일 외적으로 관리하는 모듈.
argv(argument vector) 란?
- argument - 프로그램을 실행할 때 커맨드 라인(터미널)에서 입력한 값들을 의미
- vector - 여러 개의 값을 저장할 수 있는 데이터 구조
- sys.argv 의 첫번째 요소는 스크립트의 경로, 두 번째부터는 입력된 값을 의미
argument
와parameter
의 차이?
- parameter : 함수 정의나 호출 시 함수가 필요로 하는 값(자료형,값의 개수)
- argument : 함수 호출 시 실제로 전달되는 값
def sum(a,b) : # 여기서 a,b는 sum함수에서 필요로 하는 값을 나타내는 것 sum = a+b sum(1,2) # 함수를 호출하면서 동시에 값을 전달한다. 이때 이 값이 argument다.