簡體   English   中英

Python讀取SAS生成的XML類型.xls文件

[英]Python read SAS generated XML type .xls file

我正在嘗試從數百個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">

您介意給我一些有關如何解析這些文件的建議嗎? 謝謝!

我也在尋找解決這個問題的方法。 我可以告訴您,文件格式是xml,但早於Excel 2007'Office Open XML(ECMA-376)'格式(我認為是SpreadsheetML),因此xlrd不支持該格式。

如果沒有可用的python庫,並且您對要處理的文件結構有很好的先驗知識,那么我只會使用xml閱讀器。

問候戴夫

讀取 pandas / python 中的 xls 文件:不支持的格式,或損壞的文件:預期的 BOF 記錄; 找到 b'\xef\xbb\xbf <!--?xml'</div--><div id="text_translate"><p> 我正在嘗試將xls文件(只有一個選項卡)打開到 pandas dataframe 中。</p><p> It is a file that i can normally read in excel or excel for the web, in fact here is the raw file itself: <a href="https://www.dropbox.com/scl/fi/zbxg8ymjp8zxo6k4an4dj/product-screener.xls?dl=0&amp;rlkey=3aw7whab78jeexbdkthkjzkmu" rel="nofollow noreferrer">https://www.dropbox.com/scl/fi/zbxg8ymjp8zxo6k4an4dj/product-screener.xls?dl= 0&amp;rlkey=3aw7whab78jeexbdkthkjzkmu</a> 。</p><p> 我注意到前兩行合並了單元格,一些列也是如此。</p><p> 我嘗試了幾種方法(來自堆棧),但都失敗了。</p><pre> # method 1 - read excel file = "C:\\Users\\admin\\Downloads\\product-screener.xls" df = pd.read_excel(file) print(df)</pre><p> 錯誤: Excel file format cannot be determined, you must specify an engine manually.</p><pre> # method 2 - pip install xlrd and use engine file = "C:\\Users\\admin\\Downloads\\product-screener.xls" df = pd.read_excel(file, engine='xlrd') print(df)</pre><p> 錯誤: Unsupported format, or corrupt file: Expected BOF record; found b'\xef\xbb\xbf&lt;?xml' Unsupported format, or corrupt file: Expected BOF record; found b'\xef\xbb\xbf&lt;?xml'</p><pre> # method 3 - rename to xlsx and open with openpyxl file = "C:\\Users\\admin\\Downloads\\product-screener.xlsx" df = pd.read_excel(file, engine='openpyxl') print(df)</pre><p> 錯誤: File is not a zip file (可以選擇轉換,而不是重命名)。</p><pre> # method 4 - use read_xml file = "C:\\Users\\admin\\Downloads\\product-screener.xls" df = pd.read_xml(file) print(df)</pre><p> 此方法實際上會產生結果,但會產生與工作表沒有任何意義的 DataFrame。 大概需要解釋 xml (似乎很復雜)?</p><pre> Style Name Table 0 NaN None NaN 1 NaN All funds NaN # method 5 - use read_table file = "C:\\Users\\admin\\Downloads\\product-screener.xls" df = pd.read_table(file) print(df)</pre><p> 此方法將文件讀入一列(系列)DataFrame。 那么如何使用這些信息來創建與 xls 文件形狀相同的標准 2d DataFrame 呢?</p><pre> 0 &lt;Workbook xmlns="urn:schemas-microsoft-com:off... 1 &lt;Styles&gt; 2 &lt;Style ss:ID="Default"&gt; 3 &lt;Alignment Horizontal="Left"/&gt; 4 &lt;/Style&gt;... ... 226532 &lt;/Cell&gt; 226533 &lt;/Row&gt; 226534 &lt;/Table&gt; 226535 &lt;/Worksheet&gt; 226536 &lt;/Workbook&gt; # method 5 - use read_html file = "C:\\Users\\admin\\Downloads\\product-screener.xls" df = pd.read_html(file) print(df)</pre><p> 這將返回一個空白列表[] ,而人們可能期望至少有一個 DataFrame 列表。</p><p> 所以問題是將這個文件讀入 dataframe (或類似的可用格式)的最簡單方法是什么?</p></div>

[英]read xls file in pandas / python: Unsupported format, or corrupt file: Expected BOF record; found b'\xef\xbb\xbf<?xml'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

相關問題 在python中讀取包含xml數據的xls文件 如何讀取/解析 Python(XML 模式)中的 an.xls 文件 用pandas讀取Excel XML.xls文件 在Python中強制將xml文件保存為xls格式 嘗試使用 Python 解析 XLS (XML) 文件 嘗試在 python 上讀取被阻止的 xls 文件時出錯 無法使用xlrd在python中讀取.xls文件 逐行讀取.xls文件數據 從 python 中的 URL 讀取 xls 文件 讀取 pandas / python 中的 xls 文件:不支持的格式,或損壞的文件:預期的 BOF 記錄; 找到 b'\xef\xbb\xbf <!--?xml'</div--><div id="text_translate"><p> 我正在嘗試將xls文件(只有一個選項卡)打開到 pandas dataframe 中。</p><p> It is a file that i can normally read in excel or excel for the web, in fact here is the raw file itself: <a href="https://www.dropbox.com/scl/fi/zbxg8ymjp8zxo6k4an4dj/product-screener.xls?dl=0&amp;rlkey=3aw7whab78jeexbdkthkjzkmu" rel="nofollow noreferrer">https://www.dropbox.com/scl/fi/zbxg8ymjp8zxo6k4an4dj/product-screener.xls?dl= 0&amp;rlkey=3aw7whab78jeexbdkthkjzkmu</a> 。</p><p> 我注意到前兩行合並了單元格,一些列也是如此。</p><p> 我嘗試了幾種方法(來自堆棧),但都失敗了。</p><pre> # method 1 - read excel file = "C:\\Users\\admin\\Downloads\\product-screener.xls" df = pd.read_excel(file) print(df)</pre><p> 錯誤: Excel file format cannot be determined, you must specify an engine manually.</p><pre> # method 2 - pip install xlrd and use engine file = "C:\\Users\\admin\\Downloads\\product-screener.xls" df = pd.read_excel(file, engine='xlrd') print(df)</pre><p> 錯誤: Unsupported format, or corrupt file: Expected BOF record; found b'\xef\xbb\xbf&lt;?xml' Unsupported format, or corrupt file: Expected BOF record; found b'\xef\xbb\xbf&lt;?xml'</p><pre> # method 3 - rename to xlsx and open with openpyxl file = "C:\\Users\\admin\\Downloads\\product-screener.xlsx" df = pd.read_excel(file, engine='openpyxl') print(df)</pre><p> 錯誤: File is not a zip file (可以選擇轉換,而不是重命名)。</p><pre> # method 4 - use read_xml file = "C:\\Users\\admin\\Downloads\\product-screener.xls" df = pd.read_xml(file) print(df)</pre><p> 此方法實際上會產生結果,但會產生與工作表沒有任何意義的 DataFrame。 大概需要解釋 xml (似乎很復雜)?</p><pre> Style Name Table 0 NaN None NaN 1 NaN All funds NaN # method 5 - use read_table file = "C:\\Users\\admin\\Downloads\\product-screener.xls" df = pd.read_table(file) print(df)</pre><p> 此方法將文件讀入一列(系列)DataFrame。 那么如何使用這些信息來創建與 xls 文件形狀相同的標准 2d DataFrame 呢?</p><pre> 0 &lt;Workbook xmlns="urn:schemas-microsoft-com:off... 1 &lt;Styles&gt; 2 &lt;Style ss:ID="Default"&gt; 3 &lt;Alignment Horizontal="Left"/&gt; 4 &lt;/Style&gt;... ... 226532 &lt;/Cell&gt; 226533 &lt;/Row&gt; 226534 &lt;/Table&gt; 226535 &lt;/Worksheet&gt; 226536 &lt;/Workbook&gt; # method 5 - use read_html file = "C:\\Users\\admin\\Downloads\\product-screener.xls" df = pd.read_html(file) print(df)</pre><p> 這將返回一個空白列表[] ,而人們可能期望至少有一個 DataFrame 列表。</p><p> 所以問題是將這個文件讀入 dataframe (或類似的可用格式)的最簡單方法是什么?</p></div>
 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM