我正在编写一个Web应用程序,有时可能会在Excel文件中输出数十万行(甚至更多行)。选择openpyxl进行Excel输出准备,但我不确定是否可以从数据库中读取数据并同时输出。有没有办法做到这一点?这是我在CSV中的含义示例:
def csv_view(request, iterator, keys):
"""A view that streams a large CSV file."""
class Echo(object):
"""An object that implements just the write method of the file-like
interface.
"""
def write(self, value):
"""Write the value by returning it,
instead of storing in a buffer."""
return value
def get_iter():
writer = csv.writer(Echo())
yield writer.writerow(keys)
for row in iterator:
yield writer.writerow(row)
response = StreamingHttpResponse(get_iter(), content_type="text/csv")
response['Content-Disposition'] = 'attachment; filename="output.csv"'
return response
答案 0 :(得分:2)
openpyxl已经提供了专为流媒体使用而设计的write-only
模式。但是,由于所有XSLX文件实际上都是zip文件,并且由于zip格式不允许流式传输,因此在编写XLSX文件时无法对其进行流式传输。