新版Pandas使用以下界面加载Excel文件:

read_excel('path_to_file.xls', 'Sheet1', index_col=None, na_values=['NA'])

但如果我不知道有哪些床单呢?

例如,我正在工作的excel文件,如下表

数据1,数据2…,数据N, foo, bar

但我不知道先验的N。

有没有办法从熊猫的excel文档中获得表的列表?


当前回答

import pandas as pd

path = "\\DB\\Expense\\reconcile\\"

file_name = "202209-v01.xlsx"

df = pd.read_excel(path + file_name, None)
print(df)

sheet_names = list(df.keys())

# print last sheet name
print(sheet_names[len(sheet_names)-1])

last_month = df.get(sheet_names[len(sheet_names)-1])
print(last_month)

其他回答

import pandas as pd

path = "\\DB\\Expense\\reconcile\\"

file_name = "202209-v01.xlsx"

df = pd.read_excel(path + file_name, None)
print(df)

sheet_names = list(df.keys())

# print last sheet name
print(sheet_names[len(sheet_names)-1])

last_month = df.get(sheet_names[len(sheet_names)-1])
print(last_month)

你仍然可以使用ExcelFile类(和sheet_names属性):

xl = pd.ExcelFile('foo.xls')

xl.sheet_names  # see all sheet names

xl.parse(sheet_name)  # read a specific sheet to DataFrame

更多选项参见文档解析…

从excel (xls)中检索表名的最简单方法。, xlsx)为:

tabs = pd.ExcelFile("path").sheet_names 
print(tabs)

然后,要读取和存储特定工作表的数据(例如,工作表名称为“Sheet1”,“Sheet2”等),请输入“Sheet2”,例如:

data = pd.read_excel("path", "Sheet2") 
print(data)

如果你读excel文件

dfs = pd.ExcelFile('file')

然后使用

dfs.sheet_names
dfs.parse('sheetname')

另一种变体

df = pd.read_excel('file', sheet_name='sheetname')

基于@dhwanil_shah的回答,您不需要提取整个文件。zf。打开它可以直接从压缩文件中读取。

import xml.etree.ElementTree as ET
import zipfile

def xlsxSheets(f):
    zf = zipfile.ZipFile(f)

    f = zf.open(r'xl/workbook.xml')

    l = f.readline()
    l = f.readline()
    root = ET.fromstring(l)
    sheets=[]
    for c in root.findall('{http://schemas.openxmlformats.org/spreadsheetml/2006/main}sheets/*'):
        sheets.append(c.attrib['name'])
    return sheets

连续的两个readline很难看,但是内容只在文本的第二行。不需要解析整个文件。

这个解决方案似乎比read_excel版本快得多,而且很可能也比完整的提取版本快得多。