首页 > 解决方案 > 如何使用 Pandas.read_excel、openpyxl 读取 xlsx 文件(无需手动重新保存文件)?

问题描述

我正在使用 openpyxl 读取 excel 'xlsx' 文件。它适用于大多数文件,但有些文件失败。

df = pd.read_excel('file.xlsx', engine='openpyxl') 

有问题的文件,我们称之为它file1,无法正确读取,这是它返回的内容:

df = pd.read_excel(file1.xlsx, engine='openpyxl') 

# OUTPUT
# Empty DataFrame
# Columns: [column 1]   <- It does read the first column
# Index: []

当我用 excel 手动打开所述文件并简单地重新保存它(相同的名称,相同的所有内容)时,它可以工作:

df = pd.read_excel(resaved_file1.xlsx, engine='openpyxl') 

# OUTPUT
# column 1     ...                   column 70
# 0     12     ...                      hidden
# 1     13     ...                      hidden
# 2     15     ...                      hidden
# 3    111     ...                   something
# 4    213     ...                private_data

# [5 rows x 70 columns]

我遇到的问题是它应该是一个自动化过程,所以我将无法打开数千个文件并手动修改它们。

我不能使用过时的 xlrd=1.2.0 因为它不安全,尤其是出于我的目的。xlrd 开发人员实际上是在喊不要使用旧版本,因为它已经被破坏了。对于那些不知道的人,xlrd=2.xx 不再支持 xlsx 文件。

另外,我很抱歉,因为它非常敏感,所以我不能向您展示实际数据。

一种可能性:我们可以使用命令行来运行 excel,打开所有文件并重新保存所有文件。我在这个过程中遇到的问题是我无法区分“损坏的”文件和好的文件,所以我必须将此过程应用于所有内容,从而减慢整个系统的速度。如果这是唯一的解决方案,我会采取它,作为最后的手段。

TL;DR 微软在其封闭源代码软件中获得了很多乐趣,但使用起来并不安全。

版本:

标签: pythonpandasopenpyxlxlsx

解决方案


推荐阅读