美文网首页Python
openpyxl操作excel

openpyxl操作excel

作者: Chaweys | 来源:发表于2021-01-30 16:45 被阅读0次

    写入内容

    举例1、创建一个excel文件,并写入简单内容
    import openpyxl
    
    wb=openpyxl.Workbook()     #定义excel文件的workbook对象
    sheet=wb.active            #激活workbook对象,即定义sheet页对象-即获得的是默认的第一页的sheet页的对象
    
    
    #方式一:
    #sheet页对象中根据单元格的索引添加内容,数据可以直接分配到单元格中(可以输入公式)
    sheet['A1']='30'
    sheet['A2']='31'
    
    
    #方式二:
    #使用cell()方法传入 行,列 指定值,这里第二行第二列值为2
    sheet.cell(row=2,column=2).value=2
    
    
    #方式三:
    #使用append()方法,在sheet对象的底部添加一组数据
    rows=(
        (4,5,6),
        (7,8,9),
        (10,11,12)
    )
    for row in rows:
        sheet.append(row)
    
    
    wb.save('test01.xlsx')     #保存至excel文件
    
    save-excel.png

    读取内容

    举例2、读取excel文件
    import openpyxl
    wb=openpyxl.load_workbook('test01.xlsx')
    #sheet=wb.active  #这种只是默认的获取到第一个sheet页的对象
    或者:
    sheet=wb.get_sheet_by_name('Sheet1')
    
    
    #方式一:
    #指定sheet页对象的单元格获取value
    a1=sheet['A1'].value
    a2=sheet['A2'].value
    print(a1)
    print(a2)
    '''
    30
    31
    '''
    
    
    #方式二:
    #通过sheet页对象cell指定单元格获取value
    a3=sheet.cell(row=2,column=2).value
    print(a3)
    '''
    2
    '''
    
    
    #方式三:
    #通过范围运算读取两列数据
    cells=sheet['A3' : 'B5']
    for c1,c2 in cells:
        print('{0:2} {1:2}'.format(c1.value,c2.value))
    '''
    {0:2} 是format的格式化输出,冒号后面未接其它字符默认使用空格占用两个字符
     4  5
     7  8
    10 11
    '''
    
    #方式四:
    #通过制定sheet页的名称获取sheet页对象
    ws=wb['FirstSheet']      #通过workbook对象的sheet页名称获取sheet页对象
    rows=ws.rows             #获取所有不为空的行-迭代器
    for row in rows:         #迭代出来每行是个对象
        print(row[1].value)  #通过每行的索引获取值,索引从0开始
    
    
    from openpyxl.styles import Font,colors
    ws=wb['FirstSheet']
    '''
    italic=True表示斜体,strike=False表示不带删除线
    '''
    font=Font(u'微软雅黑',size=20,italic=True,strike=False,color=colors.RED,bold=True)
    ws.cell(row=6,column=1,value="哈哈").font=font
    
    或:
    ws.cell(row=6,column=1).font=Font(u'微软雅黑',size=20,italic=True,strike=False,color=colors.RED,bold=True)
    ws.cell(row=6,column=1).value="哈哈"
    
    wb.save('test01.xlsx')
    
    save-excel.png
    读取excel.png

    iter_rows()按行迭代读取内容

    import openpyxl
    wb=openpyxl.Workbook()
    sheet=wb.active
    
    rows=(
        (1,2,3),
        (4,5,6),
        (7,8,9),
        (10,11,12)
    )
    
    for row in rows:
        sheet.append(row)
    
    for row in sheet.iter_rows(min_row=1,min_col=1,max_row=4,max_col=3):
        #遍历每行对象中的单元格
        for cell in row:     
            print(cell.value,end=' ')
        print('\n')
    
    wb.save('test02.xlsx')
    '''
    1 2 3 
    
    4 5 6 
    
    7 8 9 
    
    10 11 12 
    '''
    

    iter_cols()按列迭代读取内容

    举例4、iter_cols()指定行和列的最小值和最大值确定范围,返回列对象
    import openpyxl
    
    wb=openpyxl.Workbook()
    sheet=wb.active
    
    rows=(
        (1,2,3),
        (4,5,6),
        (7,8,9),
        (10,11,12)
    )
    
    for row in rows:
        sheet.append(row)
    
    
    for col in sheet.iter_cols(min_row=1,min_col=1,max_row=4,max_col=3):
        #遍历每列对象中的单元格
        for cell in col:
            print(cell.value,end=" ")
        print("\n")
    
    wb.save("test03.xlsx")
    '''
    1 4 7 10 
    
    2 5 8 11 
    
    3 6 9 12
    '''
    

    读取内容并统计statistics

    import openpyxl
    import statistics as stats
    
    wb=openpyxl.load_workbook('test04.xlsx')
    #sheet=wb.active  #这种只是默认的取第一个sheet页
    或者:
    sheet=wb.get_sheet_by_name('Sheet1')
    
    rows=sheet.rows        #获取单元格不为空的所有行
    
    values=[]
    
    for row in rows:       #遍历每行
        for cell in row:   #遍历每个单元格
            values.append(cell.value) #将每个单元的值写入到列表values中
    
    
    print("列表长度值:{0}".format(len(values)))
    print("列表最大值:{0}".format(sum(values)))
    print("列表最小值:{0}".format(min(values)))
    print("列表平均值:{0}".format(max(values)))
    print("列表平均值mean:{0}".format(stats.mean(values)))
    print("列表中位数median:{0}".format(stats.median(values)))
    print("列表标准差stdev:{0}".format(stats.stdev(values)))
    print("列表方差variance:{0}".format(stats.variance(values)))
    
    '''
    列表长度值:12
    列表最大值:78
    列表最小值:1
    列表平均值:12
    列表平均值mean:6.5
    列表中位数median:6.5
    列表标准差stdev:3.605551275463989
    列表方差variance:13.0
    '''
    

    Openpyxl 过滤器&排序数据

    Openpyxl 过滤器&排序数据
    import openpyxl
    
    wb=openpyxl.Workbook()
    sheet=wb.active
    
    data = [
        ['Item', 'Colour'],
        ['pen', 'brown'],
        ['book', 'black'],
        ['plate', 'white'],
        ['chair', 'brown'],
        ['coin', 'gold'],
        ['bed', 'brown'],
        ['notebook', 'white'],
    ]
    
    
    for r in data:
        sheet.append(r)
    
    #设置过滤的单元格为A1到B8
    sheet.auto_filter.ref='A1:B8'
    #设置过滤的列1为第二列,从0开始代表第一列,过滤的值为['brown','white']
    sheet.auto_filter.add_filter_column(1,['brown','white'])
    #设置排序的列为B2到B8
    sheet.auto_filter.add_sort_condition('B2:B8')
    
    wb.save('test05.xlsx')
    
    test05-excel.png
    test05-excel2.png

    获取单元格的维度dimensions

    import openpyxl
    wb=openpyxl.Workbook()
    sheet=wb.active
    
    rows = [
        (88, 46),
        (89, 38),
        (23, 59),
        (56, 21),
        (24, 18),
        (34, 15)
    ]
    
    for row in rows:
        sheet.append(row)
    
    print(sheet.dimensions)   #获取该sheet页的规模尺寸结果:A1:B6
    
    print("最小行:{0}".format(sheet.min_row))
    print("最大行:{0}".format(sheet.max_row))
    print("最小列:{0}".format(sheet.min_column))
    print("最大列:{0}".format(sheet.max_column))
    
    wb.save('test06.xlsx')
    

    相关文章

      网友评论

        本文标题:openpyxl操作excel

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