Python:打开现有的Excel文件并计算工作表中的行数

jul*_*dry 5 python excel rows count xlrd

我有一个现有的Excel文件.我想加载那个并获取此工作表中的行数,以便稍后写入此工作表的下一行并再次保存.我收到以下错误消息:

AttributeError: 'Worksheet' object has no attribute 'nrows'
Run Code Online (Sandbox Code Playgroud)

但显然这种方法存在,因为每个人都在用它来计算.我写的代码看起来像这样:

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:
Run Code Online (Sandbox Code Playgroud)

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

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:
Run Code Online (Sandbox Code Playgroud)

我得到这个错误:

raise XLRDError("Can't load sheets after releasing resources.")
xlrd.biffh.XLRDError: Can't load sheets after releasing resources.
Run Code Online (Sandbox Code Playgroud)

我仍然是python的新手,也许我只是做错了什么.一些帮助或提示会很好.谢谢

ber*_*roe 5

您的顶级代码要么运行不同,要么缺少xlrd部分xlrd.open_workbook...

您可以使用以下命令获得result_sheet没有该错误:

result_sheet = workbook.sheet_by_index(0)
Run Code Online (Sandbox Code Playgroud)

(我试错了.get_sheet)

你在用什么图书馆?只是xlrd?我没有看到.width列的属性(至少在我的示例中,它是类型list),并且无论如何都不确定您正在使用该部分代码.

你总是想写下第10行的行数吗?这个数字永远不会以函数方式编入索引,而else之前的最后一行总是打印出来11.


ale*_*cxe 2

第二种方法是正确的,只是您应该替换:

w.save('Automation_Result.xls')
Run Code Online (Sandbox Code Playgroud)

和:

workbook.save('Automation_Result.xls')
Run Code Online (Sandbox Code Playgroud)

由于该workbook变量是对您在代码块中打开的 xlrd 工作簿的引用。