텍스트, 숫자 및 수식을 여러 워크시트에 입력하는데 사용할 수 있으며, 서식, 이미지, 차트, 페이지 설정, 자동필터, 조건부 서식 및 기타 여러 기능을 지원하는 모듈 입니다.
다른 모듈에 비해 다양한 기능을 지원하고, 빠른 속도, 적은 메모리 사용합니다.
xlsxwriter 모듈을 이용해서 엑셀 파일을 생성하고 시트와 숫자를 넣고 더하기, 빼기, 곱하기 나누기를 해보겠습니다.
workbook -> 엑셀 파일 workbook안에서 worksheet를 생성이 가능,작업 가능
worksheet -> workbook에 내에 포함, worksheet를 생성해야 그 안에 포함되는 cell 값 입력,작업 가능
cell -> worksheet에는 컬럼과 로우로 구분되어 있습니다. 이를 통해 각각의 칸에 접근할 수 있는데, 이단위를 cell라고 합니다.
# 엑셀 파일 생성하기
workbook = xlsxwriter.Workbook('test_1.xlsx')
# 파일 안에 워크 시트 생성하기
worksheet = workbook.add_worksheet('test')
worksheet.write('A1', 3)
worksheet.write('B1', 4)
worksheet.write('A2', '=A1+B1')
worksheet.write('B2', '=A1-B1')
worksheet.write('C2', '=A1/B1')
worksheet.write('D2', '=A1*B1')
workbook.close()
이것을 엑셀 함수를 이용해서도 만들 수 있습니다.
sum -> 합계 함수
product -> 곱 함수
average -> 평균 함수
imsub -> 빼기
product -> 곱하기
quotient -> 나누기
workbook = xlsxwriter.Workbook('test_1.xlsx')
worksheet = workbook.add_worksheet('test')
worksheet.write('A1', 3)
worksheet.write('B1', 4)
worksheet.write('C1', 2)
worksheet.write('D1', 5)
worksheet.write('E1', 7)
worksheet.write('A2', '=sum(A1:E1)')
worksheet.write('B2', '=product(A1,B1)')
worksheet.write('C2', '=average(C1,D1)')
workbook.close()
비교 연산
import xlsxwriter
# 엑셀 파일 생성
workbook = xlsxwriter.Workbook('test_1_1.xlsx')
# 파일 안에 위커 시트 생성
worksheet = workbook.add_worksheet('jeju')
worksheet.write('A1', 10)
worksheet.write('B1', 5)
#비교연산
worksheet.write('A2','=A1=B1')
worksheet.write('B2','=A1>B1')
worksheet.write('C2','=A1>=B1')
worksheet.write('D2','=A1<B1')
worksheet.write('E2','=A1<=B1')
worksheet.write('F2','=A1<>B1')
workbook.close()
import xlsxwriter
# 엑셀 파일 생성
workbook = xlsxwriter.Workbook('test_1_2.xlsx')
# 파일 안에 위커 시트 생성
worksheet = workbook.add_worksheet('test')
worksheet.write('A1', 3)
worksheet.write('B1', 4)
worksheet.write('C1', 2)
worksheet.write('D1', 5)
worksheet.write('E1', 7)
worksheet.write('F1', 'TRUE')
worksheet.write('G1', 'FALSE')
#비교연산
worksheet.write('A2','=A1&B1')
worksheet.write('B2','=SUM(A1:E1)')
worksheet.write('C2','=SUM(A1, B1, C1, D1, E1)')
worksheet.write('D2','=SUM(A1:C1, D1:E1)')
worksheet.write('E2','=A1^2') # 제곱
worksheet.write('F2','=A1%') # 백분율
worksheet.write('G2','=AND(F1,G1)')
worksheet.write('H2','=OR(F1,G1)')
workbook.close()
# 엑셀 파일 생성하기
workbook = xlsxwriter.Workbook('test_1_3.xlsx')
# 파일 안에 워크 시트 생성하기
worksheet = workbook.add_worksheet('test')
score_data = [
['이름', '국', '영', '수'],
['동은', 90, 80, 90],
['연진', 91, 70, 80],
['여정', 92, 60, 70],
['사라', 93, 50, 80],
]
row = 0
col = 0
for 이름, 국, 영, 수 in score_data:
worksheet.write(row, col, 이름)
worksheet.write(row, col+1, 국)
worksheet.write(row, col+2, 영)
worksheet.write(row, col+3, 수)
if row == 0:
worksheet.write(row, col+4, '점수합계')
worksheet.write(row, col+5 , '최댓값')
worksheet.write(row, col+6 , '최솟값')
worksheet.write(row, col+7 , '평균')
worksheet.write(row, col+8 , '순위')
else:
worksheet.write(row, col+4, f'{국 + 영 + 수}')
worksheet.write(row, col+5 , f'{max(국,영,수)}')
worksheet.write(row, col+6 , f'{min(국,영,수)}')
worksheet.write(row, col+7 , f'{sum([국,영,수])/3}')
worksheet.write(row, col+8 , '=RANK(H'+str(row+1)+',$H$2:$H$5)')
row += 1
workbook.close()
import xlsxwriter
# 엑셀 파일 생성하기
workbook = xlsxwriter.Workbook('test_2.xlsx')
# 파일 안에 워크 시트 생성하기 (여러개의 워크시트 만들 수 있음)
worksheet = workbook.add_worksheet('test')
worksheet.write(0, 0, 'Excel')
worksheet.write(1, 0, 3)
worksheet.write(2, 0,9.5)
worksheet.write(3, 0, '=COS(PI()/4)')
worksheet.write(4, 0, '')
worksheet.write(5, 0, None)
workbook.close()
import datetime
workbook = xlsxwriter.Workbook('test_3_1.xlsx')
worksheet = workbook.add_worksheet('test')
date_time = datetime.datetime.strptime('2020-5-6','%Y-%m-%d')
date_format = workbook.add_format({'num_format': 'd mmmm yyyy'})
worksheet.write(0, 0, date_time, date_format)
workbook.close()