简单比较一下openpyxl在行写入与单元格写入性能上的对比。
Python Excel
简述
之前一直用xlrd、xlwt处理表格,但是发现限制台,超过了65535就不能读取了,改用openpyxl,了解了一下之后,发现openpyxl可以行写入,测试一下行写入与单元格写入二者的性能。
样本
表格元数据176233行、7列,数据包含字符串类型、数字、时间等常见类型。
试验体
PC:MacOS
openpyxl版本:3.0.7
源代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
| import datetime import openpyxl
reader_workbook = openpyxl.load_workbook('data/LLBB_GRCKYE1.xlsx') sheet = reader_workbook.get_sheet_by_name(reader_workbook.sheetnames[0]) sheet_row = sheet.max_row sheet_col = sheet.max_column
start1 = datetime.datetime.now() new_wb = openpyxl.Workbook() new_sheet = new_wb.create_sheet(title='Sheet', index=0) for row in sheet.values: new_sheet.append(row) new_wb.save('result/res2.xlsx') end1 = datetime.datetime.now() print((end1-start1).seconds)
start2 = datetime.datetime.now() new_wb = openpyxl.Workbook() new_sheet = new_wb.create_sheet(title='Sheet', index=0) for row in range(1, sheet_row + 1, 1): for col in range(1, sheet_col + 1, 1): new_sheet.cell(row=row, column=col, value=sheet.cell(row=row, column=col).value ) new_wb.save('result/res3.xlsx') end2 = datetime.datetime.now() print((end2-start2).seconds)
|
比较结果
单位:s
| 类别 |
第1次 |
第2次 |
第3次 |
第4次 |
第5次 |
第6次 |
第7次 |
第8次 |
第9次 |
第10次 |
平均值 |
| 行 |
25 |
26 |
28 |
29 |
27 |
28 |
27 |
26 |
26 |
26 |
26.8 |
| 单元格 |
26 |
28 |
30 |
28 |
30 |
29 |
27 |
27 |
26 |
29 |
28.0 |
总结
总体来说,大数据量可以看出行写入的速率较快,如果是数据量在几万行,性能都差不多,而且行写入代码也比较简单。