python - 如何使用 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 微软在其封闭源代码软件中获得了很多乐趣,但使用起来并不安全。
版本:
- 蟒蛇 3.8.3
- xlrd 2.1.0
- openpyxl 3.0.4
解决方案
推荐阅读
- python - 清除浏览器历史记录后,在 django 中删除数据库支持的会话中的会话数据
- css - 一个圆圈的锯齿形边界?
- java - 如何在 Java Netbeans 中用电线连接两个组件
- php - 为什么具有 distinct 和 group by 的查询不返回结果?
- python - 获取所有匹配项,包括重叠
- add-in - 使用C#在VISO中格式化文本内的形状
- windows - 如何使用 gnuwin32 Makefile 执行 powershell/cmd 命令?
- graph - 图分区后建立新的邻接矩阵
- angular - 如何使用 Angular 过滤表中的行?
- android - RecyclerviewAdapter代码在android中不起作用