python openpyxl read excel too

2024-05-15 00:56:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个.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?或者用其他工具阅读?在


Tags: 信息getwsvaluedefarticlecolumnxlsx
2条回答

你可以使用xlwings。它非常快速和容易使用。在

这个问题与cell方法在只读模式下的广泛使用有关。在只读模式下,openpyxl按需读取相关工作表,以降低内存使用率,但这意味着每次查找时都会再次解析XML。您重写的代码强制openpyxl为每一行中的每个单元格重新分析文件,这显然很慢。这也是完全没有必要的,因为有一个API用于基于行的访问。只需将ws.iter_rows()与相关分隔符一起使用,即可获得所需的单元格。在

相关问题 更多 >

    热门问题