파이썬으로 엑셀 프로그래밍

는는·2023년 3월 19일
0

python

목록 보기
18/19

xlsxwriter

텍스트, 숫자 및 수식을 여러 워크시트에 입력하는데 사용할 수 있으며, 서식, 이미지, 차트, 페이지 설정, 자동필터, 조건부 서식 및 기타 여러 기능을 지원하는 모듈 입니다.

다른 모듈에 비해 다양한 기능을 지원하고, 빠른 속도, 적은 메모리 사용합니다.

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()

0개의 댓글