openpyxl 无法读取严格的 Open XML 电子表格格式:用户警告:文件包含 Sheet1 的无效规范。这将被删除

2023-11-25

我的一些用户(都使用 Mac)已将 Excel 上传到我的应用程序中,但应用程序拒绝了它,因为该文件似乎是空的。经过一些调试后,我确定该文件是以 Strict Open XML Spreedsheet 格式保存的,并且 openpyxl (2.6.0) 不会发出错误,而是向 stderr 打印警告。

要重现,请打开一个文件,添加几行并保存为 Strict Open XML Spreedsheet (*.xlsx) 格式。

import openpyxl
with open('excel_open_strict.xlsx', 'rb') as f:
    workbook = openpyxl.load_workbook(filename=f)

这将打印以下警告,但不会抛出任何异常:

UserWarning: File contains an invalid specification for Sheet1. This will be removed

此外,工作簿似乎没有工作表:

assert workbook.get_sheet_names() == []

我现在已经有 3 位 Mac 用户遇到了这个问题。 Mac 似乎有时会默认使用这种 Strict Open XML Spreedsheet 格式。如果这是正常情况,那么 openpyxl 应该能够处理它。否则,如果 openpyxl 只抛出异常那就太好了。作为解决方法,我似乎可以执行以下操作:

import openpyxl
with open('excel_open_strict.xlsx', 'rb') as f:
    workbook = openpyxl.load_workbook(filename=f)

if not workbook.get_sheet_names():
    raise Exception("The Excel was saved in an incorrect format")

我在使用 R 库 openxlsx 创建的 XLSX 文件时遇到了类似的问题。来自简单 python 程序的示例错误消息,用于打开文件并从工作表 Crops 中检索单个值:

警告(来自警告模块): 文件“C:\Python38\lib\site-packages\openpyxl\reader\workbook.py”,第 88 行 警告(消息) 用户警告:文件包含无效的作物规范。这将被删除

我的第一个非常笨拙的解决方案:

  1. 用Excel打开
  2. 将文件另存为 *.xls,这会触发有关兼容性的警告。
  3. 重新另存为*.xlsx

如果您只需要读取文件,我的第二个解决方案就有效:

  1. 施加只读限制:wb = load_workbook(filename = 'CAF_LTAR_crops_out_0.3.xlsx', read_only=True)

广泛的教训似乎是 XLSX 文件规范并未跨编程语言统一(正确?)实现。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

openpyxl 无法读取严格的 Open XML 电子表格格式:用户警告:文件包含 Sheet1 的无效规范。这将被删除 的相关文章

随机推荐

  • Bash:如何遍历目录结构并执行命令?

    我已将一个大文本文件拆分为许多较小的文件集 以进行我正在进行的性能测试 有很多这样的目录 home brianly output 02 contains 2 files myfile chunk 00 and myfile chunk 01
  • Java 无法打开/创建首选项错误

    我正在尝试播放 MIDI 音频 但每当我这样做时 它都会返回错误 May 18 2014 10 23 29 AM java util prefs WindowsPreferences
  • iOS相机离开pwa后返回黑屏

    我正在使用 html 文件输入打开相机并为我的 PWA 拍照
  • 找到最长连续数字序列的长度[重复]

    这个问题在这里已经有答案了 我有一个像这样的 numpy 数组 1 1 1 1 1 1 1 1 1 1 1 1 1 1 我想找到 1 或 1 的最长连续序列的长度 在示例中 它应该是 3 在纯Python中 gt gt gt from it
  • PyCharm导入外部库

    我在 Houdini 中使用 PyCharm 作为 python 代码的编辑器 每当我尝试导入主 Houdini 库 hou 时 我都会在 PyCharm 中收到错误标记 如果我包含代码片段 try import hou except Im
  • jQuery nth-child 在之后添加 html

    我有一个简单的无序列表 其中包含 16 个列表项 我想使用 jQuery 在每四个现有列表项之后添加一个新列表项 我该怎么做呢 代码如下 ul li some stuff li li some stuff li li some stuff
  • 在内存限制的嵌入式系统中使用boost

    我们正在使用 C 开发一个在嵌入式系统上的 Windows CE 4 中运行的应用程序 我们的限制之一是应用程序使用的所有内存都应在仅启动 我们编写了许多仅使用预先分配的内存而不是分配新内存的容器和算法 您认为在这种情况下我们可以使用 bo
  • QListView 当列表为空时显示文本

    当 QListView 中没有项目时 我想显示一些文本 例如 没有项目 我尝试重写QListView的paintEvent方法 但没有任何效果 下面的代码展示了一种简单的方法 通过重载paintEvent视图的方法 文本的绘制可能应该使用样
  • jQuery 表单验证不起作用

    我花了几个小时在这上面 但我不知道为什么这个 jquery validate 不起作用 我最后把它分解到最低限度 但它仍然不起作用 这是实际的代码
  • 如何通过GA4测量协议识别用户所在国家

    可以通过 GA4 测量协议检索地理位置吗 我必须如何配置 json 正文来发送地理位置 例如通过 HitBuilder 我有同样的问题 并在下面的票证中询问谷歌 https issuetracker google com issues 23
  • .Net 和 iPhone 之间的 AES 互操作性?

    我需要加密 iPhone 上的字符串并将其发送到 Net Web 服务进行解密 我可以在 iPhone 上使用 Net 进行加密 解密 但来自 iPhone 的加密字符串无法通过 Net 解密 我收到的错误是 填充无效且无法删除 Net代码
  • 如何使用 PHP 连接 Dropzone.js 上传的分块文件?

    我使用 Dropzone js 获取各种类型的文件 包括图像和非图像 例如 PDF 并将它们以 1mb 块的形式上传到我们的服务器 然后 我尝试使用 PHP 连接这些文件 然后将它们上传到我们公司的 FileMaker 数据库 到目前为止
  • 在 github 操作上运行 firebase 模拟器

    我正在尝试在 Github Actinos 上运行测试 但经过多次尝试后我无法做到这一点 接收 错误 firestore Firestore 模拟器已退出 因为未安装 java 您可以从以下位置安装它https openjdk java n
  • PHP sendmail 在 Ubuntu 命令行中工作,但不能在 php 文件中工作

    我在 Ubuntu 上使用 PHP 和 apache 安装了 sendmail 当我尝试以下命令行时 php r mail email protected test test 它成功发送电子邮件 但是 运行文件 test send mail
  • 在 C# 客户端中为 gRPC 设置 keepalive

    我在 C 中使用 gRPC 客户端并使用长期存在的双工流 但是 TCP 连接有时会关闭 因此我想在客户端中使用 keepalive 服务器 用 Go 编写 已经针对 keepalive 进行了正确配置 并且已经使用 Go 编写的客户端进行了
  • 在设备上运行 OCUnit 应用程序测试套件时偶尔出现错误

    运行应用程序测试 即在设备上 时 我的 OCUnit 测试套件遇到一些问题 有时 我会收到一个棘手的错误 该错误似乎是从 OCUnit 类引发的 我一直在尝试查看添加到测试套件中的文件 但无法理解它 在设置测试目标时 我遵循了 Apple
  • JTextField,使用文档过滤器过滤整数和句点

    编辑 在帖子末尾添加我们能够实现的答案 这是我在 SO 的第一篇文章 所以我希望我能问好一切 尽管发布了类似的问题 但我进行了搜索 但没有找到我的问题的答案 所以我希望这不是重新发布 这就是我得到的 一个使用的小应用程序JTextField
  • 在SendComplete中处置SmtpClient?

    当我使用SmtpClient的SendAsync发送电子邮件时 如何处理smtpclient实例正确吗 比方说 MailMessage mail new System Net Mail MailMessage Body MailBody T
  • Python 中与 pandas 进行大型合并时出现 MemoryError

    我正在用 pandas 来做outer合并一组大约 1000 2000 个 CSV 文件 每个 CSV 文件都有一个标识符列id它在所有 CSV 文件之间共享 但每个文件都有一组唯一的 3 5 列列 大约有 20 000 个独特的id每个文
  • openpyxl 无法读取严格的 Open XML 电子表格格式:用户警告:文件包含 Sheet1 的无效规范。这将被删除

    我的一些用户 都使用 Mac 已将 Excel 上传到我的应用程序中 但应用程序拒绝了它 因为该文件似乎是空的 经过一些调试后 我确定该文件是以 Strict Open XML Spreedsheet 格式保存的 并且 openpyxl 2