zoukankan      html  css  js  c++  java
  • 02-openpyxl操纵表格

    1. 打开Excel表格

    1. 创建表格
    from  openpyxl import  Workbook 
    # 实例化
    wb = Workbook()
    # 激活 worksheet
    ws = wb.active
    
    2. 打开已存在Excel表格

    通过调用方法load_workbook(filename)进行文件读取,该方法中还有一个read_only参数用于设置文件打开方式,默认为可读可写,该方法最终将返回一个workbook的数据对象

    from openpyxl import load_workbook
    wb = load_workbook('文件名称.xlsx')
    

    2.获取工作表单

    每一个Excel表格中都会有很多张sheet工作表,在对表格操作前需要先选定一张工作表。

    """注意:这里的wb,是一个使用load_workbook方法 获取到的一个对象"""
    
    # 获取所有工作表名(返回一个列表)
    sheets = wb.get_sheet_names()
    
    # 获取某一特定的工作表
    sheet = wb.get_sheet_by_name('Sheet2')
    sheet = wb["表单名称"]
    
    # 获取工作表的表名
    sheet_name = sheet.title
    
    # 一般来说,表格大多数用到的是打开时显示的工作表,这时可以用active来获取当前工作表
    sheet = wb.active
    

    3. 获取单元格数据

    3.1 获取单元格对象
    """这里的sheet,即获取到的一个表单对象"""
    
    # 通过sheet[列行名]获取
    a = sheet['A2']
    
    # 通过sheet.cell(row,column)获取,row是 行,column是列
    b = sheet.cell(1, 2)  # 即sheet['B1']
    

    这两种方法都是 获取到一个单元格对象:<Cell '注册登录'.B2>,类似这样的一个对象。

    尤其注意:sheet.cell(row,column)来获取单元格对象,行列的下标都是从1开始的。

    此时还不能获取到单元格内的具体数据。

    3.2 获取单元格内的数据

    要想获取到单元格内的具体数据,需要使用 单元格对象.value来获取。

    b = sheet.cell(1, 2)
    print(b.value)
    
    3.3 修改单元格的值
    # 针对具体的单元格 ,对其重新赋值,即是修改单元格的值。
    sh.cell(row,colum).value = 新的值 
    

    4. 按行获取数据

    4.1 获取表单中的总行数和总列数
    """sh是获取到的表单对象"""
    
    # 总行数
    sh.max_row
    
    # 总列数
    sh.max_column
    
    4.2 获取整行的数据
    """sh是一个 表单对象"""
    
    sh.rows
    

    sh.rows获取到的是一个生成器对象:<generator object Worksheet._cells_by_row at 0x00000000035212E0>,这个生成器对象中是每一行的数据,每一行数据又都是在一个元组中。

    4.3 获取整列的数据
    """sh是一个 表单对象"""
    
    sh.columns
    

    同样的,获取到的是一个生成器对象,里面是每一列的数据 ,每一列的数据又都是在一个元组中。

    4.4 从生成器中去出每一行,或是每一列的数据
    for index in range(len(list(sh.rows))):
        # print(index, list(sh.rows)[index])
        print("*" * 20)
        for item in list(sh.rows)[index]:
            print(item.value)
    

    对一个生成器对象,可以使用list()函数,将其转化成一个列表,然后就可以对这个列表通过下标进行取值。

    由于获取到的每一个列表成员都是一个元组,所以需要再次对这个元组进行遍历,最后通过.value获取到具体的数据。

  • 相关阅读:
    模拟电梯运行
    用户需求调研报告
    NABC需求分析
    大道至简---读书随笔3
    二维环形数组求最大子数组和
    结对开发之求最大数组溢出问题
    结对开发之环形数组
    结对开发之电梯调度
    我看“微软拼音”
    团队开发项目之典型用户和用户场景
  • 原文地址:https://www.cnblogs.com/Pilaoban/p/13173065.html
Copyright © 2011-2022 走看看