mirror of
https://github.com/pretix/pretix.git
synced 2026-05-09 15:54:03 +00:00
Excel export: Use openpyxl's constant memory implementation
This commit is contained in:
@@ -146,15 +146,17 @@ class ListExporter(BaseExporter):
|
|||||||
return self.get_filename() + '.csv', 'text/csv', output.getvalue().encode("utf-8")
|
return self.get_filename() + '.csv', 'text/csv', output.getvalue().encode("utf-8")
|
||||||
|
|
||||||
def _render_xlsx(self, form_data, output_file=None):
|
def _render_xlsx(self, form_data, output_file=None):
|
||||||
wb = Workbook()
|
wb = Workbook(write_only=True)
|
||||||
ws = wb.active
|
ws = wb.create_sheet()
|
||||||
try:
|
try:
|
||||||
ws.title = str(self.verbose_name)
|
ws.title = str(self.verbose_name)
|
||||||
except:
|
except:
|
||||||
pass
|
pass
|
||||||
for i, line in enumerate(self.iterate_list(form_data)):
|
for i, line in enumerate(self.iterate_list(form_data)):
|
||||||
for j, val in enumerate(line):
|
ws.append([
|
||||||
ws.cell(row=i + 1, column=j + 1).value = str(val) if not isinstance(val, KNOWN_TYPES) else val
|
str(val) if not isinstance(val, KNOWN_TYPES) else val
|
||||||
|
for val in line
|
||||||
|
])
|
||||||
|
|
||||||
if output_file:
|
if output_file:
|
||||||
wb.save(output_file)
|
wb.save(output_file)
|
||||||
@@ -233,14 +235,14 @@ class MultiSheetListExporter(ListExporter):
|
|||||||
return self.get_filename() + '.csv', 'text/csv', output.getvalue().encode("utf-8")
|
return self.get_filename() + '.csv', 'text/csv', output.getvalue().encode("utf-8")
|
||||||
|
|
||||||
def _render_xlsx(self, form_data, output_file=None):
|
def _render_xlsx(self, form_data, output_file=None):
|
||||||
wb = Workbook()
|
wb = Workbook(write_only=True)
|
||||||
ws = wb.active
|
|
||||||
wb.remove(ws)
|
|
||||||
for s, l in self.sheets:
|
for s, l in self.sheets:
|
||||||
ws = wb.create_sheet(str(l))
|
ws = wb.create_sheet(str(l))
|
||||||
for i, line in enumerate(self.iterate_sheet(form_data, sheet=s)):
|
for i, line in enumerate(self.iterate_sheet(form_data, sheet=s)):
|
||||||
for j, val in enumerate(line):
|
ws.append([
|
||||||
ws.cell(row=i + 1, column=j + 1).value = str(val) if not isinstance(val, KNOWN_TYPES) else val
|
str(val) if not isinstance(val, KNOWN_TYPES) else val
|
||||||
|
for val in line
|
||||||
|
])
|
||||||
|
|
||||||
if output_file:
|
if output_file:
|
||||||
wb.save(output_file)
|
wb.save(output_file)
|
||||||
|
|||||||
Reference in New Issue
Block a user