流式传输一个巨大的Excel文件,即时创建它?

时间:2016-08-03 08:43:34

标签: python excel streaming openpyxl bigdata

我正在编写一个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

1 个答案:

答案 0 :(得分:2)

openpyxl已经提供了专为流媒体使用而设计的write-only模式。但是,由于所有XSLX文件实际上都是zip文件,并且由于zip格式不允许流式传输,因此在编写XLSX文件时无法对其进行流式传输。