我正在编写一个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
csv_view
函数的东西,它可以即时生成XLS而不是CSV。@jmunsch - d33tahSpooledTemporaryFile
,然后流式传输分块的Excel文件?看起来write_only
模式使用具有无限大小的NamedTemporaryFile
?不确定用例。 - jmunsch.CopyFromRecordSet()
方法,这意味着您不必使用迭代器 - 只需将数据从数据库获取到记录集中,然后使用该方法一次性“转储”数据即可。 - SierraOscar