首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >sheet.nrows有错误的值- python文件。

sheet.nrows有错误的值- python文件。
EN

Stack Overflow用户
提问于 2013-10-01 11:55:11
回答 4查看 12.9K关注 0票数 4

我有个很奇怪的问题。我正在尝试从excel文件中读取一些数据,但是属性nrows有一个错误的值。虽然我的文件有很多行,但它只返回2。

我的工作是日食。我不知道到底是什么问题,一切看起来都很好。

当我尝试通过索引访问其他行时,但是得到了索引错误。

我很感谢你的帮助。

如果有帮助,那就是我的代码:

代码语言:javascript
运行
复制
def get_data_form_excel(address):
    wb = xlrd.open_workbook(address)
    profile_data_list = []
    for s in wb.sheets():
        for row in range(s.nrows):
            if row > 0:
                values = []
                for column in range(s.ncols):
                    values.append(str(s.cell(row, column).value))
                profile_data_list.append(values)
    print str(profile_data_list)
    return profile_data_list
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-10-01 13:29:59

在尝试了一些其他文件之后,我确信这是关于该文件的,而且我认为它与Microsoft 2003和2007的差异有关。

票数 0
EN

Stack Overflow用户

发布于 2013-10-01 12:17:57

要确保您的文件没有损坏,请尝试使用另一个文件;我怀疑xlrd是否有问题。

另外,我还清理了您的代码,使其看起来更好看一些。例如,if row > 0检查是不必要的,因为您可以首先在range(1, sheet.nrows)上迭代。

代码语言:javascript
运行
复制
def get_data_form_excel(address):
    # this returns a generator not a list; you can iterate over it as normal,
    # but if you need a list, convert the return value to one using list()
    for sheet in xlrd.open_workbook(address).sheets():
        for row in range(1, sheet.nrows):
            yield [str(sheet.cell(row, col).value) for col in range(sheet.ncols)]

代码语言:javascript
运行
复制
def get_data_form_excel(address):
    # you can make this function also use a (lazily evaluated) generator instead
    # of a list by changing the brackets to normal parentheses.
    return [
        [str(sheet.cell(row, col).value) for col in range(sheet.ncols)]
        for sheet in xlrd.open_workbook(address).sheets()
        for row in range(1, sheet.nrows)
    ]
票数 1
EN

Stack Overflow用户

发布于 2015-01-17 05:43:54

我最近也遇到了这个问题。我试图读取一个excel文件,xlrd.nrows给出的行号比实际的要小。作为Zeinab Abbasi saied,我尝试了其他文件,但它运行良好。

最后,我发现了不同之处:在失败的文件中嵌入了一个基于VB脚本的按钮,用于下载记录并将记录追加到当前的工作表中。

然后,我尝试将文件转换为.xlsx格式,但它要求我保存为另一种已启用宏的格式,例如.xlsm。这一次xlrd.nrows给出了正确的值。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19115521

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档