python 使用 openpyxl 模块控制 excel 常用操作


title: python 使用 openpyxl 模块控制 excel 常用操作
tags: [‘openpyxl’,‘python’,‘excel’]
date: 2021-05-10
categories: “搬砖”

使用的库

openpyxl

import openpyxl

作用的对象

文件后缀名为 .xlsx

excel几个操作单元

  • 工作簿 workbook
  • 表单 wooksheet
  • 行、列、单元格 row, column, cell

常见操作

  • 读取文件

    path = '../file/CIBES48配件统计.xlsx'
    wb = openpyxl.load_workbook(path)
    

wb --> wookbook

  • 获取表单

    print(wb.sheetnames)
    
  • 遍历表单

    for sheet in wb:
        print(sheet.title)
    
  • 创建表单

    mySheet = wb.create_sheet('mySheet')
    
  • 得到具体某个表单

    sheet4 = wb.get_sheet_by_name('sheet4')
    sheet3 = wb['mySheet']
    
  • 获得激活的表单

    ws = wb.active
    
  • 获得具体的某个单元格

    ws = wb.active
    print('Row {}, Column {} is {}'.format(c.row, c.column, c.value))
    print('Cell {} is {}\n'.format(c.coordinate, c.value))
    print(ws.cell(row=4, column=1))
    print(ws.cell(row=4, column=1).value)	// .value 是取值
    
  • 遍历整行信息

    a = wb['Sheet1']
    for i in range(1, 39, 1):
        print(i, a.cell(row=1, column=i).value)
    
  • 获取整行或者整列信息

    colC = a['C']
    print(colC[2].value)
    row6 = a[6]
    row_range = a[2:6]
    for cow in row_range:
        for cell in cow:
            print(cell.value)
    

    高级一点的遍历

    for row in a.iter_rows(min_col=1, max_col=2, max_row=2):
        for cell in row:
            print(cell)
    
  • 打印列

    print(tuple(a.rows))
    

    每一列(或行)是一个生成器,这边用元组tuple来包起来;

    这里面打印的是一个元组,元组里面每一个都是一个元组,要想获得具体的值,需要两次遍历;

    for i in tuple(a.rows):
        for val in i:
            print(val.value)
    
  • 切片

    cell_range = a['A1:B3']
    

    先行后列遍历切片

    for rowOfCwllObjects in cell_range:
        for cellObj in rowOfCwllObjects:
            print(cellObj.coordinate, cellObj.value)
        print('------本行结束------')
    
  • 利用属性获得表格行列

    print('{} * {}'.format(a.max_row, a.max_column))
    
  • 处理列标 AA AB的问题 -->将列标改为数字

    导包

    from openpyxl.utils import get_column_letter, column_index_from_string
    

    分别为 字母变数字 和 数字变字母 的包

    print(get_column_letter(2), get_column_letter(47), get_column_letter(900))
    

    打印第2列、第47列和第900列的字母是啥;

    print(column_index_from_string('AAH'))
    

    打印 AAH 列是多少列;

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值