2013-05-15 60 views
2
使用XLRD

我試圖使用XLRD庫中的IronPython 2.7IronPython中

在打開的.xls文件(2003格式)我得到以下錯誤的最基本的操作,我不知道如何修復它:

workbook = xlrd.open_workbook(xlsfile) 

    File "C:\Program Files (x86)\IronPython 2.7\lib\site-packages\xlrd\__init__.py", line 426, in open_workbook 
    TypeError: sequence item 0: expected bytes or byte array, str found 

有什麼想法嗎?如果可能,我想使用xlrd,但似乎可能存在一些兼容性問題。當使用Python 2.7解釋器時,文件打開沒有問題..

+0

'xlsfile'變量是什麼? – Bryan

+0

完整路徑的文件名:'c:\\ data \\ data.xls' –

回答

2

我這個打了一些時間在xlrd 0.9.2。 bytes,bytearray,str,或者甚至手動讀取文件並將其作爲file_contents工作。

最後,我把xlrd降級到了0.8.0版本,並且它工作正常。 :)

+0

用XLSX&XLS(2003)試用了xlrd 0.9.3,問題依然存在 - 即使通過手動糾正代碼,它仍會在代碼深處的其他地方繼續發出「像預期的str,獲得字節」的錯誤 - 對我降級0.8沒有幫助 - 看起來與尋求替代品的IronPython –

+0

明顯不兼容 - 使用舊的Interop(因爲IronPython有這個優勢)爲我工作,沒有任何額外的Python代碼(當然也可能有缺點)http :?//www.ironpython.info/index.php標題= Interacting_with_Excel –

1

無論出於何種原因,似乎open_workbook要求文件名以字節爲單位,而不是字符串。嘗試:

workbook = xlrd.open_workbook(bytes(xlsfile)) 

這是你很可能會遇到很多的問題:IronPython中的字符串都是Unicode默認情況下(如Python 3),而不是字節串像Python 2

+0

謝謝 - 當我試圖讓我得到下面的錯誤,這導致我相信問題是在別的地方。奇怪的是,xlrd主頁表示它是'unicode aware',並且它與Python 3兼容。 文件「C:\ Program Files(x86)\ IronPython 2.7 \ lib \ site-packages \ xlrd \ __ init__。 py「,第394行,在open_workbook中 TypeError:expected str,得到字節 –

+0

即使xlrd支持Python 3,它也可能不會爲IronPython激活該路徑。但是,它確實應該做出可能需要的任何更改。 –