• python 办公自动化(Excel)


    一、读取Excel中的数据

    安装
    xlrd 只能读取Excel内容

    pip install xlrd==1.2.0
    
    • 1

    xlrd库的open_workbook函数打开Excel文件,并且返回一个Book对象,这个对象代表打开的Excel文件。
    通过Book对象得到Excel文件的很多信息,比如 表单数量 和 表单名称

    import xlrd
    
    book - xlrd.open_workbook('income.xlsx')
    
    print(f"表单数量 {book.nsheets}")
    print(f"表单名称 {book.sheet_names()}")
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    要读取某个表单里单元格中的数据,必须要先获取表单(sheet)对象

    # 表单索引从0开始,获取第一个表单对象
    book.sheet_by_index( 0 )
    
    # 获取名为2022的表单对象
    book.sheet_by_name('2022')
    
    # 获取所有的表单对象,放入一个列表返回
    book.sheet()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    获取了表单对象后,可根据起其属性得到:
    表单行数 nrows
    列数 ncols
    表单名 name
    表单索引 number

    # 获取了表单对象后,可以使用cell_value方法,读取指定单元格中的文本内容
    sheet.cell_value(rowx=0,colx=0)
    
    # 读取指定行所有单元格的内容使用row_values方法,参数为行号,存放在一个列表中返回
    sheet.row_value(rowx=0)
    
    # 读取指定列所有单元格的内容使用col_values方法,参数为行号,存放在一个列表中返回
    sheet.col_value(colx=0)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    二、新建Excel,写入数据

    创建一个新的Excel并写入数据,需要使用openpyxl库

    openpyxl 库可读、写、改,但不支持老版本 Office2003的xls格式

    import openpyxl
    
    # 创建一个Excel workbook 对象
    book = openpyxl.Workbook()
    
    # 创建时,会自动产生一个sheet,通过active获取
    sh = book.active
    
    # 修改当前 sheet 标题为 工资表
    sh.title = '工资表'
    
    # 保存文件
    book.save('信息.xlsx')
    
    # 增加一个名为 '年龄表' 的sheet,放在最后
    sh1 = book.create_sheet('年龄表-最后')
    
    # 增加一个 sheet,放在最前
    sh2 = book.create_sheet('年龄表-最前',0)
    
    # 增加一个 sheet,指定为第2个表单
    sh3 = book.create_sheet('年龄表2',1)
    
    # 根据名称获取某个sheet对象
    sh = book['工资表']
    
    # 给第一个单元格写入内容
    sh['A1'] = '你好'
    
    # 获取某个单元格内容
    print(sh['A1'].value)
    
    # 根据行号列号, 给第一个单元格写入内容,
    # 注意和 xlrd 不同,是从 1 开始
    sh.cell(2,2).value = '白月黑羽'
    
    # 根据行号列号, 获取某个单元格内容
    print(sh.cell(1, 1).value)
    
    book.save('信息.xlsx')
    
    插入行、列
    sheet 对象的 insert_rows 和 insert_cols 方法,分别用来插入行和列
    
    删除行、列
    sheet 对象的 delete_rows 和 delete_cols 方法,分别用来删除行和列
    
    文字颜色、字体、大小
    单元格里面的样式风格(包括颜色、字体、大小、下划线等)都是通过Font对象设定的
    
    import openpyxl
    # 导入Font对象 和 colors 颜色常量
    from openpyxl.styles import Font,colors
    
    wb = openpyxl.load_workbook('income.xlsx')
    sheet = wb['2018']
    
    # 指定单元格字体颜色,
    sheet['A1'].font = Font(color=colors.RED, #使用预置的颜色常量
                            size=15,    # 设定文字大小
                            bold=True,  # 设定为粗体
                            italic=True # 设定为斜体
                            )
    
    # 也可以使用RGB数字表示的颜色
    sheet['B1'].font = Font(color="981818")
    
    # 指定整行 字体风格, 这里指定的是第3行
    font = Font(color="981818")
    for y in range(1, 100): # 第 1100 列
        sheet.cell(row=3, column=y).font = font
    
    # 指定整列 字体风格, 这里指定的是第2列
    font = Font(bold=True)
    for x in range(1, 100): # 第 1100 行
        sheet.cell(row=x, column=2).font = font
    
    # 指定 某个单元格背景色
    sheet['A1'].fill = PatternFill("solid", "E39191")
    
    # 指定 整行 背景色, 这里指定的是第2行
    fill = PatternFill("solid", "E39191")
    for y in range(1, 100): # 第 1100 列
        sheet.cell(row=2, column=y).fill = fill
    
    # 在第1行,第4列 的位置插入图片
    sheet.add_image(Image('1.png'), 'D1')
    
    wb.save('income-1.xlsx')
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
  • 相关阅读:
    RabbitMQ入门基础篇
    Android后退堆栈
    docker入门加实战—网络
    JavaWeb(Maven的安装,配置,常用命令 IDEA配置,创建,发布Maven)
    【探索Linux】—— 强大的命令行工具 P.8(进程优先级、环境变量)
    公链之Sui(前脸书/Meta员工成立的新公链项目)
    大规模语言模型人类反馈对齐--RLHF
    JAXB(Java Architecture for XML Binding)下载、使用
    Java面试题——你们怎么解决消息重复消费?
    Spark SQL概述与基本操作
  • 原文地址:https://blog.csdn.net/qq_46177396/article/details/127785769