从openpyxl中获取工作表名称

80

我有一个中等大小的xlsx文件(大约14 MB),OpenOffice试图打开它时会卡住。我尝试使用openpyxl来读取内容,遵循这个教程进行操作。以下是代码片段:

 from openpyxl import load_workbook
 wb = load_workbook(filename = 'large_file.xlsx', use_iterators = True)
 ws = wb.get_sheet_by_name(name = 'big_data') 

问题是,我不知道工作表的名称,Sheet1/Sheet2等都不起作用(返回了NoneType对象)。我找不到一份文件告诉我如何使用openpyxl获取xlsx文件的工作表名称。有人能帮我吗?

6个回答

140
使用 sheetnames 属性:

sheetnames

返回此工作簿中所有工作表名称的列表。

名称按照工作表的顺序返回。

类型:字符串列表

print (wb.sheetnames)

您也可以从 wb.worksheets 获取工作表对象:

ws = wb.worksheets[0]

5
"wb.sheetnames" 是首选的拼写方式。 - Charlie Clark
3
在 WorkSheet 类中添加表格名称作为属性将非常方便。 - Aron Lorincz
16
工作表的名称可以通过访问wsObj.title属性来获取。 - slumtrimpet
6
这个答案已经过时了。get_sheet_names()现在已被弃用。请使用wb.sheetnames属性。 - Thruston
2
@Thruston 谢谢提醒!已经相应地更新了答案。 - alecxe

11

作为其他答案的补充,对于特定的工作表,您还可以在构造函数参数中使用 文档

ws.title

5

Python 3.x 获取表格名称需使用属性

g_sheet=wb.sheetnames

返回列表

for i in g_sheet:
    print(i)

选择任意名称

ws=wb[g_sheet[0]]

或者 ws = wb [任何名称] 假设名称工作表为paster
ws=wb["paster"]

3

如前面的回答所述,您可以使用ws.sheetnames获取工作表名称列表。

但是,如果您知道工作表名称,则可以通过以下方式获取该工作表对象:

ws.get_sheet_by_name("YOUR_SHEET_NAME")

另一种方法就像早前的答案所提到的那样。

ws['YOUR_SHEET_NAME']

请注意,.get_sheet_by_name已经被弃用,所以您应该只使用第二个选项wb[sheetname]。同时要注意,它是wb(工作簿),而不是ws(工作表),所以这里的两个答案都不完全正确。 - undefined

0
for worksheet in workbook:
    print(worksheet.name)

在openpyxl中,工作表对象没有name属性,因此worksheet.name会返回一个属性错误。正确的属性是title,所以应该将代码改为print(worksheet.title) - undefined

0
List_of_sheets = wb.sheetnames print(List_of_sheets)# 获取工作簿中的工作表名称

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接