我有一个现有的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的新手,也许我只是做错了什么。一些帮助或提示会很好。 感谢
答案 0 :(得分:5)
您的热门代码运行方式不同,或者缺少xlrd
的{{1}}部分......
您可以使用以下内容获取xlrd.open_workbook
没有错误:
result_sheet
(我在尝试result_sheet = workbook.sheet_by_index(0)
时遇到错误)
您使用的是哪个库?只是.get_sheet
?我没有看到列的xlrd
属性(至少在我的示例中,它是类型.width
),并且无论如何都不确定您正在使用该部分代码。
您是否一直想写入第10行的行数?该数字永远不会以功能方式编入索引,而else之前的最后一行始终打印list
。
答案 1 :(得分:2)
第二种方法是正确的,除非您应该替换:
w.save('Automation_Result.xls')
使用:
workbook.save('Automation_Result.xls')
由于workbook
变量是您在代码块中打开的xlrd工作簿的引用。