Python利用openpyxl来操作Excel

作者 : 开心源码 本文共1076个字,预计阅读时间需要3分钟 发布时间: 2022-05-12 共227人阅读

最近一直在做项目里的自动化的工作,为了是从繁琐重复的劳动中挣脱出来,把精力用在数据分析上。自动化方面python是在好不过了,不过既然要提交报表, 就不免要美观什么的。pandas尽管很强大,但是无法对Excel完全操作,现学vba有点来不及。于是就找到这个openpyxl包,用python来修改Excel,碍于水平 有限,琢磨了两天,踩了不少坑,好在完成了自动化工作(以后起码多出来几个小时,美滋滋)。

在这里写下这两天的笔记和踩得坑,方面小伙伴躲坑,也供自己日后查阅。如有问题,还请见谅并指出,多谢。

workbook: 工作簿,一个excel文件包含多个sheet。

worksheet:工作表,一个workbook有多个,表名识别,如“sheet1”,“sheet2”等。

cell: 单元格,存储数据对象

文章所用表格为:

操作sheet

输出文件所有工作表名:

[‘5a’]

True

修改sheetname:

[‘5a_’]

创立新的sheet:

[‘newsheet’, ‘5a_’, ‘Sheet’]

删除sheet:

[‘5a_’, ‘Sheet’]

最大列数为: 5

最大行数为: 17

单元格操作

dth_title Province

景区名称 省份

注意!!!,openpyxl对Excel的修改并不像是xlwings包一样是实时的,他的修改是暂时保存在内存中的,所以当 后面的修改例如我接下来要在第一行插入新的一行做标题,那么当我对新的A1单元格操作的时候,还在内存中的原A1(现在是A2)的单元格 原有的修改就会被覆盖。所以要先保存,或者者从一开始就计划好更改操作避免这样的事情发生。(别问我怎样知道的,都是泪o(╥﹏╥)o)

样式修改

单个单元格样式

openpyxl.styles.fills板块参数文档

再次注意!!!:

不能使用?a1.border = border,否则只会如下图情况,B1:E1单元格没有线。我个人认为是由于线框涉及到相邻单元格边框的改动所以需要单独对每个单元格修改才行。

不能使用ws[‘A1:E1’].border = border,由前面的内容可知,openpyxl的多个单元格其实是一个元组,而元组是没有style的方法的,所以必需一个一个改!!其实官方有其余办法,后面讲。

按列或者行设置样式

对于,设置标题样式,其实官方也给出了一个自己设置函数,设定范围后,范围内的单元格都会合并,并且应用样式,就像是单个cell一样。在这里就不多赘述了,有兴趣的可以看看。很实用。

openpyxl同样支持与pandas协同作业,而且支持插入表格,设置函数等操作。日后会整理成笔记发出来。

说明
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » Python利用openpyxl来操作Excel

发表回复