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=True
将Workbook
设置为写入优化模式,而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
选项会导致写入速度略有降低,因为它将尽量减小内存使用。根据你的实际需求,可以根据内存和性能的权衡进行选择。