openpyxl.utils.exceptions.InvalidFileException: openpyxl does not support the old .xls file format, please use xlrd to read this file, or convert it to the more recent .xlsx file format.
时间: 2024-03-30 21:37:04 浏览: 17
这个错误是因为 openpyxl 库不支持旧的 .xls 文件格式,只支持较新的 .xlsx 文件格式。解决方法是使用 xlrd 库读取 .xls 文件,或将文件转换为 .xlsx 文件格式。
如果你想使用 xlrd 库来读取 .xls 文件,可以按照以下方式修改你的代码:
```python
import xlrd
# 打开 xls 文件
workbook = xlrd.open_workbook('example.xls')
# 选择第一个工作表
worksheet = workbook.sheet_by_index(0)
# 创建一个空列表,用于存储每行数据
rows_data = []
# 遍历每一行
for row_index in range(worksheet.nrows):
# 创建一个空列表,用于存储当前行的数据
row_data = []
# 遍历当前行的每个单元格
for col_index in range(worksheet.ncols):
# 检查单元格是否包含合并的单元格
if worksheet.cell(row_index, col_index).ctype == 0:
# ctype == 0 表示该单元格为空单元格
value = ''
elif worksheet.cell(row_index, col_index).ctype == 1:
# ctype == 1 表示该单元格为文本类型
value = worksheet.cell(row_index, col_index).value
elif worksheet.cell(row_index, col_index).ctype == 2:
# ctype == 2 表示该单元格为数值类型
value = str(worksheet.cell(row_index, col_index).value)
elif worksheet.cell(row_index, col_index).ctype == 3:
# ctype == 3 表示该单元格为日期类型
value = xlrd.xldate.xldate_as_datetime(worksheet.cell(row_index, col_index).value, workbook.datemode).strftime('%Y-%m-%d %H:%M:%S')
elif worksheet.cell(row_index, col_index).ctype == 4:
# ctype == 4 表示该单元格为布尔类型
value = str(worksheet.cell(row_index, col_index).value)
elif worksheet.cell(row_index, col_index).ctype == 5:
# ctype == 5 表示该单元格为错误类型
value = xlrd.error_text_from_code.get(worksheet.cell(row_index, col_index).value, '')
else:
value = ''
row_data.append(value)
# 将当前行的数据添加到总列表中
rows_data.append(row_data)
# 打印每行数据
for row_data in rows_data:
print(row_data)
```
如果你想将文件转换为 .xlsx 格式,可以使用 Microsoft Excel、LibreOffice Calc 或在线转换工具等软件进行转换。然后,你就可以使用 openpyxl 库来读取转换后的 .xlsx 文件了。