파일을 줄별로 저장할 때 - 예시
from openpyxl import *
from openpyxl.styles import Font, Alignmnet
from openpyxl.utils import get_column_letter
# excel sheet 시작하기
wb = Workbook()
# sheet 만들기 (기본적으로 1개 제공 추가 만들기)
worksheet = wb.create_sheet(sheetname)
# sheet 1개 더 만들기
worksheet1 = wb.create_sheet(sheetname1)
# field 이름 설정하기
field_name = ['이름', '나이', '주소', '연락처']
# field width 설정하기
field_width = ['10', '5', '30', '20']
# 특정 넣을 값을 만드는 로직 추가
member_list = Member.objects.all()
# 먼저 field 설정해주기
for i, head in enumerate(field_name):
# cell(1)을 해줘야지 가장 위에 줄에 입력해준다.
# 해당 필드의 width 설정해주기
worksheet.column_dimensions[get_column_letter(i + 1)].width = field_width[i]
# 해당 필드의 값 주기
worksheet.cell(1, i + 1).value = head
# 폰트 설정해주기
worksheet.cell(1, i + 1).font = Font(name='맑은 고딕', size=13, bold=True)
# 폰트 위치 설정해주기 (정중앙정렬)
worksheet.cell(1, i + 1).alignment = Alignment(horizontal='center', vertical='center')
# 해당 field들에게 값 주기
for i, data in enumerate(member_list):
# i + 2를 해줘야지 2번째 줄부터 입력해준다.
worksheet.cell(i + 2, 1).value = data.name
worksheet.cell(i + 2, 2).value = data.age
worksheet.cell(i + 2, 3).value = data.address
worksheet.cell(i + 2, 4).value = data.phone
# 가장 기본적으로 셋팅되어 있는 sheet 삭제
wb.remove(wb['Sheet'])
# 저장하기
wb.save('member_name.xlsx')
파일을 읽어서 처리할 때 - 예시
import openpyxl
def open_pyxl():
not_matching_membmer = []
multiple_member = []
what_error = []
coupon = Coupon.objects.get(id=636)
success_count = 0
wb = openpyxl.load_workbook('account.xlsx') # 해당 파일 불러오기
ws = wb.active # 활성화 시트가지져오기
wr = ws.rows # 열별로 가져오기 한줄 한줄 가져오기
for i in wr:
try:
account = i[0].value (해당 줄의 첫 번째 행의 값 가져오기)
member = Member.objects.get(account=account)
coupon.issue([member])
print('coupon _issue success : ', member.id, ' id: ', member.account)
success_count += 1
except Member.DoesNotExist:
not_matching_membmer.append(account)
except Member.MultipleObjectsReturned:
multiple_member.append(account)
except Exception as e:
dict = {}
dict[account] = str(e)
what_error.append(dict)
print('성공 갯수 :', success_count, '매칭 맴버 x : ', not_matching_membmer, '중복 멤버 :',
multiple_member, '알 수 없는 에러 :', what_error)
'Python' 카테고리의 다른 글
python is not , != , is , == (0) | 2020.06.10 |
---|---|
python 함수 timeout 설정하기 (0) | 2020.03.12 |
Python range, enumerate, zip, map, filter (0) | 2020.01.06 |
파이썬 25. 파이썬 인자 및 매개변수 (0) | 2019.12.29 |
파이썬 24. 파이썬 에러메시지(try, except, else, finally (0) | 2019.12.29 |