Python:打开现有的Excel文件并在表格中统计行数

我有一个现有的Excel文件。 我想加载一个,并得到这张表中的行数,稍后写在这张表的下一行并再次保存。 我收到以下错误消息:

AttributeError: 'Worksheet' object has no attribute 'nrows' 

但显然这种方法存在,因为每个人都在用它来计数。 我写的代码如下所示:

 def write_xls_result(test_case): testCase = re.sub("/", "_", test_case) automation_report = os.path.expanduser("~/Library/pathtofile/UITests.xctest/Contents/Resources/Automation_Result.xls") if os.path.isfile(automation_report): w = copy(open_workbook(automation_report)) copy_sheet = w.get_sheet(0) col_width = 256 * 30 try: for i in itertools.count(): copy_sheet.col(i).width = col_width except ValueError: pass for row in range(copy_sheet.nrows): print '{} {}'.format("Row COUNT",copy_sheet.nrows) row_index = 10 copy_sheet.write(row_index,0, testCase) w.save('Automation_Result.xls') row_index += 1 print '{} {}'.format("RRRROOOOWWWWW",row_index) else: 

所以我尝试了另一种方法:

 def write_xls_result(test_case): testCase = re.sub("/", "_", test_case) automation_report = os.path.expanduser("~/Library/pathtofile/UITests.xctest/Contents/Resources/Automation_Result.xls") if os.path.isfile(automation_report): workbook = xlrd.open_workbook(automation_report) result_sheet = workbook.get_sheet(0) rowcount = result_sheet.nrows print '{} {}'.format("Row COUNT",rowcount) col_width = 256 * 30 try: for i in itertools.count(): result_sheet.col(i).width = col_width except ValueError: pass row_index = 10 result_sheet.write(row_index,0, testCase) workbook.save('Automation_Result.xls') row_index += 1 print '{} {}'.format("RRRROOOOWWWWW",row_index) else: 

我得到这个错误:

 raise XLRDError("Can't load sheets after releasing resources.") xlrd.biffh.XLRDError: Can't load sheets after releasing resources. 

我还是新来的python,也许我只是做错了什么。 一些帮助或提示将是很好的。 谢谢

您的顶级代码要么运行不同,要么缺lessxlrd部分…

你可以通过使用下面的命令来得到没有这个错误的result_sheet

 result_sheet = workbook.sheet_by_index(0) 

(我得到一个错误尝试.get_sheet

你在用什么库? 只是xlrd ? 我没有看到一列的.width属性(至less在我的例子中,它是typeslist ),不知道你是用这部分代码做什么。

你是否总是想把第10行的行数写出来? 这个数字永远不会以function的方式获得索引,而else之前的最后一行总是打印11

第二种方法是正确的,除了你应该replace:

 w.save('Automation_Result.xls') 

有:

 workbook.save('Automation_Result.xls') 

由于workbookvariables是您在代码块中打开的xlrd工作簿的引用。