python - 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,它将运行。
解决方案
似乎源文件已损坏到无法使用标准方法打开文件的程度(例如,pd.read_excel()
或pd.ExcelFile()
。如果有太多文件需要手动打开并保存...尝试非标准打开文件的方法.
一个想法是使用以下代码:https ://blog.adimian.com/2018/09/04/fast-xlsx-parsing-with-python/ (可能有更好的方法)。
我使用来自 blog.adimian.com 的代码测试了示例文件(请参阅页面底部的完整代码部分),它似乎可以工作。但是,缺少列名,需要手动设置。如果列名都相同,则可以为所有文件循环。
示例输出:
推荐阅读
- c# - 使用 Fluent API 按属性.NET Core 3.1 对列表进行分组
- javascript - JSON - 如何在 objectArray 字符串中添加对象?
- python - 最大值(平方和 mod m)
- ruby-on-rails - Rails 类给出 NoMethodError 未定义的方法“每个”
- mobx - Mobx React Reactivity with Hooks 和 Observer
- ios - React-RCCText-framework 中的 Apple Mach-O 链接器错误
- angularjs - 在Angularjs中路由到不同的页面?
- python - 在python中将参数添加到url
- python - 如何使用预期条件 new_window_is_opened 切换选项卡并使用 Selenium 和 Python 验证页面标题
- powershell - Powershell Get-ChildItem 不为文件夹返回任何内容