转自:https://blog.csdn.net/weixin_41846769/article/details/108273349

前言

大家好,在之前的十几篇办公自动化系列文章中,我们大多是以真实的案例需求来讲解Python如何进行自动化办公操作,并且多次使用到openpyxl来处理表格,今天我们就来详细的盘点Python操作Excel神器openpyxl的各种操作!

本文将以详细图表/代码的形式讲解如何对Excel进行读取、写入及样式调整,可以当成速查手册使用,随用随查,建议收藏!

安装

openpyxl是一个非标准库,因此需要自行安装,安装过程并不困难,Windows/Mac用户均可以在命令行(CMD)/终端(Terminal)中使用pip安装

pip install openpyxl

前置知识

在使用这个模块之前我们需要对Excel表格结构有个比较细致的了解,见下图:

简而言之,一个Excel工作簿workbook由一个或者多个工作表sheet组成,一个sheet可以看作是多个行row组成,也可以看作是多个列column组成,而每一行每一列都由多个单元格cell组成!

读取Excel

1.载入Excel

from openpyxl import load_workbook

workbook = load_workbook(filename='测试.xlsx’)

print(workbook.sheetnames)

注意load_workbook只能打开已经存在的Excel,不能创建新的工作簿

2.根据名称获取工作表

from openpyxl import load_workbook

workbook = load_workbook(filename='其他.xlsx')

print(workbook.sheetnames)

sheet = workbook['工作业务']

如果只有一张工作表也可以用:

sheet = workbook.active

3.获取表格内容所在的范围

print(sheet.dimensions)

4.获取某个单元格的具体内容

这边提供两种方法,注意都需要以cell.value形式输出具体值

5.获取某个单元格的行、列、坐标

print(cell.row, cell.column, cell.coordinate)

6.获取多个格子的值

这里也有一个细节,Excel中每一列由字母确定,是字符型;每一行由一个数字确定,是整型。当然,上面的三种方法都是获取一堆表格,现在要输出每一个表格的值就需要遍历:

for cell in cells:

print(cell.value)

三种方法依然有自己的局限性,如果我需要特定范围的值,且懒得换算成字母数字坐标。例如我想要获取第2行至第5行、第1列至第3列的全部单元格。因此必须掌握第4种方法:

7.读取所有的行

for row in sheet.rows:

print(row)

Excel写入

1. 保存Excel

workbook.save(filename='Excel工作表1.xlsx')

如果读取和写入Excel的路径相同则为对原文件进行修改,

如果读取和写入Excel的路径不同则为保存成新的文件

2.写入单元格

cell = sheet['A1']

cell.value = '业务需求

3.写入一行或多行数据

4.将公式写入单元格并保存

sheet['K11'] = '=AVERAGE(K1:K10)'

5.插入一行或多行

6. 插入一列或多列

7.删除多行

img

8.删除多列

9. 移动范围数据

10. 创建新的Excel表格

from openpyxl import Workbook

workbook = Workbook()

Excel样式调整

1. 设置字体样式

2. 设置对齐样式

水平对齐:distributed, justify, center, left, fill, centerContinuous, right, general

垂直对齐:bottom, distributed, justify, center, top

3. 设置边框样式

边线样式:double, mediumDashDotDot, slantDashDot, dashDotDot, dotted, hair, mediumDashed, dashed, dashDot, thin, mediumDashDot, medium, thick

4. 设置单元格填充样式

5. 设置行高和列宽

sheet.row_dimensions[1].height = 50

sheet.column_dimensions['C'].width = 20

6. 单元格合并与取消

# 合并

sheet.merge_cells('A1:B2')

sheet.merge_cells(start_row=1, start_column=3,

end_row=2, end_column=4)

# 取消合并

sheet.unmerge_cells('A1:B2')

sheet.unmerge_cells(start_row=1, start_column=3,

end_row=2, end_column=4)

python 操作excel神器_【转】多图+代码 | 详解Python操作Excel神器openpyxl的各种操作!...相关推荐

  1. python每行输出8个式子_多图+代码 | 详解Python操作Excel神器openpyxl的各种操作!

    前言 大家好,在之前的十几篇办公自动化系列文章中,我们大多是以真实的案例需求来讲解Python如何进行自动化办公操作,并且多次使用到openpyxl来处理表格,今天我们就来详细的盘点Python操作E ...

  2. 数学建模_随机森林分类模型详解Python代码

    数学建模_随机森林分类模型详解Python代码 随机森林需要调整的参数有: (1) 决策树的个数 (2) 特征属性的个数 (3) 递归次数(即决策树的深度)''' from numpy import ...

  3. python split函数 空格_最易懂的Python新手教程:从基础语法到代码详解

    导读:本文立足基础,讲解Python和PyCharm的安装,及Python最简单的语法基础和爬虫技术中所需的Python语法. 作者:罗攀 蒋仟 如需转载请联系华章科技 本文涉及的主要知识点如下: P ...

  4. kmeans python interation flag_机器学习经典算法-logistic回归代码详解

    一.算法简要 我们希望有这么一种函数:接受输入然后预测出类别,这样用于分类.这里,用到了数学中的sigmoid函数,sigmoid函数的具体表达式和函数图象如下: 可以较为清楚的看到,当输入的x小于0 ...

  5. python语法错误概述_Python 错误和异常代码详解

    程序中的错误一般被称为 Bug,无可否认,这几乎总是程序员的错... 程序员的一生,始终伴随着一件事 - 调试(错误检测.异常处理).反反复复,最可怕的是:不仅自己的要改,别人的也要改...一万头草泥 ...

  6. python批量删除文件名中的下划线-代码详解

    删除文件名中的下划线 代码示例: 代码详解 对于文件名中出现的"_",如(500_600),将下划线消除,替换为(500600) 代码示例: import osdef rename ...

  7. python 协程可以嵌套协程吗_Python | 详解Python中的协程,为什么说它的底层是生成器?...

    今天是Python专题的第26篇文章,我们来聊聊Python当中的协程. 我们曾经在golang关于goroutine的文章当中简单介绍过协程的概念,我们再来简单review一下.协程又称为是微线程, ...

  8. 如何在python制作计算器_Python简易计算器制作方法代码详解

    主要用到的工具是Python中的Tkinter库 比较简单 直接上图形界面和代码 引用Tkinter库 from tkinter import * 建立主窗口对象 window=Tk() #设置窗口对 ...

  9. python中random库中shuffle_[宜配屋]听图阁 - 详解Python中打乱列表顺序random.shuffle()的使用方法...

    之前自己一直使用random中 randint生成随机数以及使用for将列表中的数据遍历一次. 现在有个需求需要将列表的次序打乱,或者也可以这样理解: [需求]将一个容器中的数据每次随机逐个遍历一遍. ...

最新文章

  1. yii2快速導出phpexcel
  2. 七月在线数据结构视频教程一
  3. 全球及中国植物脂肪酸行业供给前景与需求规模预测报告2022版
  4. 在IOS XR上配置BFD
  5. 灯也能玩出花样?炫彩灯带!
  6. 去BAT面试完的Mysql面试题总结(55道)
  7. N点虚拟主机管理系统(For Windows2003/2008)功能及介绍
  8. VirtualBox虚拟机配置CentOS7网络图文详解教程
  9. 中教云教师备课云平台获北京市新技术新产品(服务)认定
  10. scheduled 每月最后一天_单周、双周、每月?哪种定投方式收益最高?
  11. 游戏开发之使用类封装动态数组(vector)(C++基础)
  12. mysql concat算法_MySQL CONCAT()用法及代码示例
  13. Kibana将语言设置为中文
  14. 数据清洗Chap5——数据转换
  15. 《大数据之路》阅读笔记--数据同步
  16. 视频营销自动赚钱秘诀
  17. 软件测试之逻辑思维题
  18. 简单的收支记账软件的实现详细解释(不连接数据库)
  19. SGE安装部署完整过程-基于CentOS7
  20. JVM内存模型(一篇足以)

热门文章

  1. vSAN其实很简单-如何处理“vSAN磁盘写满”问题?
  2. Java设计模式学习总结(15)——行为型模式之责任链模式
  3. Mysql学习总结(36)——Mysql查询优化
  4. linux手动安装unzip_怎样在Linux下搭建接口自动化测试平台?
  5. RocketMQ源码分析之从官方示例窥探:RocketMQ事务消息实现基本思想
  6. centos 6.5 zabbix 离线安装历程
  7. CGContextRef使用简要教程
  8. jmeter JDBC 连接数据库
  9. java并行计算Fork和Join的使用
  10. SCCM2012 R2系统部署时,客户端报0x80004005错误(2)