2

SAS が生成した何百もの .xls ファイルからタブを抽出しようとしています。運が悪かったので、次のアプローチを試しました。私のバージョンxlrdは 0.9.2 です。

import xlrd 
book = xlrd.open_workbook('out_1.xls')

エラーメッセージは次のとおりです。

Traceback (most recent call last):[Finished in 0.2s with exit code 1]
  File "I:\Dropbox\Sas data\sacwin\test.py", line 3, in <module>
    book = xlrd.open_workbook('out_1.xls') # Open an .xls file
  File "C:\Python27\lib\site-packages\xlrd\__init__.py", line 435, in open_workbook
    ragged_rows=ragged_rows,
  File "C:\Python27\lib\site-packages\xlrd\book.py", line 91, in open_workbook_xls
    biff_version = bk.getbof(XL_WORKBOOK_GLOBALS)
  File "C:\Python27\lib\site-packages\xlrd\book.py", line 1258, in getbof
    bof_error('Expected BOF record; found %r' % self.mem[savpos:savpos+8])
  File "C:\Python27\lib\site-packages\xlrd\book.py", line 1252, in bof_error
    raise XLRDError('Unsupported format, or corrupt file: ' + msg)
xlrd.biffh.XLRDError: Unsupported format, or corrupt file: Expected BOF record; found '<?xml ve'

エディターでファイルを開くと.xls、ヘッダーは次のようになります。

<?xml version="1.0" encoding="windows-1252"?>

<?mso-application progid="Excel.Sheet"?>
<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">
<DocumentProperties xmlns="urn:schemas-microsoft-com:office">

これらのファイルを解析する方法について、いくつか提案をいただけませんか? ありがとう!

4

1 に答える 1

1

この問題の解決策も探しています。ファイル形式は xml ですが、Excel 2007の「Office Open XML (ECMA-376)」形式 (SpreadsheetML だと思います) よりも古いため、xlrd ではサポートされていません。

利用可能な Python ライブラリがなく、処理する必要があるファイルの構造について事前に十分な知識がある場合は、xml リーダーを使用するだけです。

よろしくデイブ

于 2014-01-02T06:20:51.933 に答える