2015-07-02 103 views
1

我有一個excel文件,我想這對於一個excel文件(200Mb)來說是相當大的,它有大約20張充滿信息的頁面。xlrd很慢打開excel文件

我的問題是,如果以下簡單的操作需要將近5分鐘才能執行是正常的。我想知道我是否以正確的方式進行。

import xlrd 

def processExcel(excelFile): 
    excelData = xlrd.open_workbook(excelFile) 
    sheets = excelData.sheet_names() 
    print sheets 

正如你所看到的,在第一個步驟,我只是試圖讓工作表名稱和只有簡單的東西需要5分鐘......這可能嗎?

回答

4

是的,這是完全可能的。這確實是一個Excel文件中的大量數據。默認情況下,xlrd將整個工作簿加載到內存中。如果您的工作簿是一個.xls文件,你可以使用on_demand參數只開放工作表在需要的時候:

import xlrd 

def processExcel(excelFile): 
    excelData = xlrd.open_workbook(excelFile, on_demand=True) 
    sheets = excelData.sheet_names() 
    print sheets 

如果你試圖打開一個.xlsx文件,該on_demand參數沒有影響。

+0

thanks !,很遺憾我使用的是.xlsx文件 – codeKiller

+1

我沒有太多使用[OpenPyXL](https://pypi.python.org/pypi/openpyxl)的經驗,但它的[只讀模式](http://openpyxl.readthedocs.org/en/latest/optimized.html)應該可以幫助非常大的文件。值得一試。 –

+0

謝謝!請添加'excelData.release_resources()',否則文件保持打開狀態。請參閱https://stackoverflow.com/questions/33241837/python-xlrd-book-how-to-close-the-files – citynorman