首页 > 解决方案 > Excel 文件在重新保存后仅在 Python 中使用 pandas 打开

问题描述

我有一些 Excel 文件,其中的测量值来自 National Instruments 的 LabView。我正在尝试使用 Pandas 来编辑数据,但是在这些 Excel 文件上使用 read_excel 时出现错误TypeError: expected <class 'openpyxl.styles.fills.Fill'>

奇怪的是,如果我手动打开文件并单击保存,而不更改任何内容,read_excel 突然能够打开文件。不幸的是,我无法手动重新保存文件的数量。有谁知道如何解决这个问题?我已经搜索了很多这个问题,但一无所获。谢谢!

编辑:

我正在使用的代码如下。

import pandas as pd
import os

fname = 'C' # All the file I want to open start with C
fextension = '.xlsx'
directory = 'D:/TEST_Raw'

df_list =  []
for filename in os.listdir(directory):
    if fname in filename and filename.endswith(fextension):
         df1 = pd.read_excel(directory + '/' + filename, header = 0, index_col = None, engine = 'openpyxl')

此链接中有一个示例文件。如果我使用这个文件,程序将不会运行并给出错误,但如果我打开并保存 Excel,它将运行。

标签: pythonexcelpandas

解决方案


似乎源文件已损坏到无法使用标准方法打开文件的程度(例如,pd.read_excel()pd.ExcelFile()。如果有太多文件需要手动打开并保存...尝试非标准打开文件的方法.

一个想法是使用以下代码:https ://blog.adimian.com/2018/09/04/fast-xlsx-parsing-with-python/ (可能有更好的方法)。

我使用来自 blog.adimian.com 的代码测试了示例文件(请参阅页面底部的完整代码部分),它似乎可以工作。但是,缺少列名,需要手动设置。如果列名都相同,则可以为所有文件循环。

示例输出:

在此处输入图像描述


推荐阅读