我必须得到一些随机的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 :(得分:5)
Pandas在内部使用xlrd
库(如果您有兴趣,请查看excel.py源代码。)
您可以通过访问每个工作表的visibility
属性来确定可见性状态。根据{{3}}中的评论,这些是可能的值:
这是一个用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
答案 1 :(得分:0)
回答@ƘɌỈSƬƠƑ,帮助了我。我想补充几点。
对于宏文件(.xlsm),可见性是不可预测的。可能是因为VBA代码落后于可见性设置。即使在Excel应用程序中打开文件时可以看到工作表,xlrd读取时的可见性也不总是0。
查看下面的屏幕截图:
这就是我在Excel中看到的。
使用xlrd
获取的可见性值答案 2 :(得分:0)
我在 Pandas 上做了很多研发,但找不到任何解决方案。另一种方法是使用 xlrd
库。
您需要安装版本 1.2.0
才能获得对 xlsx
excel 格式的支持。
pip install xlrd==1.2.0
阅读 excel 并循环浏览表格。在循环内,您将获得工作表名称,并使用工作表名称使用 sheet_by_name
方法获取工作表,并在其顶部使用 visibility
确定工作表是否可见。
import xlrd as xl
workbook = xl.open_workbook('File.xlsx')
for sheet in workbook.sheets():
isVisible = True if workbook.sheet_by_name(sheet.name).visibility == 0 else False
if(isVisible == True):
print(str(isVisible) + " : " + sheet.name)
else:
print(str(isVisible) + " : " + sheet.name)