Python 操作 Excel 之 openpyxl 模块

目录
  • 1.打开已有 Excel 文件
  • 2.创建一个 Excel 文件,并修改 sheet
  • 3.选择 sheet 的不同方式
  • 4.Worksheet对象
  • 5.Cell 对象
  • 6.单元格插入图像
  • 7.设置单元格样式

正式开始前依旧是模块的安装,使用如下命令即可实现:

pip install openpyxl

官方对于该库的描述是:

A Python library to read/write Excel 2010 xlsx/xlsm files

一款用于读写 Excel 2010 xlsx/xlsm 文件的库。

1.打开已有 Excel 文件

拿到该库之后,直接尝试打开一个本地 Excel ,然后才能对其中的数据进行控制。

from openpyxl  import load_workbook
wb = load_workbook('测试表格.xlsx')
# 输出
# <openpyxl.workbook.workbook.Workbook object at 0x00000195680F96D0>

继续编码前还是需要了解一些关于 Excel 的相关知识点,如下所示:

  • Excel 中列名是字母,行号是数字,例如锁定第一个单元格是 A1,然后是 A2,接下来是A3;
  • Excel 中有工作簿,工作表,单元格三个概念组成,对应到 openpyxl 中就是 Workbook 类,Worksheet 类,Cell 类。

操作 Excel 基本遵循三步走策略:

  • 打开 Excel,产生 Workbook 对象;
  • 获取表格对象,即 Worksheet 对象;
  • 操作表格中的单元格对象,即 Cell 对象。

有这些概念之后,你会发现后续的代码就会变得极容易理解。

2.创建一个 Excel 文件,并修改 sheet

接下来的代码将会创建一个 Excel 文件,并将第一个默认 sheet 修改为【测试】

import openpyxl
if __name__ == '__main__':
    wb = openpyxl.Workbook()
    ws = wb.active
    # 更改第一个 sheet 名称
    ws.title = "测试"
    # 保存
    wb.save('example.xlsx')

在 Python 文件的运行目录会生成如下文件,打开关注第一个 sheet 即可。

如果希望创建第二个表格页(sheet),继续在 Workbook 对象中追加 sheet 即可。

import openpyxl
if __name__ == '__main__':
    wb = openpyxl.Workbook()
    ws = wb.active
    # 更改第一个 sheet 页名称
    ws.title = "Sheet1"
    # 新增第二个 sheet 页
    ws2 = wb.create_sheet("Sheet2")

    # 新增第三个 sheet 页
    # 将 create_sheet() 函数中的第二个参数定义为 0,表示该 sheet 在最前面
    ws3 = wb.create_sheet("Sheet3", 0)
    # 保存
    wb.save('example.xlsx')

追加 sheet 使用的函数是 create_sheet() ,在使用的时候,可以根据第二个参数进行顺序设置。

如果你希望对 sheet 页签进行更细节的设置,可以进行属性配置,例如修改 sheet 页签背景

import openpyxl
if __name__ == '__main__':
    wb = openpyxl.Workbook()
    ws = wb.active
    # 更改第一个 sheet 页名称
    ws.title = "Sheet1"
    ws.sheet_properties.tabColor = "03a9f4"
    # 新增第二个 sheet 页
    ws2 = wb.create_sheet("Sheet2")
    # 新增第三个 sheet 页
    # 将 create_sheet() 函数中的第二个参数定义为 0,表示该 sheet 在最前面
    ws3 = wb.create_sheet("Sheet3", 0)
    # 保存
    wb.save('example.xlsx')

3.选择 sheet 的不同方式

使用 wb["Sheet1"] 可以通过类字典模式进行 sheet 读取,还可以使用 get_sheet_by_name() 方法进行调用,但是该方法已被弃用,建议掌握第一种用法即可。

import openpyxl
if __name__ == '__main__':
    wb = openpyxl.Workbook()
    ws = wb.active
    # 更改第一个 sheet 页名称
    ws.title = "Sheet1"
    ws_1 = wb["Sheet1"]
    ws_1_1 = wb.get_sheet_by_name("Sheet1")  # 该方法将被弃用,建议用上述形式调用
    print(ws_1)
    print(ws_1_1)
    # wb.save('example.xlsx')

4.Worksheet对象

Worksheet 对象即表格对象,用于得到单元格中的数据,修改表格中的内容。

优先学习的相关属性如下所示:

  • title:表格的标题;
  • dimensions:表格数据区域大小;
  • max_row:表格的最大行;
  • min_row:表格的最小行;
  • max_column:表格的最大列;
  • min_column:表格的最小列;
  • rows:按行获取单元格(Cell)对象 ,返回生成器;
  • columns:按列获取单元格(Cell对象),返回生成器。

具体代码如下所示,其中用到的表格参考下述截图:

from openpyxl  import load_workbook
wb = load_workbook('测试表格.xlsx')
if __name__ == '__main__':
    ws = wb.active
    # 更改第一个 sheet 页名称
    ws.title = "My_Sheet"
    ws_1 = wb["My_Sheet"]
    print(ws_1.title)  # 获取标题
    print(ws_1.dimensions)  # 有数据的区域大小,无数据是 A1:A1
    print(ws_1.max_row) # 最大行数
    print(ws_1.min_row) # 最小行数
    print(ws_1.max_column)
    print(ws_1.min_column)
    print(ws_1.rows)
    print(ws_1.columns)

除属性外,Worksheet 对象的方法如下所示 Worksheet方法如下:

  • iter_rows:按行获取所有单元格,其值可以调用 Cell 的属性(min_row, max_row, min_col, max_col);
  • iter_columns:按列获取所有的单元格
  • append:在表格末尾添加数据
  • merged_cells:合并多个单元格
  • unmerged_cells:移除合并的单元格

Worksheet 对象的属性和方法基本都会返回 Cell对象,即单元格对象。

5.Cell 对象

Cell对象比较简单,常用的属性如下:

  • row :单元格所在的行
  • column:单元格坐在的列
  • value:单元格的值
  • coordinate:单元格的坐标
from openpyxl import load_workbook
wb = load_workbook('测试表格.xlsx')
if __name__ == '__main__':
    ws = wb.active
    for item in ws.rows:
        print(item)  # 按照行输出
        print(item[0].value)  # 输出单元格的值

操作修改单元格数据 获取单元格之后,就可以对其中的值进行操作,例如下述代码

from openpyxl import load_workbook
wb = load_workbook('测试表格.xlsx')
if __name__ == '__main__':
    ws = wb.active
    # 输出修改前
    for item in ws.rows:
        print(item)  # 按照行输出
        print(item[0].value)  # 输出单元格的值
        item[0].value = 1
    # 输出修改后的值,注意不保存文件,数据不会存储
    for item in ws.rows:
        print(item[0].value)  # 输出单元格的值
    # wb.save('example.xlsx')

单元格内容修改完毕之后,需要使用 wb.save() 方法才可以存储文件修改之后的内容。

使用行列式定位单元格 使用工作表的 cell() 方法,可以定位到单元格,具体用法如下所示

from openpyxl import load_workbook
wb = load_workbook('测试表格.xlsx')
if __name__ == '__main__':
    ws = wb.active
    # 输出修改前
    for item in ws.rows:
        print(item)  # 按照行输出
        print(item[0].value)  # 输出单元格的值
        item[0].value = 1
    # 输出修改后的值,注意不保存文件,数据不会存储
    for item in ws.rows:
        print(item[0].value)  # 输出单元格的值

    # 直接定位单元格
    c = ws.cell(row=2, column=3)
    print(c)
    print("单元格A2,B3里面的内容是",c.value)
    wb.save('example.xlsx')

6.单元格插入图像

使用如下代码,可以在Excel 中的单元格内添加图片。 在正式编码前,先导入如下模块

from openpyxl.drawing.image import Image

接下来就可以在对应的单元格中去添加相应的图片了,具体代码如下所示,其中比较重要的是 add_image() 方法。

 # 创建图像,参数是图片路径
img = Image('cup_PNG2001.png')
# add_image(图片,要添加单元格的位置)
ws.add_image(img, 'A2')
wb.save('example.xlsx')

7.设置单元格样式

在 Excel 中,我们可以针对单元格样式进行操作,例如加粗,倾斜,背景色。

需要提前导入的相关类:

from openpyxl.styles import Font, colors, Alignment

接下来可以修改相应的字体:

from openpyxl import load_workbook
from openpyxl.styles import Font, colors, Alignment

wb = load_workbook('测试表格.xlsx')

if __name__ == '__main__':
    ws = wb.active

    c_style = Font(size=20, bold=True, italic=True, color='ff0000')

    ws['A1'].font = c_style

    wb.save('example.xlsx')

运行结果如下所示,注意 A1 单元格相关变化。在这里需要注意代码中只要存在一处错误,新的样式就不会起到作用。

其它内容你可自行进行扩展,例如设置对齐方式

ws['B1'].alignment = Alignment(horizontal='center', vertical='center')

行高,列宽,单元格合并与取消合并,这些内容由你自行完成。

到此这篇关于Python 操作 Excel 之 openpyxl 模块的文章就介绍到这了,更多相关python openpyxl 模块内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • 使用Python读取和修改Excel文件(基于xlrd、xlwt和openpyxl模块)

    目录 1.使用xlrd模块对xls文件进行读操作 1.1 获取工作簿对象 1.2 获取工作表对象 1.3 获取工作表的基本信息 1.4 按行或列方式获得工作表的数据 2.使用xlwt模块对xls文件进行写操作 2.1 创建工作簿 2.2 创建工作表 2.3 按单元格的方式向工作表中添加数据 2.4 按行或列方式向工作表中添加数据 2.5 保存创建的文件 3.使用openpyxl模块对xlsx文件进行读操作 3.1 获取工作簿对象 3.2 获取所有工作表名 3.3 获取工作表对象 3.5 获取工作

  • Python openpyxl模块实现excel读写操作

    在日常的测试工作中,我们的测试用例一般都是保存在Excel文件中,当然也有一些公司会使用Xmind来编写测试用例,那么为什么我们在这里只是讲解Excel的读写的,因为Excel它是一种更规范.更常用的测试用例格式,对于自动化测试来说,如果我们将用例保存在Excel中,那么剩下的问题就是使用什么样的奇数去解析用例获取测试数据了,下面我们将为大家介绍openpyxl的具体用法. openpyxl是一个开源项目,openpyxl模块是一个读写Excel 2010文档的Python库,如果要处理更早格式

  • python 使用openpyxl读取excel数据

    openpyxl介绍 ​ openpyxl是一个开源项目,它是一个用于读取/写入Excel 2010文档(如xlsx .xlsm .xltx .xltm文件 )的Python库,如果要处理更早格式的Excel文档(xls),需要用到其它库(如:xlrd.xlwt等),这是openpyxl比较其他模块的不足之处.openpyxl是一款比较综合的工具,不仅能够同时读取和修改Excel文档,而且可以对Excel文件内单元格进行详细设置,包括单元格样式等内容,甚至还支持图表插入.打印设置等内容. ​ p

  • 详解Python操作Excel之openpyxl

    目录 Python操作Excel之openpyxl 前提 创建 读取 总结 Python操作Excel之openpyxl openpyxl是一个Python库,用来读写Excel2010 xlsx/xlsm/xltx/xltm类型文件. openpyxl不能操作早期的xls格式的Excel文件,可以使用xlwings等其他库. openpyxl是一个非标准的库,需要自行安装:pip install openpyxl 前提 既然要操作Excel,那么前提我们对Excel要有一个基本的了解,比如:

  • python使用openpyxl库读写Excel表格的方法(增删改查操作)

    一.前言 嗨,大家好,我是新发. 最近需要做个小工具,可以通过python来读写Excel,实现增删改查操作.以前用的是xlrd和xlwt这两个python库,今天我要讲的是openpyxl库,我觉得openpyxl比xlrd和xlwt更强大更好用,话不多说,开始吧. 二.安装openpyxl 可以直接通过命令行安装 pip install openpyxl 如果你是内网环境,则可以先在外网下载openpyxl库然后转到内网再安装. openpyxl下载地址:https://pypi.org/p

  • Python如何实现Excel的最合适列宽(openpyxl)

    目录 Excel的最合适列宽(openpyxl) 这是最简单的实现 Python写Excel列宽,行高的一些方法 使用第三方库 xlsxwriter,结果文件格式为xlsx 使用第三方库 xlwt,结果文件格式为xls Excel的最合适列宽(openpyxl) Python的Pandas模块是处理Excel的利器,尤其是加工保存Excel非常方便,但是唯独想让导出的Excel自动调整列宽或者行高,确实做不到啊,尤其是加工后还需要使用者自己调整列宽,非常不便. 所以必须openpyxl模块助力.

  • Python Excel处理库openpyxl详解

    Python中的penpyxl是一个第三方库,可以处理xlsx格式的Excel文件.pip install openpyxl安装. penpyxl读取Excel文件 需要导入相关函数 from openpyxl import load_workbook # 默认可读写,若有需要可以指定write_only和read_only为True wb = load_workbook('pythontab.xlsx') 默认打开的文件为可读写,若有需要可以指定参数read_only为True. penpyx

  • Python 操作 Excel 之 openpyxl 模块

    目录 1.打开已有 Excel 文件 2.创建一个 Excel 文件,并修改 sheet 3.选择 sheet 的不同方式 4.Worksheet对象 5.Cell 对象 6.单元格插入图像 7.设置单元格样式 正式开始前依旧是模块的安装,使用如下命令即可实现: pip install openpyxl 官方对于该库的描述是: A Python library to read/write Excel 2010 xlsx/xlsm files 一款用于读写 Excel 2010 xlsx/xlsm

  • python操作Excel神器openpyxl看这一篇就够了

    目录 Excel xlsx Openpyxl 创建新文件 Openpyxl 写入单元格 Openpyxl 附加值 OpenPyXL 读取单元格 OpenPyXL 读取多个单元格 Openpyxl 按行迭代 Openpyxl 按列迭代 统计 Openpyxl 过滤器&排序数据 Openpyxl 维度 工作表 合并单元格 Openpyxl 冻结窗格 Openpyxl 公式 OpenPyXL 图像 Openpyxl 图表 总结 Excel xlsx 在本教程中,我们使用 xlsx 文件. xlsx 是

  • Python操作Excel神器openpyxl使用教程(超详细!)

    目录 前言 新建并写入文件 打开并读取文件 工作簿对象 工作表对象 单元格读取 单元格对象 单元格样式 列宽与行高 插入和删除行和列 综合写入实践 合并表格 拆分表格 作业提交情况检测 总结 前言 openpyxl是Python下的Excel库,它能够很容易的对Excel数据进行读取.写入以及样式的设置,能够帮助我们实现大量的.重复的Excel操作,提高我们的办公效率,实现Excel办公自动化. 安装方法:pip install openpyxl 中文文档:https://www.osgeo.c

  • python操作excel的包(openpyxl、xlsxwriter)

    本文为大家分享了python操作excel的包,供大家参考,具体内容如下 现在支持python操作excel的包有下列这些 官网上最推荐的是openpyxl,其他包支持较老的excel版本. xlsxwriter无法对打开的excel进行写操作,excel必须处于关闭状态才能写成功. xlswriter 基本代码: import xlsxwriter workbook = xlsxwriter.Workbook('hello.xlsx') worksheet = workbook.add_wor

  • Python操作Excel插入删除行的方法

    1. 前言 由于近期有任务需要,要写一个能够处理Excel的脚本,实现的功能是,在A表格上其中一列,对字符串进行分组和排序,然后根据排序好的A表格以固定格式自动填写到B表格上. 开始写脚本之前查了很多资料,最开始采用了openpyxl这个模块,用起来很顺手,使用这个对A表格其中一列进行了重新填写,但是后来发现,需要用到删除和插入空白行的操作,使用openpyxl比较困难,这个模块仅支持在表格的最后一行继续添加新行,不支持在中间插入和删除行. 在查找的过程中发现,网上流传了一些使用openpyxl

  • 使用Python操作excel文件的实例代码

    使用的类库 pip install openpyxl 操作实现 •工作簿操作 # coding: utf-8 from openpyxl import Workbook # 创建一个excel工作簿 wb = Workbook() # 打开一个工作簿 wb = load_workbook('test.xlsx') # 保存工作簿到文件 wb.save('save.xlsx') •工作表操作 # 获得当前的工作表对象 ws = wb.active # 通过工作表名称得到工作表对象 ws = wb.

  • python操作excel让工作自动化

    某局某领导给了3只excel文件,一只里面有4个sheet需要处理,一个sheet有250+列,算下来总共有3000+列需要手动反复插入.删除列.拷贝.求和,所以给了4天的时间要完成. 我不愿意做大量简单而且又是重复性工作,看了看3只表格的格式基本一样,于是我用python写了30行代码完成了这个"艰巨"任务. 0x01 用python操作excel需要安装xlrd.xlwt(或者其他的模块也行). 读取excel文件:workbook = xlrd.open_workbook('fi

  • python操作excel的方法

    摘要: Openpyxl是一个常用的python库,用于对Excel的常用格式及其模板进行数据读写等操作. 简介与安装openpyxl库 Openpyxl is a Python library for reading and writing Excel 2010 xlsx/xlsm/xltx/xltm files. 安装 pip install openpyxl pillow:在文件中需要使用images (jpeg, png, bmp,...)时,需要安装pillow库. 注意:写操作时请关

  • Python操作Excel工作簿的示例代码(\*.xlsx)

    前言 Excel 作为流行的个人计算机数据处理软件,混迹于各个领域,在程序员这里也是常常被处理的对象,可以处理 Excel 格式文件的 Python 库还是挺多的,比如 xlrd.xlwt.xlutils.openpyxl.xlwings 等等,但是每个库处理 Excel 的方式不同,有些库在处理时还会有一些局限性. 接下来对比一下几个库的不同,然后主要记录一下 xlwings 这个库的使用,目前这是个人感觉使用起来比较方便的一个库了,其他的几个库在使用过程中总是有这样或那样的问题,不过在特定情

随机推荐