加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

sheet.nrows有一个错误的值 – python excel文件

发布时间:2020-12-20 13:37:30 所属栏目:Python 来源:网络整理
导读:我有一个非常奇怪的问题.我正在尝试从excel文件中读取一些数据,但属性nrows的值不正确.虽然我的文件有很多行,但它只返回2. 我在pydev eclipse工作.我不知道究竟是什么问题;一切都很好. 当我尝试通过索引手动访问其他行时,但我得到了索引错误. 我感谢任何帮助
我有一个非常奇怪的问题.我正在尝试从excel文件中读取一些数据,但属性nrows的值不正确.虽然我的文件有很多行,但它只返回2.

我在pydev eclipse工作.我不知道究竟是什么问题;一切都很好.

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

我感谢任何帮助.

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

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

解决方法

要确保您的文件没有损坏,请尝试使用其他文件;我怀疑xlrd是否有缺陷.

此外,我已经清理你的代码看起来更好一点.例如,if行> 0检查是不必要的,因为你可以在第一个位置迭代范围(1,sheet.nrows).

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)]

要么

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)
    ]

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读