excel文件的问题。 XLRDError:不支持的格式或损坏的文件:这是什么类型的文件?

时间:2013-04-15 16:32:29

标签: python macos excel python-2.7 xlrd

我有一些适用于xls文件的代码。它适用于我抛出的所有内容,除了这个文件,我不知道如何正确识别这个文件是什么。我从一个我正在使用Selenium导航的网站上获取该文件。此特定电子表格始终作为导致此错误的文件类型下载。

完整错误是:

Traceback (most recent call last):
  File "/Users/Meir/Documents/PYTHON/IFG User Update/code/ifg_TPA_update_excel.py", line 44, in <module>
    rb = open_workbook((os.path.expanduser("~/Documents/PYTHON/Selenium test/TPA_Example.xls")),formatting_info=True)
  File "/usr/local/lib/python2.7/site-packages/xlrd/__init__.py", line 443, in open_workbook
    ragged_rows=ragged_rows,
  File "/usr/local/lib/python2.7/site-packages/xlrd/book.py", line 94, in open_workbook_xls
    biff_version = bk.getbof(XL_WORKBOOK_GLOBALS)
  File "/usr/local/lib/python2.7/site-packages/xlrd/book.py", line 1262, in getbof
    bof_error('Expected BOF record; found %r' % self.mem[savpos:savpos+8])
  File "/usr/local/lib/python2.7/site-packages/xlrd/book.py", line 1256, in bof_error
    raise XLRDError('Unsupported format, or corrupt file: ' + msg)
XLRDError: Unsupported format, or corrupt file: Expected BOF record; found '\xff\xfe<\x00S\x00T\x00'

我尝试打开的文件在我的finder中显示为xls文件。但是,当我打开它时,它不会以文件名作为标题打开,而是显示“Workbook1”。当我点击保存时,它会打开保存菜单,好像我点击了另存为,默认为“Workbook1.xlsx”。我尝试更改我的代码以将其作为xlsx文件打开,但随后它错误地说它无法找到该文件。每当我尝试使用Google搜索时,我都不知道如何用它来表达相关的答案。

当我联系网站支持团队询问TPA批量操作表的文件类型时,他们回答说:

  

TPA批量操作是比其他批量操作更旧的版本,它将在今年晚些时候重建。下载文件时,最好的办法是进行另存为并将其保存为旧版本的.xls,我通常选择Microsoft Excel 5.0 / 95工作簿,并将其格式化为文本。格式化它应该上传而没有问题。

关于如何从Python中打开这个权利的任何想法?

目前我正在将每个部分构建为一个单独的代码,一旦我将它们整理出来,我就会将它们组合在一起。以下是将打开文件并遇到错误的代码部分。

我的代码:

#!/usr/bin/env python
## Import OS and Modules
import os
import csv
import xlrd
import xlwt
import xlutils
import csv
import collections

## Define Input File from IFG
ifg_user_file = "New_PCs_to_set_up_in_marketing_database_-_4-11-2013.csv"

## Import data
data = [row for row in csv.reader(open (os.path.expanduser("~/Downloads/" + ifg_user_file),'U'))]

## Find number of rows
row_count = sum(1 for row in data)
print row_count
## Set to turn off when reaching the end of data
end_of_data = False

from xlutils.copy import copy # http://pypi.python.org/pypi/xlutils
from xlrd import open_workbook # http://pypi.python.org/pypi/xlrd
from xlwt import easyxf # http://pypi.python.org/pypi/xlwt

##################################################################################
## THE ERROR OCCURS AT THE LINE BELOW 
rb = open_workbook((os.path.expanduser("~/Documents/PYTHON/Selenium test/TPA_Example.xls")),formatting_info=True)
r_sheet = rb.sheet_by_index(0) # read only copy to introspect the file

编辑:我尝试使用编解码器打开它而不是打开诊断

rb=codecs.open((os.path.expanduser("~/Documents/PYTHON/Selenium test/TPA_Example.xls")), 'r', encoding='utf16');
print rb;
print rb.readline();
print rb.read(20);

它打印了以下结果:

<open file '/Users/Meir/Documents/PYTHON/Selenium test/TPA_Example.xls', mode 'rb' at 0x110fe51e0>
<STYLE>

            .excel { BORDER-RIGHT: black 1px solid; BORDER-TOP: black 1px solid; BORDER-LEFT: black 1px so

然后它看起来像是一个excel文件。不知道如何继续。 是否有通用打开excel文档命令?

0 个答案:

没有答案