ubuntu vps wordpress/网站内部优化有哪些内容
不同的库操作Excel速度测试,通过读取大文件的方式进行对比测试:
openxl_time wirte
打开文件: 17.1607027053833
按照单元格遍历程序结束: 17.16170334815979
打开文件很慢,但是遍历单元格很快
openxl_time read
打开文件: 5.658100128173828
按照单元格遍历程序结束: 13.714594841003418
只读方式打开,速度快,但是单元格遍历很慢
xlrd
打开文件: 3.691128969192505
按照单元格遍历程序结束: 3.691128969192505
打开和遍历单元格速度都很快,单元格遍历的速度超快
xlwings
打开文件: 15.296140670776367
按照单元格遍历程序结束: 16.813084602355957
打开文件慢,需要打开Excel程序,但是遍历速度快
xlwings 文件已经打开,其打开文件慢,如果已经打开文件,速度很快
打开文件: 0.1026921272277832
按照单元格遍历程序结束: 1.0002880096435547
如果文件是打开的,速度超快
import xlrd
from openpyxl import load_workbook
import time
import xlwings as xw1file_name = ""
sheet_name =""def xlrd_time():start = time.time()print("xlrd")wb=xlrd.open_workbook(file_name)print("打开文件:", time.time() - start)sheet=wb.sheet_by_name(sheet_name)for row in range(2, 20):i=1for i in range(1, 10):value = sheet.cell(row, i).value# print(value)i = i + 1print("按照单元格遍历程序结束:",time.time()-start)def openxl_time():start = time.time()print("openxl_time")wb = load_workbook(file_name, read_only=True)print("打开文件:",time.time()-start)sheet= wb[sheet_name]for row in range(2, 20):i=1for i in range(1, 10):value = sheet.cell(row, i).value # 单元格读取速度很慢。read_only=True 非只读打开打开文件慢,但是遍历很快# print(value)i = i + 1print("按照单元格遍历程序结束:",time.time()-start)def openxl_time_w():start = time.time()print("openxl_time wirte")wb = load_workbook(file_name)print("打开文件:",time.time()-start)sheet= wb[sheet_name]for row in range(2, 20):i=1for i in range(1, 10):value = sheet.cell(row, i).value # 单元格读取速度很慢。read_only=True 非只读打开打开文件慢,但是遍历很快# print(value)i = i + 1print("按照单元格遍历程序结束:",time.time()-start)def xlwings_time():start = time.time()print("xlwings")wb=xw1.Book( file_name)print("打开文件:", time.time() - start)sheet=wb.sheets(sheet_name)for row in range(2, 20):i=1for i in range(1, 10):value = sheet.range(row, i).value # 文件如果是打开的,速度飞快# print(value)i = i + 1print("按照单元格遍历程序结束:",time.time()-start)openxl_time_w()
openxl_time()
xlrd_time()
xlwings_time()
逐个单元格读取数据的方式,建议采用xlrd读取数据。
如果基于模版生成Excel,建议采用openxl
如果是打开文件进行处理,可以借助VBA操作,建议采用xlwings