Python:使用xlrd库从excel电子表格读取数据时,我得到的行数不正确

Python:使用xlrd库从excel电子表格读取数据时,我得到的行数不正确,python,Python,我正在使用xlrd库阅读工作簿。我使用以下代码读取包含单词的列和行,并将其放入字典: import xlrd EXCEL_FILE = "Hangman_words.xlsx" def main(): """Main application entry point.""" # To open Workbook wb = xlrd.open_workbook(EXCEL_FILE)

我正在使用xlrd库阅读工作簿。我使用以下代码读取包含单词的列和行,并将其放入字典:

import xlrd

EXCEL_FILE = "Hangman_words.xlsx"

def main():
    """Main application entry point."""
    # To open Workbook 
    wb = xlrd.open_workbook(EXCEL_FILE) 
    sheet = wb.sheet_by_index(0) 
    
    word_dict = {}
    
    for i in range(sheet.ncols):
        try:
            #print(sheet.cell_value(0, i))
            category_name = sheet.cell_value(0, i)
            if not category_name:
                break
            word_dict[category_name] = []
            for j in range(sheet.nrows):
                try:
                    #print(sheet.cell_value(j+1, i))
                    word = sheet.cell_value(j+1, i)
                    if not word:
                        break
                    word_dict[category_name].append(word)
                except:
                    break
        except:
            break

    print(word_dict)

if __name__ == "__main__":
    main()
在我的excel文件中,第1列一直到第51行,第2列一直到第53行,第3列一直到第38行。但是,在我的python代码中,range(sheet.ncols)设置为(0,3),range(sheet.nrows)设置为(0,53),并且该行号对于每一列都不正确,因为如前所述,它是不同的

我的代码还为第2列抛出了一个异常。因此,我必须设置一些异常和if条件,以确保在出现任何错误或存在空白单元格时代码将脱离循环

因为,我对使用这个xlrd库非常陌生,我想知道是否有一种方法可以为我可以迭代的每一列获得正确的行数?或者如果有一个更好的xl库,它可以比我正在使用的当前库更好。提前感谢。

“范围(sheet.ncols)设置为(0,3),范围(sheet.nrows)设置为(0,53)” --对。xlrd只会将数据范围从1stRow1stCol限制到53rdRow3rdCol

麻烦的是在列的底部有空值。你必须分析它,阻止它进一步阅读

“我的代码也会引发第2列的异常”

当j到达范围(53)的最后一个时,j=52 表.单元格_值(53,0) 当然,它违反了xlrd中的数据范围,因为nrow仅限于 0,1,...,52 更正如下:

            for j in range(1, sheet.nrows):
                try:
                    #print(sheet.cell_value(j, i))
                    word = sheet.cell_value(j, i)

这回答了你的问题吗?
            for j in range(1, sheet.nrows):
                try:
                    #print(sheet.cell_value(j, i))
                    word = sheet.cell_value(j, i)