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

时间:2018-01-08 19:30:14

标签: excel excel-vba pandas openpyxl xlrd vba

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

enter image description here

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

XLRDError: ZIP file contents not a known type of workbook

当我直接使用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"

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

有没有人有任何想法?

1 个答案:

答案 0 :(得分:2)

阅读excel时使用“转换器” Docs

例如:

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