我有一個cStringIO變量中創建一個Excel文件。轉換cStringIO可變進文件
我需要打開它,閱讀它。但要打開xlrd
函數xlrd.open_workbook(excel_file_name)
的Excel文件,我需要通過其文件名稱來調用它。但是在這種情況下沒有文件名,因爲它是一個包含Excel文件表示的cStrinIO變量。
我怎麼能轉換cStringIO變量成爲一個真正的Excel文件,我可以打開?
謝謝!
我有一個cStringIO變量中創建一個Excel文件。轉換cStringIO可變進文件
我需要打開它,閱讀它。但要打開xlrd
函數xlrd.open_workbook(excel_file_name)
的Excel文件,我需要通過其文件名稱來調用它。但是在這種情況下沒有文件名,因爲它是一個包含Excel文件表示的cStrinIO變量。
我怎麼能轉換cStringIO變量成爲一個真正的Excel文件,我可以打開?
謝謝!
貌似xlrd.open_workbook()接受file_contents參數爲好,所以也許如下?
xlrd.open_workbook(file_contents=cstringio_var.getvalue())
您可以使用tempfile.NamedTemporaryFile
。
實施例(未測試):
with tempfile.NamedTemporaryFile() as f:
f.write(your_cStringIO_variable.read())
f.flush()
something = xlrd.open_workbook(f.name)
的確。這是原始問題的正確途徑。我想保留我的答案作爲一般解決方法,但:) –
謝謝菲利克斯和湯米!這兩個答案都適用於我,但我最終使用了Tommi,因爲它是該函數被設計用於的方式。 – Xar