Python使用openpyxl读取Excel的操作详解

2025-07-20 20:50

本文主要是介绍Python使用openpyxl读取Excel的操作详解,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

《Python使用openpyxl读取Excel的操作详解》本文介绍了使用Python的openpyxl库进行Excel文件的创建、读写、数据操作、工作簿与工作表管理,包括创建工作簿、加载工作簿、操作...

1 概述

1js.1 图示

Python使用openpyxl读取Excel的操作详解

1.2 安装第三方库

pip install openpyxl

2 工作簿 workbook

2.1 创建:Workbook()

import openpyxl


class Excel(object):
    def __init__(self):
        pass

    def create_workbook(self, filename):
        """
        创建工作簿对象:workbook
        :param filename: 文件名(相对路径 或 绝对路径)
        :return:
        """
        # 1.声明 工作簿 对象
        workbook = openpyxl.Workbook()

        # 2.保存 工作簿(若已存在,则覆盖)
        workbook.save(filename)


if __name__ == '__main__':
    test = Excel()
    # C:\Users\Administrator\Desktop\Temp\1.xlsx
    test.create_workbook('1.xlsx')

Python使用openpyxl读取Excel的操作详解

2.2 常用属性:load_workbook()

import openpyxl


class Excel(object):
    def __init__(self):
        pass

    def load_workbook(self, filename):
        # 1.获取工作簿对象(获取属性前,先要加载工作簿)
        workbook = openpyxl.load_workbook(filename)

        # 2.查看工作簿支持的方法和属性
        # print(help(workbook))

        # 3.常用的属性
        print(f'active: {workbook.active}')  # 当前活动的 sheet 页
        print(f'read_only: {workbook.read_only}')  # 是否以只读方式打开
        print(f'encoding: {workbook.encoding}')  # 编码
        print(f'properties: {workbook.properties}')  # 属性类,如:标题、作者、创建日期 等
        # 单个的属性信息,可通过下列形式 "." 出来
        print(f'title: {workbook.properties.title}'python)  # 标题
        print(f'creator: {workbook.properties.creator}')  # 作者
        print(f'created: {workbook.properties.created}')  # 创建日期


if __name__ == '__main__':
    test = Excel()
    # C:\Users\Administrator\Desktop\Temp\1.xlsx
    test.load_workbook('1.xlsx')

2.3 获取 sheet

import openpyxl


class Excel(object):
    def __init__(self, filename):
       javascript self.workbook = openpyxl.load_workbook(filename)

    def get_sheets(self):
        # 1.获取 sheet 列表
        print(self.workbook.sheetnames)  # 如:['Sheet', 'Sheet1']
        print(self.workbook.worksheets)  # 如:[<Worksheet "Sheet">, <Worksheet "Sheet1">]
        # print(self.workbook.get_sheet_names())  # deprecated function 已弃用

        # 2.获取单个 sheet
        print('------------')
        print(self.workbook['Sheet'])  # 根据名称
        print(self.workbook.sheetnames[0])  # 根据下标,如:Sheet
        print(self.workbook.worksheets[0])  # 根据下标,如:<Worksheet "Sheet">


if __name__ == '__main__':
    test = Excel('1.xlsx')
    # C:\Users\Administrator\Desktop\Temp\1.xlsx
    test.get_sheets()

2.4 创建 sheet

import openpyxl


class Excel(object):
    def __init__(self, filename):
        self.workbook = openpyxl.load_workbook(filename)
        self.filename = filename

    def create_sheet(self):
        # 1.末尾追加
        self.workbook.create_sheet('Sheet3')

        # 2.指定位置添加(index 从 0 开始,默认末尾)
        self.workbook.create_sheet('Sheet4', 0)

        # 3.注意:若 Sheet 已存在,会默认在名称后面追加数字,如:Sheet31、Sheet32
        self.workbook.create_sheet('Sheet3')

        # 4.保存(只有保存后,才会生效哦)
        self.workbook.save(self.filename)


if __name__ == '__main__':
    test = Excel('1.xlsx')
    # C:\Users\Administrator\Desktop\Temp\1.xlsx
    test.create_sheet()

2.5 复制 sheet

import openpyxl


class Excel(object):
    def __init__(self, filename):
        self.workbook = openpyxl.load_workbook(filename)
        self.filename = filename

    def copy_sheet(self):
        # 1.获取 sheet 对象
        sheet = self.workbook['Sheet']

        # 2.复制 sheet(默认名称 + copy,如:Sheet Copy)
        self.workbook.copy_worksheet(sheet)

        # 3.保存(只有保存后,才会生效哦)
        self.workbook.save(self.filename)


if __name__ == '__main__':
    test = Excel('1.xlsx')
    # C:\Users\Administrator\Desktop\Temp\1.xlsx
    test.copy_sheet()

2.6 删除 sheet

import openpyxl


class Excel(object):
    def __init__(self, filename):
        self.workbook = openpyxl.load_workbook(filename)
        self.filename = filename

    def delete_sheet(self):
        # 1.删除 sheet
        del self.workbook['Sheet Copy']

        # 2.保存后生效
        self.workbook.save(self.filename)


if __name__ == '__main__':
    test = Excel('1.xlsx')
    # C:\Userjavascripts\Administrator\Desktop\Temp\1.xlsx
    test.delete_sheet()

2.7 移动 sheet

import openpyxl


class Excel(object):
    def __init__(self, filename):
        self.workbook = openpyxl.load_workbook(filename)
        self.filename = filename

    def move_sheet(self):
        # 1.移动 sheet(负数=向左移动、正数=向右移动、数值=移动位置的个数)
        self.workbook.move_sheet('Sheet', -1)

        # 2.保存后生效
        self.workbook.save(self.filename)


if __name__ == '__main__':
    test = Excel('1.xlsx')
    # C:\Users\Administrator\Desktop\Temp\1.xlsx
    test.move_sheet()

2.8 重命名 Sheet

import openpyxl


class Excel(object):
    def __init__(self, filename):
        self.workbook = openpyxl.load_workbook(filename)
        self.filename = filename

    def rename_sheet(self):
        # 1.重命名 sheet
        self.workbook['Sheet1'].title = 'Sheet111'

        # 2.保存后生效
        self.workbook.save(self.filename)


if __name__ == '__main__':
    test = Excel('1.xlsx')
    # C:\Users\Administrator\Desktop\Temp\1.xlsx
    test.rename_sheet()

3 工作表 sheet

3.1 追加数据

import openpyxl
from openpyxl.worksheet.worksheet import Worksheet


class Excel(object):
    def __init__(self, filenaChina编程me):
        self.workbook = openpyxl.load_workbook(filename)
        self.filename = filename

    def append_data(self):
        # 1.获取要添加数据的 sheet 对象
        sheet: Worksheet = self.workbook['Sheet']
        # 与下列写法等价,只是多了 "代码提示"
        # sheet = self.workbook['Sheet']

        # 2.追加数据
        sheet.append(['姓名', '性别', '年龄'])
        sheet.append(['张三', '女', 18])
        sheet.append(['李四', '男', 19])
        sheet.append(['王五', '女', 20])

        # 3.保存后生效
        self.workbook.save(self.filename)


if __name__ == '__main__':
    test = Excel('1.xlsx')
    # C:\Users\Administrator\Desktop\Temp\1.xlsx
    test.append_data()

Python使用openpyxl读取Excel的操作详解

3.2 查询数据

import openpyxl
from openpyxl.worksheet.worksheet import Worksheet


class Excel(object):
    def __init__(self, filename):
        self.workbook = openpyxl.load_workbook(filename)
        self.filename = filename

    def select_data(self):
        # 1.获取 sheet 对象
        sheet: Worksheet = self.workbook['Sheet']
        # 与下列写法等价,只是多了 "代码提示"
        # sheet = self.workbook['Sheet']

        # 2.查询属性
        print(f'title: {sheet.title}')  # 标题,如:Sheet
        print(f'dimensions: {sheet.dimensions}')  # 表格大小,如:A1:B3
        print(f'min_row: {sheet.min_row}')  # 最小行 1
        print(f'max_row: {sheet.max_row}')  # 最大行 3
        print(f'rows: {sheet.rows}')  # 行对象

        print(f'min_column: {sheet.min_column}')  # 最小列 1
        print(f'max_column: {sheet.max_column}')  # 最大列 2
        print(f'columns: {sheet.columns}')  # 列对象

        # 3.查询单元格数据
        print(sheet['A1'].value)

        # 4.保存后生效
        self.workbook.save(self.filename)


if __name__ == '__main__':
    test = Excel('1.xlsx')
    # C:\Users\Administrator\Desktop\Temp\1.xlsx
    test.select_data()

3.3 修改数据

import openpyxl
from openpyxl.worksheet.worksheet import Worksheet


class Excel(object):
    def __init__(self, filename):
        self.workbook = openpyxl.load_workbook(filename)
        self.filename = filename

    def update_data(self):
        # 1.获取 sheet 对象
        sheet: Worksheet = self.workbook['Sheet']
        # 与下列写法等价,只是多了 "代码提示"
        # sheet = self.workbook['Sheet']

        # 2.修改数据
        sheet['A1'] = '我是A1'
        sheet.cell(row=2, column=1).value = '我是A2'
        sheet.cell(row=3, column=1, value='我是A3')

        # 3.保存后生效
        self.workbook.save(self.filename)


if __name__ == '__main__':
    test = Excel('1.xlsx')
    # C:\Users\Administrator\Desktop\Temp\1.xlsx
    test.update_data()

3.4 删除数据

import openpyxl
from openpyxl.worksheet.worksheet import Worksheet


class Excel(object):
    def __init__(self, filename):
        self.workbook = openpyxl.load_workbook(filename)
        self.filename = filename

    def update_data(self):
        # 1.获取 sheet 对象
        sheet: Worksheet = self.workbook['Sheet']
        # 与下列写法等价,只是多了 "代码提示"
        # sheet = self.workbook['Sheet']

        # 2.删除数据
        sheet.delete_rows(idx=1, amount=1)  # idx 行开始(含),往下删除 amount 行
        sheet.delete_cols(idx=2, amount=2)  # idx 列开始(含),往右删除 amount 行

        # 3.保存后生效
        self.workbook.save(self.filename)


if __name__ == '__main__':
    test = Excel('1.xlsx')
    # C:\Users\Administrator\Desktop\Temp\1.xlsx
    test.update_data()

3.5 获取表头

import openpyxl
from openpyxl.worksheet.worksheet import Worksheet


class Excel(object):
    def __init__(self, filename):
        self.workbook = openpyxl.load_workbook(filename)
        self.filename = filename

    def get_sheet_head(self):
        # 1.获取 sheet 对象
        sheet: Worksheet = self.workbook['Sheet']
        # 与下列写法等价,只是多了 "代码提示"
        # sheet = self.workbook['Sheet']

        # 2.获取表头,其中:values_only=True 表示只获取值
        for i in sheet.iter_cols(min_col=1, max_row=1, values_only=True):
            print(i)


if __name__ == '__main__':
    test = Excel('1.xlsx')
    # C:\Users\Administrator\Desktop\Temp\1.xlsx
    test.get_sheet_head()

3.6 遍历数据

import openpyxl
from openpyxl.worksheet.worksheet import Worksheet


def read_excel(filename):
    """
    遍历 sheet 中的数据
    :param filename: 文件名
    """
    lwb = openpyxl.load_workbook(filename)

    # sheet 列表
    # sheet = lwb['Sheet']
    sheet: Worksheet = lwb['Sheet']  # 手动指定类型,可用代码提示

    # 遍历方式1:按行遍历
    for row in sheet.iter_rows():
        for cell in row:
            print(cell.row, cell.column, cell.value)

    print('------------------ 分割线1 -----------------')

    # 遍历方式2:按列遍历
    for col in sheet.iter_cols():
        for cell in col:
            print(cell.row, cell.column, cell.value)


if __name__ == '__main__':
    fileName = '1.xlsx'
    read_excel(fileName)

4 单元格 cell

4.1 查询

import openpyxl
from openpyxl.worksheet.worksheet import Worksheet


class Excel(object):
    def __init__(self, filename):
        self.workbook = openpyxl.load_workbook(filename)
        self.filename = filename

    def get_cell(self):
        # 1.获取 sheet 对象
        sheet: Worksheet = self.workbook['Sheet']
        # 与下列写法等价,只是多了 "代码提示"
        # sheet = self.workbook['Sheet']

        # 2.获取单个单元格数据
        cell1 = sheet['A1']  # A1 单元格
        cell2 = sheet.cell(1, 1)  # 效果同上
        print(cell1.value)
        print(cell2.value)

        # 3.查询多个单元格数据
        cells = sheet['A1:B2']

        for item in cells:
            for cell in item:
                print(cell.row, cell.column, cell.value)


if __name__ == '__main__':
    test = Excel('1.xlsx')
    # C:\Users\Administrator\Desktop\Temp\1.xlsx
    test.get_cell()

4.2 修改

import openpyxl
from openpyxl.worksheet.worksheet import Worksheet


class Excel(object):
    def __init__(self, filename):
        self.workbook = openpyxl.load_workbook(filename)
        self.filename = filename

    def update_cell(self):
        # 1.获取 sheet 对象
        sheet: Worksheet = self.workbook['Sheet']
        # 与下列写法等价,只是多了 "代码提示"
        # sheet = self.workbook['Sheet']

        # 3.修改 单元格 A1 的值为 'A1'
        cell1 = sheet['A1']  # A1 单元格
        cell1.value = 'A1'  # 赋值

        # 3.保存后生效
        self.workbook.save(self.filename)


if __name__ == '__main__':
    test = Excel('1.xlsx')
    # C:\Users\Administrator\Desktop\Temp\1.xlsx
    test.update_cell()

以上就是python使用openpyxl读取Excel的操作详解的详细内容,更多关于Python openpyxl读取Excel的资料请关注编程China编程(www.chinasem.cn)其它相关文章!

这篇关于Python使用openpyxl读取Excel的操作详解的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1155435

相关文章

Python错误AttributeError: 'NoneType' object has no attribute问题的彻底解决方法

《Python错误AttributeError:NoneTypeobjecthasnoattribute问题的彻底解决方法》在Python项目开发和调试过程中,经常会碰到这样一个异常信息... 目录问题背景与概述错误解读:AttributeError: 'NoneType' object has no at

从入门到精通详解LangChain加载HTML内容的全攻略

《从入门到精通详解LangChain加载HTML内容的全攻略》这篇文章主要为大家详细介绍了如何用LangChain优雅地处理HTML内容,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录引言:当大语言模型遇见html一、HTML加载器为什么需要专门的HTML加载器核心加载器对比表二

SpringBoot集成EasyPoi实现Excel模板导出成PDF文件

《SpringBoot集成EasyPoi实现Excel模板导出成PDF文件》在日常工作中,我们经常需要将数据导出成Excel表格或PDF文件,本文将介绍如何在SpringBoot项目中集成EasyPo... 目录前言摘要简介源代码解析应用场景案例优缺点分析类代码方法介绍测试用例小结前言在日常工作中,我们经

基于Python实现简易视频剪辑工具

《基于Python实现简易视频剪辑工具》这篇文章主要为大家详细介绍了如何用Python打造一个功能完备的简易视频剪辑工具,包括视频文件导入与格式转换,基础剪辑操作,音频处理等功能,感兴趣的小伙伴可以了... 目录一、技术选型与环境搭建二、核心功能模块实现1. 视频基础操作2. 音频处理3. 特效与转场三、高

Python实现中文文本处理与分析程序的示例详解

《Python实现中文文本处理与分析程序的示例详解》在当今信息爆炸的时代,文本数据的处理与分析成为了数据科学领域的重要课题,本文将使用Python开发一款基于Python的中文文本处理与分析程序,希望... 目录一、程序概述二、主要功能解析2.1 文件操作2.2 基础分析2.3 高级分析2.4 可视化2.5

Java实现预览与打印功能详解

《Java实现预览与打印功能详解》在Java中,打印功能主要依赖java.awt.print包,该包提供了与打印相关的一些关键类,比如PrinterJob和PageFormat,它们构成... 目录Java 打印系统概述打印预览与设置使用 PageFormat 和 PrinterJob 类设置页面格式与纸张

使用Go实现文件复制的完整流程

《使用Go实现文件复制的完整流程》本案例将实现一个实用的文件操作工具:将一个文件的内容完整复制到另一个文件中,这是文件处理中的常见任务,比如配置文件备份、日志迁移、用户上传文件转存等,文中通过代码示例... 目录案例说明涉及China编程知识点示例代码代码解析示例运行练习扩展小结案例说明我们将通过标准库 os

一文解密Python进行监控进程的黑科技

《一文解密Python进行监控进程的黑科技》在计算机系统管理和应用性能优化中,监控进程的CPU、内存和IO使用率是非常重要的任务,下面我们就来讲讲如何Python写一个简单使用的监控进程的工具吧... 目录准备工作监控CPU使用率监控内存使用率监控IO使用率小工具代码整合在计算机系统管理和应用性能优化中,监

MySQL 8 中的一个强大功能 JSON_TABLE示例详解

《MySQL8中的一个强大功能JSON_TABLE示例详解》JSON_TABLE是MySQL8中引入的一个强大功能,它允许用户将JSON数据转换为关系表格式,从而可以更方便地在SQL查询中处理J... 目录基本语法示例示例查询解释应用场景不适用场景1. ‌jsON 数据结构过于复杂或动态变化‌2. ‌性能要

postgresql使用UUID函数的方法

《postgresql使用UUID函数的方法》本文给大家介绍postgresql使用UUID函数的方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录PostgreSQL有两种生成uuid的方法。可以先通过sql查看是否已安装扩展函数,和可以安装的扩展函数