python 각종 excel 쓰기 방식의 속도 대비
먼저 openpyxl을 사용하여 쓰기 작업을 합니다. 코드는 다음과 같습니다.
book = openpyxl.Workbook()
auths = Auth.objects.filter(owner_id=1)
filename = ' '
for auth in auths:
sheet = book.create_sheet(auth.name, index = 0)
sheet.append([
_(" "),
_(" "),
_(" "),
_(" "),
_(" "),
_(" "),
])
objs = None
objs = Book.objects.filter(owner_id=auth.id)
for u in objs:
data = []
data.append(u.name)
data.append(auth.name)
data.append(u.translator)
data.append(u.press)
data.append(u.serializer)
data.append(u.page)
sheet.append(data)
return ExcelBookResponse(book, filename)
xlwt를 사용하여 데이터 쓰기:
book = xlwt.Workbook()
auths = Auth.objects.filter(owner_id=1)
filename = ' '
for auth in auths:
sheet = book.add_sheet(sensor.name)
sheet.write(0, 0, _(" "))
sheet.write(0, 1, _(" "))
sheet.write(0, 2, _(" "))
sheet.write(0, 3, _(" "))
sheet.write(0, 4, _(" "))
sheet.write(0, 5, _(" "))
i = 1
objs = None
objs = Book.objects.filter(owner_id=auth.id)
for u in objs:
sheet.write(i, 0, u.name)
sheet.write(i, 1, auth.name)
sheet.write(i ,2,u.translator)
sheet.write(i ,3,u.press)
sheet.write(i, 4, u.serializer)
sheet.write(i, 5, u.page)
i += 1
return ExcelBookResponse(book, filename)
XlsxWriter를 사용하여 데이터 쓰기:
book = xlsxwriter.Workbook(output)
auths = Auth.objects.filter(owner_id=1)
for auth in auths:
sheet = book.add_worksheet(sensor.name)
header = [
_(" "),
_(" "),
_(" "),
_(" "),
_(" "),
_(" "),
]
sheet.write_row("A1", header)
objs = Book.objects.filter(owner_id=auth.id)
i = 1
for u in objs:
sheet.write(i, 0, u.name)
sheet.write(i, 1, auth.name)
sheet.write(i ,2,u.translator)
sheet.write(i ,3,u.press)
sheet.write(i, 4, u.serializer)
sheet.write(i, 5, u.page)
i += 1
book.close()
file_ext = 'xlsx'
mimetype = 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'
# self['Content-Disposition'] = 'attachment; filename*=UTF-8\'\'"{2}.{1}"; filename="{0}.{1}"'.format(filename.replace('"', '\"'), file_ext, urllib.parse.quote(filename.replace('"', '\"'))).encode('utf8')
return HttpResponse(content=output.getvalue(), content_type=mimetype)
양자의 시간 비교(두 가지 방식의 파일 내용은 동일):openpyxl: 파일 크기는 110.75kb, 평균 시간은 약 570ms
xlwt: 파일 크기는 505.91kb, 평균 시간은 약 440ms
XlsxWrite: 파일 크기는 109.28kb, 평균 시간은 약 500ms
xlwt가 쓰는 줄 수는 제한이 있기 때문에 비교적 큰 파일에 대해 XlsxWrite의 속도는 비교적 빠르다
보충 지식:python excel 파일 쓰기가 너무 느려서 어떻게 해결합니까 -python excel에 대량의 데이터 쓰기
현재 사용되고 있는 Openpyxl은 데이터베이스에서 8W 줄의 데이터를 가져와서 Openpyxl을 통해 excel에 쓰는 데 8분 가까이 걸린다. 이것도 너무 느리다.kettle의 플러그인 초진으로python이 속도를 높일 수 있는 방법이 있습니까,openpyxl을 대량으로 삽입할 수 있습니까,행 효율이 너무 낮습니다.
#!/usr/bin/python
# -*- coding: UTF-8 -*-
from openpyxl import Workbook as wbook
def xlsx(filename, rows_info, sheet='Result'):
if filename and sheet:
wb = wbook()
_sheet = wb.active
_sheet.title = sheet
row = _sheet.max_row
for line in rows_info:
if isinstance(line, str):
row_list = [line]
elif isinstance(line, dict):
row_list = list(line.values())
else:
try:
row_list = list(line)
except:
row_list = []
for col in range(0, len(row_list)):
col_info = row_list[col]
_sheet.cell(row, col + 1, col_info)
row += 1
wb.save(filename)
else:
return ' sheet '
이상의 이python 각종 excel 쓰기 방식의 속도 대비는 바로 편집자가 여러분에게 공유한 모든 내용입니다. 참고 부탁드리고 저희도 많이 사랑해 주세요.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
로마 숫자를 정수로 또는 그 반대로 변환그 중 하나는 로마 숫자를 정수로 변환하는 함수를 만드는 것이었고 두 번째는 그 반대를 수행하는 함수를 만드는 것이었습니다. 문자만 포함합니다'I', 'V', 'X', 'L', 'C', 'D', 'M' ; 문자열이 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.