如何在Python中加载最初具有.xls文件扩展名的xlsx?
我正在使用xlrd来处理.xls文件,而使用openpyxl来处理.xlsx文件,这很有效.
然后我交给了表面上是.xls文件的东西,所以我尝试xlrd.open_workbook(),得到: XLRDError: Unsupported format,or corrupt file: Expected BOF record; found '<?xml ve' 我看一下this的问题,我猜测我的文件虽然以扩展名.xls结尾,但实际上必须是.xlsx.事实上,我可以在文本编辑器中查看它: <?xml version="1.0" encoding="UTF-8"?> <Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet" xmlns:html="http://www.w3.org/TR/REC-html40"> : : : (出于隐私原因,我无法发布整个文件,但我们的分析可能不需要). 所以我猜测,如果我只是将它复制(cp)到.xlsx,我应该可以用openpyxl.load_workbook()打开它,但我得到: BadZipfile: File is not a zip file 如果它实际上是一个xls(不太可能)但是不能用xlrd打开,并且如果它是一个xlsx,但是无法用openpyxl打开,即使我将它转换为.xlsx,该怎么办? 注意:如果我在Excel中打开.xls,将其保存为.xlsx,并使用openpyxl重试,它确实可以正常加载,但这个手动步骤并不是我执行程序时的奢侈. 解决方法
有一件事是清楚的:您尝试打开的文件格式与其扩展程序建议的格式不同.
如您所知,Excel文件格式包括(但不限于)xls和xlsx. > Excel 2003格式(xls)是二进制格式.这意味着如果您使用文本编辑器打开xls文件,您将看到乱码. 您可以使用文本编辑器打开文件(并读取其内容)这一事实表明它既不是xls文件也不是xlsx文件.您的文件既不是二进制文件也不是zip文件,它是一个普通的XML文件. 此外,此错误消息说了很多. BadZipfile: File is not a zip file 这意味着openpyxl试图将您的文件作为xlsx文件打开,因此也就是zip文件.但是当它试图提取其内容时,它会失败,因为你的文件甚至不是一个zip文件. 但是如果文件既不是xlsx文件也不是xls文件,那么Microsoft Excel如何读取它呢?我也想知道.经过一些研究,我相信你的文件有XML Spreadsheet 2003 file format. This example看起来非常类似你发布的文件内容.由于Microsoft Excel支持这种格式,因此难怪它可以读取您的文件. 不幸的是,xlrd和openpyxl等Python库只支持xls和xlsx文件格式,因此它们无法读取您的文件.我想你只需要手动将其转换为支持的格式. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |