openpyxl3.0官方文档(33)—— 表格

表格是对单元格组的引用。这使得某些操作(如设置表中单元格的样式)变得更容易。

创建表¶

    from openpyxl import Workbook
    from openpyxl.worksheet.table import Table, TableStyleInfo

    wb = Workbook()
    ws = wb.active

    data = [
        ['Apples', 10000, 5000, 8000, 6000],
        ['Pears',   2000, 3000, 4000, 5000],
        ['Bananas', 6000, 6000, 6500, 6000],
        ['Oranges',  500,  300,  200,  700],
    ]

    # add column headings. NB. these must be strings
    ws.append(["Fruit", "2011", "2012", "2013", "2014"])
    for row in data:
        ws.append(row)

    tab = Table(displayName="Table1", ref="A1:E5")

    # Add a default style with striped rows and banded columns
    style = TableStyleInfo(name="TableStyleMedium9", showFirstColumn=False,
                           showLastColumn=False, showRowStripes=True, showColumnStripes=True)
    tab.tableStyleInfo = style

    '''
    Table must be added using ws.add_table() method to avoid duplicate names.
    Using this method ensures table name is unque through out defined names and all other table name. 
    '''
    ws.add_table(tab)
    wb.save("table.xlsx")
    

在工作簿中,表名必须是唯一的。默认情况下,创建表时第一行为表标题、所有列包含筛选器,并且表标题和列标题必须始终包含字符串。
注意,在write-only模式下,必须手动添加列标题,并且值必须与对应的单元格相同。否则excel可能会认为文件无效并删除表。

使用表¶

在工作表中,ws.tables是一个字典类型的对象,包括所有的表。

    >>> ws.tables
    {"Table1",  <openpyxl.worksheet.table.Table object>}
通过名称或范围获取表
    >>> ws.tables["Table1"]
    or
    >>> ws.tables["A1:D10"]
遍历工作表中的所有表格
    >>> for table in ws.tables.values():
    >>>    print(table)
获取工作表中所有表格的名称和范围

以下代码将返回所有表名和范围的列表

    >>> ws.tables.items()
    >>> [("Table1", "A1:D10")]
删除表
    >>> del ws.tables["Table1"] 
获取工作表中表格的数量
    >>> len(ws.tables)
    >>> 1

手动添加列标题

write-only模式下,可以创建不包含列标题的表:

    >>> table.headerRowCount = False

或者,手动初始化列标题:

    >>> headings = ["Fruit", "2011", "2012", "2013", "2014"] # all values must be strings
    >>> table._initialise_columns()
    >>> for column, value in zip(table.tableColumns, headings):
        column.name = value
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值