退出while循环,当它到达python的excel文件的末尾

问题描述:

您好我是python的新手,并且正在尝试一些代码以使我的工作更轻松。因此,这里是我的代码退出while循环,当它到达python的excel文件的末尾

counter = 0 
while True: 

    row_values = worksheet.row_slice(counter+1,start_colx=0, end_colx=4) 

    row['Dealer'] = int(row_values[0].value) 
    row['Name'] = str(row_values[1].value) 
    row['City'] = str(row_values[2].value) 

    counter += 1 

    if not row['Dealer']: 
     break 

我试图打破while循环,当行[“经销商”]为空,也就是达到excel文件的末尾时。但它似乎不能以某种方式工作。它继续给出IndexError:列表索引超出范围。一些帮助将不胜感激。由于

您好我编辑我的代码下面的以下内容:

counter = 0 
    while True: 
    row_values = worksheet.row_slice(counter+1,start_colx=0, end_colx=30) 
    row['gg'] = worksheet.cell_value(1+counter,1).strip() 
    if not row['gg']: 
     break 


    row['Dealer'] = int(row_values[0].value) 
    row['Name'] = str(row_values[1].value) 
    row['City'] = str(row_values[2].value) 
    counter += 1 

但错误还是一样!帮助将不胜感激。

+0

[编辑]你的问题,并显示哪些Python模块使用的是何'row'初始化? – stovfl

+0

我使用的是xlrd模块 – Shubzumt

Question: break the while loop when row['Dealer'] is null, that is when the end of excel file is reached.

可以使用worksheet.nrows,例如获取行的末尾:

import xlrd 
book = xlrd.open_workbook("myfile.xls") 
sh = book.sheet_by_index(0) 
print("Sheetname:{0} Rows:{1} Columns:{2}". 
    format(sh.name, sh.nrows, sh.ncols)) 

# Iterate all Rows 
row_value = {} 
for rx in range(sh.nrows): 
    print(sh.row(rx)) 
    row_value['Dealer'] = sh.cell_value(rowx=rx, colx=0) 
    row_value['Name'] = sh.cell_value(rowx=rx, colx=1) 
    row_value['City'] = sh.cell_value(rowx=rx, colx=2) 

    # Break before end of Rows at first Empty Cell 
    if row_value['Dealer'] == '': 
     break 
+0

感谢队友的解决方案,但我仍然想知道为什么我无法打破while循环! – Shubzumt

+0

@Shubzumt:也许单元不是空的,检查空白或不可打印的字符。 'sh.nrows'之后的单元格没有考虑到! – stovfl

pandas库是使用Excel的绝佳选择。

用pip安装熊猫。

pip install pandas 

安装xlrd(使用Excel文件时需要)。

​​

从那里你可以阅读Excel电子表格与以下内容。

import pandas as pd 
df = pd.read_excel('your_excel.xlsx') 

df现在是一个DataFrame对象。您可以使用可用的熊猫工具分析和转换数据。 read_excel()的完整文档。

+0

其实你不需要专门安装xlrd。这与熊猫点... ... – anki