Python:Pandas read_excel 无法打开 .xls 文件,ValueError:文件不是可识别的 excel 文件

时间:2021-06-17 11:47:03

标签: python excel pandas openpyxl xlrd

问题:

当我尝试使用 product.xls(从 https://www.fda.gov/drugs/drug-approvals-and-databases/national-drug-code-directory 下载的“NDC 数据库文件 - Excel 版本(zip 格式)”)打开 pd.read_excel 时出现错误

df_product = pd.read_excel("tmp/Presentaciones.xls")

Traceback (most recent call last):
  File "<input>", line 1, in <module>
  File "/usr/local/lib/python3.9/site-packages/pandas/util/_decorators.py", line 299, in wrapper
    return func(*args, **kwargs)
  File "/usr/local/lib/python3.9/site-packages/pandas/io/excel/_base.py", line 336, in read_excel
    io = ExcelFile(io, storage_options=storage_options, engine=engine)
  File "/usr/local/lib/python3.9/site-packages/pandas/io/excel/_base.py", line 1071, in __init__
    ext = inspect_excel_format(
  File "/usr/local/lib/python3.9/site-packages/pandas/io/excel/_base.py", line 965, in inspect_excel_format
    raise ValueError("File is not a recognized excel file")
ValueError: File is not a recognized excel file

我的环境:

pandas version: 1.2.4
xlrd version: 2.0.1
openpyxl version: 3.0.7

提前致谢。

1 个答案:

答案 0 :(得分:0)

我遇到了类似的问题,我必须读取文件夹中的一堆 .xls 文件并将其合并为一个数据帧。结果发现错误是因为 .txt 文件被强制保存为 .xls 文件。这也在尝试打开文件时在 excel 中产生了一个错误,它说

<块引用>

"'filename.xls' 的文件格式和扩展名不匹配。文件 可能已损坏或不安全。除非你相信它的来源,否则不要打开 它。还是要打开它?”

执行以下操作为我解决了:

import glob 
import os 
import pandas as pd

path = r'C:\tmp' ## use your path

all_files = glob.glob(os.path.join(path, "*.xls"))
all_files1 = [f.replace(r".xls",".txt") for f in all_files]  ## replacing the file extension with .txt
df_from_each_file = (pd.read_csv(f, delimiter = "\t") for f in all_files) ## reading the .txt files using csv reader
df1   = pd.concat(df_from_each_file, ignore_index=True)  ## concatenating all the individual files

您也可以通过实验尝试检查原始文件格式是否为 .xlsx、.xlsm、.xlsb 等,并在更改为如上所示的相应文件扩展名后在 python 上使用相应的文件阅读器。