, например, следующий код сначала создает файл xlsx, а затем передает его в виде загрузки, но мне интересно, можно ли отправлять данные xlsx по мере его создания. Например, представьте себе, нужно ли генерировать очень большой файл xlsx, пользователю нужно подождать, пока он не будет завершен, а затем получить загрузку, то, что я хочу, - это запустить загрузку файла xlsx в браузере пользователя, а затем отправить над данными по мере их создания. Это кажется тривиальным с CSV-файлом, но не с файлом xlsx.Python: сгенерировать xlsx в памяти и загрузить файл потока?
try:
import cStringIO as StringIO
except ImportError:
import StringIO
from django.http import HttpResponse
from xlsxwriter.workbook import Workbook
def your_view(request):
# your view logic here
# create a workbook in memory
output = StringIO.StringIO()
book = Workbook(output)
sheet = book.add_worksheet('test')
sheet.write(0, 0, 'Hello, world!')
book.close()
# construct response
output.seek(0)
response = HttpResponse(output.read(), mimetype="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet")
response['Content-Disposition'] = "attachment; filename=test.xlsx"
return response
если один открывает файл CSV в Excel, он будет автоматически обновлять с новыми строками, как они будут добавлены? или они должны обновить или повторно открыть файл, чтобы увидеть обновление? – user299709
Поток CSV будет выглядеть так, как будто он загружается в браузере, но поскольку вначале нет размера файла, у него просто есть счетчик прогресса. Пользователи могут открыть CSV до того, как он загрузится, но я думаю, что большинство пользователей увидит, что загрузка все еще продолжается. – rdrey