2012-09-03 60 views
21

我目前使用熊貓閱讀Excel文件,並向用戶展示其表名,以便他可以選擇他想使用的表格。問題是這些文件真的很大(70列x65k行),最多需要14s才能加載到筆記本上(CSV文件中的相同數據需要3s)。如何在不加載整個文件的情況下從XLS文件中獲取圖紙名稱?

我在熊貓的代碼是這樣的:

xls = pandas.ExcelFile(path) 
sheets = xls.sheet_names 

我試過xlrd過,但得到類似的結果。這是我的代碼以xlrd:

xls = xlrd.open_workbook(path) 
sheets = xls.sheet_names 

因此,任何人可以提出來檢索從Excel文件中的工作表名稱比讀取整個文件更快的方法?

+0

多久採取直接在Excel中打開這樣的文件? –

+0

@DocBrown如果Excel已打開(Excel Starter 2010),大約4s – pcarvalho

回答

28

您可以使用xlrd庫並使用「on_demand = True」標誌打開工作簿,以便工作表不會自動加載。

比你可以以類似的方式檢索表名稱大熊貓:

import xlrd 
xls = xlrd.open_workbook(r'<path_to_your_excel_file>', on_demand=True) 
print xls.sheet_names() # <- remeber: xlrd sheet_names is a function, not a property 
+0

xlrd文檔說這隻適用於BIFF> = 5.0。它不適用於我,如果我問xls.biff_version它說「0」這似乎很奇怪(不可能?)。任何想法可能發生什麼? – famargar

4

至於pandas讀取Excel表格使用xlrd並通過了所有的關鍵字參數從pandas.ExcelFilexlrd.open_workbookpd.ExcelFile接受on_demand標誌以及。因此,沒有必要單獨加載xlrd

xls = pandas.ExcelFile(path, on_demand = True) 
sheets = xls.sheet_names 
相關問題