当前位置: 首页 > 知识库问答 >
问题:

无法用Python打开Excel文件

南门新荣
2023-03-14

作为我工作的一部分,我一直在制作python脚本,这些脚本读取各种格式(例如Excel、Csv、Txt)的输入,并将信息解析为更标准化的文件。这不是我第一次打开或使用Excel文件。

有一个特殊的文件给我带来了问题,我只是打不开它。当我尝试使用xlrd(版本0.9.3)时,它给了我以下错误:

xlrd.open_workbook('sample.xls')

XLRDERROR:不支持的格式,或损坏的文件:BOF不是工作簿/工作表:OP=0x0009 vers=0x0002 strm=0x000a build=0年=0->BIFF21

我试图自己调查此事,在StackOverflow中找到了几个答案,但无论如何都打不开。我发现的这个特殊答案可能是问题所在(第二种解释),但它不包括解决方案:https://stackoverflow.com/a/16518707/4345659

一个可以将文件转换为CSV/TXT的工具也可以解决这个问题。

我已经试过了:

  • XLRD
  • OpenPyXL
  • xlsx2csv(shell工具)

以下是一个示例文件:https://ufile.io/r4m6j

顺便说一句,我可以用LibreOffice Calc和MS Excel打开它,这样我最终就可以用这种方式将它更改为csv。问题是,我需要用一个python脚本来完成这一切。

提前感谢!

共有1个答案

毋承基
2023-03-14

好像是MS的问题。xls文件很奇怪,也许您应该联系xlrd支持人员。

但我有一个疯狂的变通方法给你:XLS2ODS。它对我来说很有效,尽管xls2csv不是(原文如此!)。

因此,首先安装catdoc:

$sudo apt-get install catdoc
import subprocess

from pyexcel_ods import get_data

file_basename = 'sample'

returncode = subprocess.call(['xls2ods', '{}.xls'.format(file_basename)])
if returnecode > 0:
    # consider to use subprocess.Popen if you need more control on stderr
    exit(returncode)

data = get_data('{}.ods'.format(file_basename))
print(data)
OrderedDict([(u'sample',
              [[u'labo',
                u'codfarm',
                u'farmacia',
                u'direccion',
                u'localidad',
                u'nom_medico',
                u'matricula',
                u'troquel',
                u'producto',
                u'cant_total']])])
 类似资料:
  • 问题内容: 如何打开一个Excel文件以便在Python中读取? 例如,我已经使用read命令打开了文本文件。如何为Excel文件执行此操作? 问题答案: 编辑: 在较新版本的pandas中,您可以将工作表名称作为参数传递。 检查文档以获取有关如何通过的示例sheet_name:https : //pandas.pydata.org/pandas-docs/stable/generation/pa

  • 问题内容: 不知道我做错了什么,我正在跟随一个有关如何使用Python和PyGame制作游戏的教程,但出现错误: 我的代码如下: 完整的错误消息是: 问题答案: 使用相对路径(这样做总是更好): 这样,无论您将包含文件的文件夹移动到何处,都可以访问其子目录(以及因此包含的所有子目录),而无需修改代码。 最终代码: 对所有其他文件使用此访问方法,将避免很多问题。

  • 我在apache poi上遇到了一个奇怪的问题 我正在使用apache POI3.17创建一个Excel文件。如果我设置了字体颜色,那么生成的excel文件不是用最新的MS Office excel viewer打开的,而是用Libre Office和Mac OS Numbers应用程序打开的。 但是如果我注释掉'urlFont.setColor((short)color.black.getrgb

  • 问题内容: 我编写了一个小模块,该模块首先在目录中找到所有文件,然后合并它们。但是,从目录打开这些文件时遇到问题。我确保我的文件和目录名称正确,并且文件实际上在目录中。 下面是代码。 下面是错误。 问题答案: listdir仅返回文件名:https ://docs.python.org/2/library/os.html#os.listdir您需要完整路径才能打开文件。在打开文件之前,还要检查以确

  • 我正试图用reactJS下载一个xlsx文件,但当我在下载后试图打开我的文件时,我收到了这条消息: “Excel无法打开文件‘file.xlsx’,因为文件格式或文件扩展名无效。请验证文件是否已损坏,以及文件扩展名是否与文件格式匹配。” 这是前端代码: 为什么我得到这个错误?请谁来帮帮我,我被困在这个3周 [编辑1] 我尝试下载的文件是在后端构建的,基本上我获取数据库上的值并使用Apache po

  • 问题内容: 尝试使用ApachePOI打开Excel时,我得到 我检查了。没有创建这样的文件夹。我正在使用Apache POI 3.6版。 有什么帮助吗?类似的代码在其他工作区中运行良好。在这里不知所措。 码: 问题答案: 您为什么要制作一个非常好的文件,将其包装在中,然后要求POI必须为您缓冲整个文件,以便可以进行随机访问?如果直接将文件直接传递给POI,生活会好很多,因此可以根据需要跳过它!