Witam Mam krótkie pytanie. Nie znalazłem odpowiedzi w Internecie, może ktoś z was może mi pomóc.Django: openpyxl zapisuje skoroszyt jako załącznik
więc chcę zapisać skoroszyt jako załącznik, ale nie wiem, jak pozwala zobaczyć przykład:
from openpyxl import Workbook
from openpyxl.cell import get_column_letter
wb = Workbook(encoding='utf-8')
dest_filename = 'file.xlsx'
ws = wb.worksheets[0]
ws.title = "range names"
for col_idx in xrange(1, 40):
col = get_column_letter(col_idx)
for row in xrange(1, 600):
ws.cell('%s%s'%(col, row)).value = '%s%s' % (col, row)
ws = wb.create_sheet()
ws.title = 'Pi'
ws.cell('F5').value = 3.14
Potem próbowałem:
response = HttpResponse(wb, content_type='application/vnd.ms-excel')
response['Content-Disposition'] = 'attachment; filename="foo.xls"'
return response
To powrocie .xlsx rzeczywiście, ale w pliku jest tylko adres obiektu, a nie zawartość pliku:
<openpyxl.workbook.Workbook object at 0x00000000042806D8>
Czy ktoś może pomóc?
Czy próbowałeś utworzyć instancję 'output = StringIO.StringIO()', a następnie napisać do niej metodą 'openpyxl.writer.excel.save_workbook' i przekazać' output.getvalue() 'do konstruktora' HttpResponse'? Daj mi znać, jeśli to pomoże - dodam to jako odpowiedź. – alecxe
Jeszcze jedną opcją jest użycie metody 'openpyxl.writer.excel.save_virtual_workbook'. – alecxe
'response = HttpResponse (save_virtual_workbook (wb), content_type = 'application/vnd.ms-excel')' Working Thanks mate :)) zrób ten komentarz jako odpowiedź Zaznaczę go jako poprawiony – Silwest