python生成Excel文件减少使用内存

1、openpyxl模块生成

openpyxl中,write_only=True是一个用于在处理大量数据时减小内存占用的选项。通过启用写入优化模式,你可以使用write_only模式来生成大型Excel文件而不会加载整个文档到内存中。

以下是使用write_only=True的示例:

from openpyxl import Workbook

wb = Workbook(write_only=True)
ws = wb.create_sheet()

for row_data in your_data:
    ws.append(row_data)

wb.save('your_file.xlsx')

在这个示例中,write_only=TrueWorkbook设置为写入优化模式,而ws = wb.create_sheet()创建了一个写入优化模式的工作表。然后,通过使用ws.append(row_data)逐行写入数据。

这种方法适用于只需一次性写入数据而不需要在生成文件后进一步编辑的情况。请注意,写入优化模式下的工作表是单向的,只能向其中添加数据,不能在之后再从中读取数据。

2、xlsxwriter模块 contant_memory=True生成

xlsxwriter 是另一个流行的 Python 库,用于创建 Excel 文件。其中 constant_memory 是一个用于减少内存占用的选项。启用 constant_memory=True 时,xlsxwriter 将尽量减小内存使用,但可能会导致写入速度略有降低。

以下是使用 xlsxwriter 并启用 constant_memory 写入指定工作表的示例

workbook = xlsxwriter.Workbook(self.ex_path + excel_name + ".xlsx", {'constant_memory': True})
worksheet = workbook.add_worksheet("sheet%d" % sheet_num)
font_format = workbook.add_format({'font_name': 'Arial', 'font_size': 12}) 设置字体和字体大小
title_row = ['name', 'age', 'sex']
content_row = ['a', 'b', 'c']
worksheet.write_row(0, 0, title_row, font_format)
worksheet.write_row(total_num, 0, val_list, font_format)
workbook.close()

在这个例子中,通过 {'constant_memory': True} 启用了 constant_memory 选项。然后,通过 add_worksheet 方法创建了一个名为 "MySheet" 的工作表,并将其赋值给 worksheet。接着,使用 write_row 方法逐行将数据添加到指定的工作表中。最后,通过 workbook.close() 关闭工作簿以保存文件。

请注意,启用 constant_memory=True 选项会导致写入速度略有降低,因为它将尽量减小内存使用。根据你的实际需求,可以根据内存和性能的权衡进行选择。

 
posted @ 2024-03-01 14:28  摆渡人1993  阅读(41)  评论(0编辑  收藏  举报