2014-04-16 19 views
0

我有一個cStringIO變量中創建一個Excel文件。轉換cStringIO可變進文件

我需要打開它,閱讀它。但要打開xlrd函數xlrd.open_workbook(excel_file_name)的Excel文件,我需要通過其文件名稱來調用它。但是在這種情況下沒有文件名,因爲它是一個包含Excel文件表示的cStrinIO變量。

我怎麼能轉換cStringIO變量成爲一個真正的Excel文件,我可以打開?

謝謝!

回答

2

貌似xlrd.open_workbook()接受file_contents參數爲好,所以也許如下?

xlrd.open_workbook(file_contents=cstringio_var.getvalue()) 
+1

的確。這是原始問題的正確途徑。我想保留我的答案作爲一般解決方法,但:) –

+0

謝謝菲利克斯和湯米!這兩個答案都適用於我,但我最終使用了Tommi,因爲它是該函數被設計用於的方式。 – Xar

1

您可以使用tempfile.NamedTemporaryFile

實施例(未測試):

with tempfile.NamedTemporaryFile() as f: 
    f.write(your_cStringIO_variable.read()) 
    f.flush() 
    something = xlrd.open_workbook(f.name)