pyton读取xlsx表格数据报错:xlrd.biffh.XLRDError: Excel xlsx file; not supported

在用python的xlrd库读取xlsx文件时,出现些小问题,搜到了一些解决方法,做了个小笔记,方便以后查找,与大家分享
✨✨专栏:《每天干掉一个小bug》


文章目录

  • xlrd.biffh.XLRDError: Excel xlsx file; not supported
  • AttributeError: 'ElementTree' object has no attribute 'getiterator'



# year              score   amount  total
# 2020	普通高考文科	648	    16	    16	湖北
# 2020	普通高考文科	647 	3	    19	湖北
# 2020	普通高考文科	646	    3	    22	湖北
# 2020	普通高考文科	645	    6	    28	湖北
# 2020	普通高考文科	644	    4	    32	湖北
import xlrd


def excel_read():
    """定义了一个读取excel的函数"""
    wb = xlrd.open_workbook('scale_hb_2016_2020.xlsx')   # 打开Excel文件
    sheet = wb.sheet_by_name('Sheet1')  # 通过excel表格名称(rank)获取工作表
    # year = []  # 创建空list,用来保存一列
    # types = []
    score = []
    amount = []
    total = []
    # area = []
    for i in range(sheet.nrows):  # 循环读取表格内容,每次读取一行数据
        cells = sheet.row_values(i)  # 每行数据赋值给cells
        score_ = cells[2]     # 循环读取cell没一列的数据,cell[0]就是包含了每一行的人物名称
        amount_ = cells[3]   # 获取amount列数据
        total_ = cells[4]     
        # 将每一列的数据依次保存在score, amount, total里。
        score.append(score_)  
        amount.append(amount_)
        total.append(total_)
    return score, amount, total    # 返回三列的数据


A = excel_read()    # 这里调用了excel_read的函数,此A就包含了score, amount, total三列数据
print(A[0])     
print(A[1])     
print(A[2])     

xlrd.biffh.XLRDError: Excel xlsx file; not supported

  • 报错提示

pyton读取xlsx表格数据报错:xlrd.biffh.XLRDError: Excel xlsx file; not supported_第1张图片

  • 分析原因

安装的 xrld 的版本过高,不支持 xlsx 格式的Excel文件
pyton读取xlsx表格数据报错:xlrd.biffh.XLRDError: Excel xlsx file; not supported_第2张图片

  • 解决方式
  1. 降低 xlrd 的版本:

pyton读取xlsx表格数据报错:xlrd.biffh.XLRDError: Excel xlsx file; not supported_第3张图片

  1. 或者改用 xls 格式的Excel文件

AttributeError: ‘ElementTree’ object has no attribute ‘getiterator’

  • 报错提示

pyton读取xlsx表格数据报错:xlrd.biffh.XLRDError: Excel xlsx file; not supported_第4张图片

  • 报错原因

书接上回,在解决高版本打不开 .xlsx 文件时,采用降低 xlrd 版本后,在python3.9之后,删除了 getiterator 方法,老版本的 xlrd 库调用 getiterator 方法时会报错:AttributeError: ‘ElementTree’ object has no attribute ‘getiterator’

  • 解决措施

找到并打开 xlrd 库目录下的 xlsx.py文件,把里面两个地方的 getiterator() 该成 iter()

pyton读取xlsx表格数据报错:xlrd.biffh.XLRDError: Excel xlsx file; not supported_第5张图片

pyton读取xlsx表格数据报错:xlrd.biffh.XLRDError: Excel xlsx file; not supported_第6张图片

再次运行程序:
pyton读取xlsx表格数据报错:xlrd.biffh.XLRDError: Excel xlsx file; not supported_第7张图片

接着冲!!!
pyton读取xlsx表格数据报错:xlrd.biffh.XLRDError: Excel xlsx file; not supported_第8张图片

你可能感兴趣的:(每天干掉一个小bug,python,机器学习,开发语言)