Python -xlrd库 - 断言0< = colx< X12_MAX_COLS-的AssertionError

时间:2017-11-15 08:14:16

标签: python xlrd

我使用xlrd,xlwt,openpyxl进行excel文件操作 我有下面的方法,它在文件夹中超过30个文件并更改文件中每行的特定列(某些文件有5,15,17等行)

上面的方法可以反复运行,每个文件都会相应更新。 但, 一旦我编辑了文件(任何一个文件,并且其中一个单元格中的编辑变化甚至可能很小(例如从A变为a),则文件不能被xlrd读取,而且我是获得以下例外。 知道为什么吗?

  

例外:

     

追踪(最近一次呼叫最后一次):

     

文件" /home/ohad/automationProj/automation-linux/0_master_code_prep.py" ;,第154行,

     

sanity_run_all_change()

     

文件" /home/ohad/automationProj/automation-linux/0_master_code_prep.py",第68行,在sanity_run_all_change中

     

ExcelWorkBook1 = open_workbook(config.STDFOLDER +'%s.xlsx'%suitename,on_demand = True)

     

文件" /usr/local/lib/python2.7/dist-packages/xlrd/ init .py",第422行,在open_workbook中

     

ragged_rows = ragged_rows,

     

文件" /usr/local/lib/python2.7/dist-packages/xlrd/xlsx.py" ;,第794行,在open_workbook_2007_xml中

     

x12sheet.process_stream(zflo,heading)

     

文件" /usr/local/lib/python2.7/dist-packages/xlrd/xlsx.py",第534行,在own_process_stream

     

self.do_dimension(ELEM)

     

文件" /usr/local/lib/python2.7/dist-packages/xlrd/xlsx.py",第568行,在do_dimension中

     

rowx,colx = cell_name_to_rowx_colx(last_cell_ref)

     

文件" /usr/local/lib/python2.7/dist-packages/xlrd/xlsx.py",第91行,在cell_name_to_rowx_colx中

     

断言0< = colx< X12_MAX_COLS

     

的AssertionError

代码:

def fullregression_run_all_change():

# FUll regression suites go over and change testes to Run

print "Go over Sanity suites and Change all Test to Run position"
ExcelWorkBook1 = open_workbook(config.UI_Suites_Location + 'STD_SUITES.xlsx', on_demand=True)
First_Sheet1 = ExcelWorkBook1.sheet_by_index(0)
Suite_List = []
for suitename in First_Sheet1._cell_values:
    if suitename[1] == "Nightly Full Regression Run":
        continue
    else:
        Suite_List.append(str(suitename[1]))
print "Full regression suites count is %s"%Suite_List.__len__()



for suitename in Suite_List:
    ExcelWorkBook1 = open_workbook(config.STDFOLDER + '%s.xlsx'%suitename, on_demand=True)
    First_Sheet1 = ExcelWorkBook1.sheet_by_index(0)
    numberofrows=First_Sheet1.nrows
    Startupdaterow=4
    dest = config.STDFOLDER + suitename + ".xlsx"
    wb = load_workbook(filename=dest)
    ws = wb.get_active_sheet()
    while Startupdaterow<=numberofrows:

        ws.cell(row=Startupdaterow,column=8).value = 'RUN'
        Startupdaterow +=1

    wb.save(dest)

1 个答案:

答案 0 :(得分:0)

在我的情况下,错误是

assert 1 <= nr <= self.utter_max_rows AssertionError

在Python的.xls文件中。

访问此链接可查看我的答案,并在sheet.py中更改MAX-COLUMNS

AssertionError with pandas when reading excel

我认为您的问题将得到解决...:)