美文网首页
openpyxl3.0官方文档(33)—— 表格

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

作者: Sinchard | 来源:发表于2020-07-15 00:14 被阅读0次

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

    创建表¶

        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
    

    相关文章

      网友评论

          本文标题:openpyxl3.0官方文档(33)—— 表格

          本文链接:https://www.haomeiwen.com/subject/frhchktx.html