使用openpyxl PYTHON 3.5对列中第一个空单元格的搜索方法更快

时间:2017-05-18 02:30:03

标签: python search xlsx openpyxl

我在搜索某列中的第一个空单元格时遇到问题 在40k行.xlsx文件上。随着搜索越来越远,它变得越来越慢。在搜索列上的第一个空单元格时是否有更快/即时的搜索方法?

    wb = load_workbook(filename = dest_filename,read_only=True)
    sheet_ranges1 = wb[name]
    i = 1 
    x = 0
    sam = 0
    cc = 0
    brgyst =Street+Brgy
    entrylist = [TotalNoConfig,TotalNoChannel,Rsl,Mode,RslNo,Year,IssuedDate,Carrier,CaseNo,Site,brgyst,Municipality,Province,Region,Longitude1,Longitude2,Longitude3,Latitude1,Latitude2,Latitude3,ConvertedLong,ConvertedLat,License,Cos,NoS,CallSign,PTSVC,PTSVCCS,Tx,Rx] #The values to be inputted in the entire row after searching the last empty cell in column J
    listX1 = ['A','B','C','D','E','F','G','H','I','J','K','L','M','N', 'O','P','Q','T','U','V','R','X','Y','Z','AA','AB','AM','AN','AP','FL'] #The columns in the file
    eter = 0      
    while(x != 1):
        cellS = 'J'+str(i) #until there is no empty cell
        if(sheet_ranges1[cellS].value is None): #if found empty cell, insert the values
            x=1
            book = load_workbook(filename = dest_filename)
            sheet = book[name]
            rangeof = int(len(entrylist))
            while(cc<rangeof):
                cells = listX1[cc]+str(i)
                sheet[cells]= entrylist[cc]    
                cc=cc+1                               
        else:
            x=0
        sam = sam+1   
        i=i+1
    wb.save(dest_filename)
    wb.close()

1 个答案:

答案 0 :(得分:0)

在只读模式下,每次单元格查找都会导致工作表再次被解析,因此您应始终使用ws.iter_rows()进行工作。