1

xls ファイルで動作するコードが少しあります。この1つのファイルを除いて、私が投げたすべてのもので機能し、この1つのファイルが何であるかを正しく識別する方法がわかりません。Selenium でナビゲートしている Web サイトからファイルを取得します。この特定のスプレッドシートは、常にこのエラーの原因となるファイル タイプとしてダウンロードされます。

完全なエラーは次のとおりです。

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'

開こうとしているファイルが、ファインダーに xls ファイルとして表示されます。しかし、開いてみると、ファイル名をヘッダーにして開くのではなく、「Workbook1」と表示されます。保存をクリックすると、名前を付けて保存をクリックしたかのように保存メニューが開き、デフォルトで「Workbook1.xlsx」になります。コードを xlsx ファイルとして開くように変更しようとしましたが、ファイルが見つからないというエラーが発生しました。グーグルで検索しようとするときはいつでも、適切な答えを得るためにそれをどのように表現すればよいかわかりません。

Web サイトのサポート チームに連絡して、TPA バルク op シートがどのような種類のファイルであるかを尋ねたところ、次のような回答がありました。

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ドキュメントを開くユニバーサルコマンドはありますか?

4

0 に答える 0