我有一个.xlsx文件,有1841行。每排有30个列。使用openpyxl将整个信息保存到列表中。在
def get_value(i,ws,article_row):
value=ws.cell(row=article_row,column=i).value
i+=1
return value,i
def geneList(f):
wb = load_workbook(filename=f, read_only=True)
ws = wb.worksheets[0]
max_row = ws.max_row
info_list=[]
for ar_row in range(2,max_row+1):
i=3#start from the 3rd column: sourceid
sourceID,i=get_value(i,ws,ar_row)
pv,i=get_value(i,ws,ar_row)
pubtype,i=get_value(i,ws,ar_row)
......
item_dict={'sourceID':sourceID,'pv':pv,'pubtype':pubtype,
...}
info_list.append(item_dict)
但阅读所有信息需要20分钟左右。我不知道怎么解决这个问题?这是因为解析信息的速度很慢。将.xlsx转换为.csv?或者用其他工具阅读?在
你可以使用xlwings。它非常快速和容易使用。在
这个问题与
cell
方法在只读模式下的广泛使用有关。在只读模式下,openpyxl按需读取相关工作表,以降低内存使用率,但这意味着每次查找时都会再次解析XML。您重写的代码强制openpyxl为每一行中的每个单元格重新分析文件,这显然很慢。这也是完全没有必要的,因为有一个API用于基于行的访问。只需将ws.iter_rows()
与相关分隔符一起使用,即可获得所需的单元格。在相关问题 更多 >
编程相关推荐