stream传一个巨大的Excel文件,在飞行中创build它?

我正在编写一个Web应用程序,有时可能会在Excel文件中输出数十万行(甚至更多)。 为Excel输出准备select了openpyxl,但我不确定是否可以从数据库中读取数据并同时输出。 有没有办法做到这一点? 这里是我的意思是在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 

openpyxl已经提供了一个专为stream媒体使用而devisewrite-only模式。 但是,由于所有XSLX文件实际上都是zip文件,并且由于zip格式不允许进行stream式处理,因此在写入XLSX文件时不可能进行stream式处理。