2017-06-16 98 views
2

我必須得到一些隨機的Excel工作表,我想從這些文件中只讀可見工作表如何僅使用Pandas從Excel中讀取可見工作表?

一次考慮一個文件,假設我有Mapping_Doc.xls,其中包含2個可見的工作表和2個隱藏的工作表。

由於張少在這裏,我可以用這樣的名稱解析它們:

代碼:

xls = pd.ExcelFile('D:\\ExcelRead\\Mapping_Doc.xls') 
print xls.sheet_names 
df1 = xls.parse('Sheet1') #visible sheet 
df2 = xls.parse('Sheet2') #visible sheet 

輸出:

[u'sheet1',u'sheet2',u'sheet3',u'sheet4'] 

我怎樣才能得到只有可見表?

+0

我不認爲這隻有Pandas纔有可能,你可能需要其他庫。 – moritzg

+0

@moritzg任何特定的庫? –

+2

我認爲[OpenPyXL](http://openpyxl.readthedocs.io/en/default/api/openpyxl.writer.workbook.html?highlight=visible#openpyxl.writer.workbook.get_active_sheet)可以做到這一點。 – moritzg

回答

3

Pandas在內部使用xlrd庫(如果您有興趣,請查看excel.py源代碼)。

您可以通過訪問每張紙的visibility屬性來確定可見性狀態。根據在xlrd source code的意見,這些都是可能的值:

  • 0 =可見
  • 1 =隱藏(可由用戶取消隱藏 - 格式化 - >表 - >取消隱藏)
  • 2 = 「非常隱藏」(只能通過VBA宏來隱藏)。

下面是讀取與2個工作表Excel文件,第一個可見的,第二個隱藏的例子:

import pandas as pd 

xls = pd.ExcelFile('test.xlsx') 

sheets = xls.book.sheets() 

for sheet in sheets: 
    print(sheet.name, sheet.visibility) 

輸出:

Sheet1 0 
Sheet2 1 
+0

非常感謝! –

相關問題