欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Python办公自动化之Excel(中)

程序员文章站 2022-03-26 15:14:43
准备首先,我们需要安装依赖包读取数据使用 openpyxl 中的load_workbook(filepath)加载本地一个 excel 文件,返回结果是一个工作簿对象利用工作簿对象,可以获取所有的 s...

准备

首先,我们需要安装依赖包

读取数据

使用 openpyxl 中的 load_workbook(filepath) 加载本地一个 excel 文件,返回结果是一个工作簿对象

利用工作簿对象,可以获取所有的 sheet 名称及 sheet 列表

工作簿对象提供了 active 属性,用于快速获取当前选择的 sheet

另外,也可以通过 sheet 名称去获取某一个特定的 sheet 对象

使用 sheet.max_row 和 sheet.max_column 可以获取当前 sheet 中的数据行数和列数

openpyxl 提供 2 种方式来定位一个单元格,分别是:

  • 数字索引,从 1 开始

数字索引:行数字索引、列数字索引

比如:row_index=1,column_index=1

  • 行和列组成的字符串索引

字符串索引:列由字母组成 + 行索引

比如:a1 对应第一行、第一列的单元格

并且,openpyxl.utils 提供了方法,便于 列索引 在两者之间进行转换

单元格的获取,同样可以通过上面 2 种索引方式来获取

在日常处理 excel 数据过程中,可能需要判断单元格数据类型,而 openpyxl 并没有提供现成的方法

这里,我们可以通过单元格对象的 value 属性拿到值,接着使用 isinstance 方法判断数据类型

单独获取某一行[列]的数据,可以使用下面的方式:

需要注意的是,获取某一行的数据需要传入数字索引;而对于列数据的获取,必须传入字符串索引

和 python 列表范围取值类似,openpyxl 同样支持使用 : 符号拿到某个范围内的数据行[列]

写入数据

要写入数据到 excel 表格

首先,使用 openpyxl.workbook() 创建一个 excel 工作簿对象

接着,使用工作簿对象的 create_sheet() 新建一个 sheet

默认创建的 sheet 被插入到最后一个位置,第 2 个参数可以指定 sheet 插入的位置

sheet 标签的背景色同样支持修改,使用 sheet_properties.tabcolor 指定 rgb 颜色值

比如,要设置某一个 sheet 的背景色为红色,只需要先查询到对应的 sheet,然后指定颜色值为 ff0000 即可

openpyxl 支持行列数字索引、字符串索引以这 2 种方式写入数据到单元格中

在单元格中插入图片也很简单,openpyxl 提供的 add_image() 方法

参数有 2 个,分别是:图片对象、单元格字符串索引

为了便于使用,我们可以将列索引进行转换,然后封装成两个插入图片的方法

最后,调用工作簿对象的 save() 方法,将数据真实写入到 excel 文件中

修改数据

修改数据包含:单元格数据的修改、单元格样式的修改

对于单元格数据的修改,只需要先读取工作簿对象,查询到要操作的 sheet 对象,然后调用上面的方法修改单元格数据,最后调用 save() 函数保存覆盖即可

单元格样式包含:字体样式、单元格背景样式、边框样式、对齐方式等

以常见的字体样式、对齐方式为例

首先,使用 openpyxl 中的 font 类创建一个对象,指定字体名称、字体大小、是否加粗、是否斜体、颜色、下划线等

接着,构建一个 alignment 对象,指定单元格的对齐方式

最后,使用单元格对象的 font/alignment 属性,将字体样式和对齐方式设置进去即可

进阶用法

接下来,聊聊几个常用的进阶用法

1、获取可见及隐藏的 sheet

通过判断 sheet 对象的 sheet_state 属性值,可以判断当前 sheet 是显示还是隐藏

当值为 visible 时,代表 sheet 是显示的

当值是 hidden 时,代表这个 sheet 被隐藏了

2、获取隐藏/显示的行索引列表、列索引列表

受限于篇幅,这里以获取所有显示/隐藏的行索引列表为例

遍历 sheet 对象的 row_dimensions 属性值,通过判断行属性的 hidden 值,判断当前行是否隐藏或显示

3、获取单元格字体颜色及单元格背景颜色

单元格对象的 font.color.rgb、fill.fgcolor.rgb 属性值分别代表字体颜色值、单元格背景颜色

最后

可以发现,openpyxl 相比 xlrd/xlwt,提供了大量实用的 api,功能更强大,并且完美支持 xlsx!

受限于篇幅,文中只展示了部分功能和代码,更加复杂的功能,比如:单元格合并、单元格完整样式操作,我已经封装成方法上传到后台

代码地址:https://github.com/xingag/test_auto/tree/master/office_auto/excel

以上就是python办公自动化之excel(中)的详细内容,更多关于python excel自动化的资料请关注其它相关文章!