信息发布→ 登录 注册 退出

python之openpyxl模块的安装和基本用法(excel管理)

发布时间:2026-01-11

点击量:
目录
  • 一.获取wps的安装包并安装
  • 二.excel文档的基本定义
  • 三.导入openpyxl模块
  • 四.openpyxl基本用法
    • 1.创建对象
    • 2.Workbook对象属性(工作簿操作)
    • 3.Worksheet,Cell对象(工作表操作,单元格)
    • 4.访问单元格的所有信息
    • 5.应用案例
  • 总结

    前言

    openpyxl模块是一个读写Excel 2010文档的Python库,如果要处理更早格式的Excel文档,需要用到额外的库,openpyxl是一个比较综合的工具,能够同时读取和修改Excel文档。其他很多的与Excel相关的项目基本只支持读或者写Excel一种功能。
    要对excel进行操作,必须要有能打开excel的软件,这里以wps为例

    一.获取wps的安装包并安装

    二.excel文档的基本定义

    1) 工作薄(workbook):一个EXCEL文件就称为一个工作薄,一个工作薄中可以包含若干张工作表。

    2) 工作表(sheet):工作薄中的每一张表格称为工作表,每张工作表都有一个标签,默认为sheet1\sheet2\sheet3来命名,(一个工作 薄默认为由3个工作表组成)

    3) 活动表(active sheet):指当前正在操作的工作表

    4) 行(row): 工作表中的每一行行首数字(1、2、3、)称为行标题;一张工作表最多有65536行

    5) 列(column): 列标题:工作表中每一列列首的字母(A、B、C)称为列标题;一张工作表最多有256列

    6)单元格(cell): 工作表的每一个格称为单元格

    三.导入openpyxl模块

    在pycharm下,执行import openpyxl,发现会报错,这时我们将鼠标放在openpyxl上,按下alt + enter,选择第一个进行安装。

     

    出现下图,说明安装成功。

     

    如果安装失败,就需要到第三方库进行安装。

    pip3 install openpyx

    四.openpyxl基本用法

    1.创建对象

    打开或者创建一个Excel需要创建一个Workbook对象

    获取一个表则需要先创建一个Workbook对象,然后使用该对象的方法来得到一个Worksheet对象

    如果要获取表中的数据,那么得到Worksheet对象以后再从中获取代表单元格的Cell对象

    Workbook对象

      一个Workbook对象代表一个Excel文档,因此在操作Excel之前,都应该先创建一个Workbook对象。对于创建一个新的Excel文档,直接进行Workbook类的调用即可,对于一个已经存在的Excel文档,可以使用openpyxl模块的load_workbook函数进行读取,该函数包涵多个参数,但只有filename参数为必传参数。filename 是一个文件名,也可以是一个打开的文件对象

    import openpyxl
    wb = openpyxl.Workbook('Book1.xlsx')
    wb1 = openpyxl.load_workbook('Book2.xlsx')
    
    print(wb)
    print(type(wb))
    print(wb1)
    print(type(wb1))

    2.Workbook对象属性(工作簿操作)

    sheetnames:获取工作簿中的表(列表)

    active:获取当前活跃的Worksheet

    worksheets:以列表的形式返回所有的Worksheet(表格)

    read_only:判断是否以read_only模式打开Excel文档

    encoding:获取文档的字符集编码

    properties:获取文档的元数据,如标题,创建者,创建日期等

    import openpyxl
    
    wb = openpyxl.load_workbook('Book2.xlsx')
    print(wb.sheetnames)
    print(wb.active)
    print(wb.worksheets)
    print(wb.read_only)
    print(wb.encoding)
    print(wb.properties) ##运行结果最后三行属于该属性

    excel信息

     

    运行结果

    3.Worksheet,Cell对象(工作表操作,单元格)

    Worksheet:

    title:表格的标题

    max_row:表格的最大行

    min_row:表格的最小行

    max_column:表格的最大列

    min_column:表格的最小列

    rows:按行获取单元格(Cell对象) - 生成器

    columns:按列获取单元格(Cell对象) - 生成器

    values:按行获取表格的内容(数据) - 生成器

    Cell:

    row:单元格所在的行

    column:单元格坐在的列

    value:单元格的值

    coordinate:单元格的坐标

    import openpyxl
    
    wb = openpyxl.load_workbook('Book2.xlsx')
    ##选择要操作的工作表, 返回工作表对象
    sheet = wb['排序商品信息']
    #获取工作表的名称
    print(sheet.title)
    # 获取工作表中行和列的最值
    print(sheet.max_column)
    print(sheet.max_row)
    print(sheet.min_column)
    print(sheet.min_row)
    ##修改表的名称
    sheet.title = 'sheet1'
    print(sheet.title)
    # 返回指定行指定列的单元格信息
    print(sheet.cell(row=1, column=2).value)
    cell = sheet['B1']
    print(cell)
    print(cell.row, cell.column, cell.value,cell.coordinate)

    运行前excel信息

     

    4.访问单元格的所有信息

    import openpyxl
    
    wb = openpyxl.load_workbook('Book2.xlsx')
    ##选择要操作的工作表, 返回工作表对象
    sheet = wb['排序商品信息']
    for row in sheet.rows:
     # 循环遍历每一个单元格
     for cell in row:
     # 获取单元格的内容
     print(cell.value, end=',')
     print()

    import openpyxl
    
    wb = openpyxl.load_workbook('Book2.xlsx')
    ##选择要操作的工作表, 返回工作表对象
    sheet = wb['排序商品信息']
    for row in sheet.values:
     print(*row)

    5.应用案例

    需求:

    商品名称 商品价格 商品数量

    - 定义一个函数, readwb(wbname, sheetname=None)

    - 如果用户指定sheetname就打开用户指定的工作表, 如果没有指定, 打开active sheet;

    - 根据商品的价格进行排序(由小到大), 保存到文件中;商品名称:商品价格:商品数量

    - 所有信息, 并将其保存到数据库中;

    import os
    
    import openpyxl
    
    
    def readwb(wbname, sheetname=None):
     # 打开工作薄
     wb = openpyxl.load_workbook(wbname)
     # 获取要操作的工作表
     if not sheetname:
      sheet = wb.active
     else:
      sheet = wb[sheetname]
    
     # 获取商品信息保存到列表中
     #[ ['name', price, count]
     #
     # ]
     all_info = []
     for row in sheet.rows:
      child = [cell.value for cell in row]
      all_info.append(child)
     return sorted(all_info, key=lambda item: item[1])
    
    
    def save_to_excel(data, wbname, sheetname='sheet1'):
     """
     将信息保存到excel表中;
     [[' BOOK', 50, 3], ['APPLE', 100, 1], ['BANANA', 200, 0.5]]
     """
     print("写入Excel[%s]中......." %(wbname))
     # 打开excel表, 如果文件不存在, 自己实例化一个WorkBook对象
     wb = openpyxl.Workbook()
     # 修改当前工作表的名称
     sheet = wb.active
     # 修改工作表的名称
     sheet.title = sheetname
    
     for row, item in enumerate(data): # 0 [' BOOK', 50, 3]
      for column, cellValue in enumerate(item): # 0 ' BOOK'
       sheet.cell(row=row+1, column=column+1, value=cellValue)
    
     # ** 往单元格写入内容
     # sheet.cell['B1'].value = "value"
     # sheet.cell(row=1, column=2, value="value")
    
     # 保存写入的信息
     wb.save(filename=wbname)
     print("写入成功!")
    
    data = readwb(wbname='Book1.xlsx')
    save_to_excel(data, wbname='Book2.xlsx', sheetname="排序商品信息")

    原excel信息

     

    新excel信息

    总结

    在线客服
    服务热线

    服务热线

    4008888355

    微信咨询
    二维码
    返回顶部
    ×二维码

    截屏,微信识别二维码

    打开微信

    微信号已复制,请打开微信添加咨询详情!