Python xlrd操作Excel:指定起始与结束行循环遍历的方法
解决xlrd遍历指定行范围的问题
嘿,作为Python新手遇到这个问题很正常,我来一步步帮你搞定!
首先先指出你现有代码里的一个小逻辑偏差:你本来想遍历行,但代码里却在循环中调用了sheet.col_values(i),这其实是在读取列数据,而且i的递增逻辑也会导致你越界(比如当i超过工作表的列数时会报错)。咱们先把这个逻辑理顺,再解决指定行范围的需求。
核心思路:控制range的起止范围
xlrd里的行和列索引都是从0开始的,如果你想只读取某一段范围的行,只需要调整range()的参数即可:range(起始行索引, 结束行索引)(注意range是左闭右开的,所以结束行索引要比你实际想读到的最后一行大1)。
正确代码示例
假设你想:
- 从第2行(对应索引1)开始读取
- 只读到第10行(对应索引9,所以结束索引设为10)
代码可以这么写:
import xlrd book = xlrd.open_workbook("/Users/vhim/Documents/Cases/Orders.xlsx") sheet = book.sheet_by_name("Summary") # 定义起始行和结束行的索引 start_row = 1 # 从第2行开始(索引从0算) end_row = 10 # 读到第10行(range会取到9,也就是第10行) # 遍历指定范围的行 for row_idx in range(start_row, end_row): # 获取当前行的所有值 row_data = sheet.row_values(row_idx) print(f"第{row_idx+1}行数据:{row_data}")
额外说明
- 如果想从第一行(索引0)开始,只需要把
start_row设为0即可 - 如果想读到最后一行,
end_row可以直接用sheet.nrows,比如range(start_row, sheet.nrows) - 如果你确实需要读取列数据,那应该用
sheet.col_values(col_idx),循环的是列索引range(sheet.ncols),和行的逻辑区分开
内容的提问来源于stack exchange,提问作者Vathana Him
相关产品推荐
相关产品推荐

