由于数字格式为文本,将 Excel 文件读取到 Python 失败

wkz*_*zhu 5 excel vba xlrd pandas openpyxl

我有大量 Excel 文件,每个文件都有一列,其中数字格式为文本。Excel 给出错误“此单元格中的数字格式为文本或前面带有撇号” - 请参阅第三列,其中单元格有一个绿色三角形。

在此输入图像描述

我的目标是在 Pandas 中打开所有这些文件,而不必手动打开每个文件并将列转换为数字。但是,pd.read_excel() 失败并出现以下xlrd错误:

XLRDError: ZIP file contents not a known type of workbook
Run Code Online (Sandbox Code Playgroud)

毫不奇怪,当我xlrd直接使用时:wb = xlrd.open_workbook(filename)我得到同样的错误。

我还尝试了 openpyxl: wb = openpyxl.load_workbook(filename),它给了我这个:

KeyError: "There is no item named 'xl/_rels/workbook.xml.rels' in the archive"
Run Code Online (Sandbox Code Playgroud)

我确认,如果我手动将列转换为 Excel 中的数字并重新保存工作簿,则 pandas (xlrd) 和 openpyxl 都可以打开该文件。

有人有什么想法吗?

mur*_*310 3

阅读 Excel 时使用“转换器”。
文档

例如。:

df = pd.read_excel('yourfile.xlsx',sheetname='sheetname',header=0,converters={ "% Chg" : str })
Run Code Online (Sandbox Code Playgroud)