相关文章:

python处理Excel实现自动化办公教学(含实战)【一】

python处理Excel实现自动化办公教学(含实战)【二】

python处理Excel实现自动化办公教学(数据筛选、公式操作、单元格拆分合并、冻结窗口、图表绘制等)【三】


相关码源:B站python资料.zip-数据挖掘文档类资源-CSDN下载

1.写入Excel文档

  • OpenPyXL 也提供了一些方法写入数据,这意味着你的程序可以创建和编辑电子表格文件。利用Python创建一个包含几千行数据的电子表格是非常简单的。
  • 调用 openpyxl.Workbook()函数,创建一个新的空 Workbook 对象
import openpyxl

#创建一个新的工作簿对象
wb = openpyxl.Workbook() #获取工作表名称 两种写法
wb.get_sheet_names()
wb.sheetsnames
#给工作表设置名称 sheet = wb.get_active_sheet()
sheet = wb.active
sheet.title = '跟进记录表' wb.get_sheet_names()
#['跟进记录表'] #保存工作表
wb.save('./data/第一个工作簿.xlsx')

2.创建和删除工作表

  • 利用 create_sheet() and del方法,可以在工作簿中添加或删除工作表

    • create_sheet()方法返回一个新的 Worksheet 对象,名为 SheetX,它默认是工作 簿的最后一个工作表。可以利用 index 和 title 关键字参数,指定新工作表的 索引或名称。
    • remove_sheet()方法接受一个 Worksheet 对象作为其参数,而不是工作表名称的字符串。如果你只知道要删除的工作表的名称,就调用 get_sheet_by_name(),将它的返回值传入 remove_sheet()。[2.x版本]
    • 在工作簿中添加或删除工作表之后,记得调用 save()方法来保存变更。
  • 创建sheet
wb = openpyxl.Workbook()

wb.create_sheet(title='销售记录')
wb.create_sheet(index=1,title='养殖技术')#index决定放在的位置 <Worksheet "养殖技术"> wb.sheetnames
['Sheet', '养殖技术', '销售记录'] 删除sheet del wb['养殖技术']
wb.sheetnames ['Sheet', '销售记录']
  • 将值写入单元格

    • 将值写入单元格,很像将值写入字典中的键
    • 如果你有单元格坐标的字符串,可以像字典的键一样,将它用于 Worksheet 对 象,指定要写入的单元格。
sheet = wb["销售记录"]

sheet['A1'] = 'hello'
sheet['B2'] = 'world'
wb.save('./data/第二个工作簿.xlsx')

3.项目:更新一个电子表格

  • 这个项目需要编写一个程序,更新产品销售电子表格中的单元格。程序将遍 历这个电子表格,找到特定类型的产品,并更新它们的价格
  • 数据说明:
    • 每一行代表一次单独的销售。列分别是销售产品的类型(A)、产品每磅的价格(B)、销售的磅数(C),以及这次销售的总收入(D)。TOTAL列已经设置为 Excel公式,将每磅的成本乘以销售的磅数,并将结果取整到分。有了这个公式,如果列 B 或 C 发 生变化,TOTAL 列中的单元格将自动更新。
  • 现在假设 Garlic、Celery 和 Lemons 的价格输入的不正确。这让你面对一项无聊 的任务:遍历这个电子表格中的几万行,更新所有 garlic、celery 和 lemon 行中每磅 的价格。你不能简单地对价格查找替换,因为可能有其他的产品价格一样,你不希 望错误地“更正”。对于几万行数据,手工操作可能要几小时。但你可以编写程序, 几秒钟内完成这个任务。
  • 你的程序做下面的事情:

    • 循环遍历所有行。
    • 如果该行是 Garlic、Celery 或 Lemons,更新价格。
  • 这意味着代码需要做下面的事情:
    • 打开电子表格文件。
    • 针对每一行,检查列 A 的值是不是 Celery、Garlic 或 Lemon。 如果是,更新列 B 中的价格。 将该电子表格保存为一个新文件(这样就不会丢失原来的电子表格,以防万一)。
  • 需要更新的价格如下:
    • Celery 1.19
    • Garlic 3.07
    • Lemon 1.27
  • 利用更新信息建立数据结构

  • 这样硬编码产品和更新的价格有点不优雅。如果你需要用不同的价格,或针对不同的产品,再次更新这个电子表格,就必须修改很多代码。每次修改代码,都有引入缺陷的风险。
  • 更灵活的解决方案,是将正确的价格信息保存在字典中,在编写代码时,利用这个数据结构,如果需要再次更新这个电子表格,只需要更新 PRICE_UPDATES字典,不用修改其他代码。

#2.x版本
import openpyxl
wb = openpyxl.load_workbook('./data/produceSales.xlsx')
sheet = wb.get_sheet_by_name('Sheet') #获取工作表
PRICE_UPDATES = {'Garlic': 3.07,
'Celery': 1.19,
'Lemon': 1.27}
for rowNum in range(2, sheet.get_highest_row()+1):
produceName = sheet.cell(row=rowNum, column=1).value #遍历
if produceName in PRICE_UPDATES: #包含在字典中
sheet.cell(row=rowNum, column=2).value = PRICE_UPDATES[produceName]
wb.save('./data/updatedProduceSales.xlsx')
#3.x版本 推荐
import openpyxl
wb = openpyxl.load_workbook('./data/produceSales.xlsx')
sheet = wb["sheet"] #获取工作表
PRICE_UPDATES = {'Garlic': 3.07,
'Celery': 1.19,
'Lemon': 1.27}
for rowNum in range(2, sheet.max_row()+1):
produceName = sheet.cell(row=rowNum, column=1).value #遍历
if produceName in PRICE_UPDATES: #包含在字典中
sheet.cell(row=rowNum, column=2).value = PRICE_UPDATES[produceName]
wb.save('./data/updatedProduceSales.xlsx')

4.设置单元格风格样式

4.1设置字体

  • 设置某些单元格行或列的字体风格,可以帮助你强调电子表格中重点的区域。 例如,在这个产品电子表格中,程序可以对 产品的名称 等行使用粗体。 或者也许你希望对每公斤价格超过5元的行使用斜体。手工为大型电子表格的某些部分设置字体风格非常令人厌烦,但程序可以马上完成。【即:凸显】
  • 为了定义单元格的字体风格,需要从 openpyxl.styles 模块导入 Font和 Style。
  • Font参数:
from openpyxl.styles import Font,Style
import openpyxl
wb = openpyxl.Workbook()
sheet = wb.activate
sheet['A3'] = 'hello bobo'
sheet['A3'].font=Font(name="楷体") #Font(name=字体名称,size=字体大小,bold=是否加粗,italic=是否斜体,color=字体颜色)
"""
font.name 字体名称
font.size 字体大小
font.bold 是否加粗 返回的是布尔值
font.italic 是否斜体 返回的是布尔值
font.color 字体颜色 返回颜色类型和相关参数
""" wb.save('./data/Styles.xlsx')
sheet['A3'].style #返回当前单元格的默认风格

Style(number_format='General')

可以调用 Font()来创建一个 Font 对象,并将这个 Font 对象保存在一个变量中。 然后将它传递给 Style(),得到 的 Style 对象保存在一个变量中,并将该变量赋给 Cell 对象的 style 属性。

f = Font(sz=50,b=True,i=True)
s = Style(font=f)
sheet['A3'].style = s
wb.save('./data/Styles.xlsx')

4.2设置填充色

from openpyxl.styles import Font,PatternFil
import openpyxl
wb = openpyx1.Workbook()
sheet = wb.active
sheet['A4'] = '背景填充色'
sheet[ 'A4'].fill = PatternFill (patternType= 'solid' , fgColor= ' 8470FF' ) #RGB值:需要填写16进制
wb.save(' ./data/ Styles.xlsx' )

4.3 设置cell的边框样式

  • 需要使用Side, Boder类步骤:。
  1. 1.创建Side对象,通过构造方法参数style和color设置其边的样式和颜色。
  2. 2.设置ell的border属性,给其赋值为Border对象,且设置其上下左右边框为哪一个Side
from openpyx1.styles import Side,Border
import openpyxl
wb = openpyx1.Workbook( )
sheet = wb.active
sheet[ 'F4'] = ' 效果1'
sheet[ 'F5'] = ' 效果2'
#常见的style值: dashDot, dashDotDot, dashed, dotted, sigle......
s1 = Side(style= 'thin' ,color=' 8470FF' )
s2 = Side (style= ' double ' ,color=' ff0000')
sheet[ 'F4' ] .border = Border (top=s1 )
sheet[ 'F5' ] .border = Border ( top=s2 , bottom=s1,left=s2, right=s1)
wb.save( ' . /data/ cellBorder . xlsx' )

4.4 单元格对齐方式

from openpyxl. styles import Alignment
import openpyxl
wb = openpyxl.load_workbook( ' . /data/ cellBorder .xlsx')
sheet = wb[ ' Sheet']
c1 = sheet[ 'C1'].alignment = Alignment( horizontal= ' right' )
c2 = sheet['C2' ].alignment = Alignment(vertical= ' center ' )
c3 = sheet[ 'C3'].alignment = Alignment(vertical='top')
wb.save(' ./data/cel1Border. xlsx')

python处理Excel实现自动化办公教学(含实战)【二】的更多相关文章

  1. Python骚操作:Python控制Excel实现自动化办公!

    1.安装 ​ ​ 2.操作一个简单的Excel文档 操作注释及代码: ​ 操作完成后,数据存储结果如下: ​ 3. 操作简单Excel文档并添加数据格式 操作代码如下:附带数据格式的定义 ​ 操作效果 ...

  2. Python+Django+ansible playbook自动化运维项目实战☝☝☝

    Python+Django+ansible playbook自动化运维项目实战☝☝☝  一.入门引导 DevOPSDevOps(英文Development和Operations的组合)是一组过程.方法 ...

  3. Python+Django+ansible playbook自动化运维项目实战✍✍✍

    Python+Django+ansible playbook自动化运维项目实战  整个课程都看完了,这个课程的分享可以往下看,下面有链接,之前做java开发也做了一些年头,也分享下自己看这个视频的感受 ...

  4. Python+Django+Ansible Playbook自动化运维项目实战

    Python+Django+AnsiblePlaybook自动化运维项目实战 整个课程都看完了,这个课程的分享可以往下看,下面有链接,之前做java开发也做了一些年头,也分享下自己看这个视频的感受,单 ...

  5. python+requests+excel 接口自动化框架

    一.项目框架如图: 1.common :这个包都是一些公共的方法,如:手机号加解密,get/post接口请求的方法封装,接口鉴权,发邮件,读写excel文件方法等等 2.result:存放每次运行的l ...

  6. Python自动化运维开发实战 二、Python基本用法

    导语: Python编程博大精深,知识点众多,需要先整体上了解python的一些基本用法之后再去对每一个知识点细细研究,这样学习的速度会快很多.所以下面就先看一些python事先需要知道的基本知识. ...

  7. 是的,你没看错!Python可以实现自动化办公

    是的,你没看错!Python可以实现自动化办公 公众号[伤心的辣条],如今越来越多的人加入到学习Python的队伍当中,尤其是对于很多职场人来说,不管你是程序员还是非程序员,Python已经为很多职场 ...

  8. 【Selenium05篇】python+selenium实现Web自动化:读取ini配置文件,元素封装,代码封装,异常处理,兼容多浏览器执行

    一.前言 最近问我自动化的人确实有点多,个人突发奇想:想从0开始讲解python+selenium实现Web自动化测试,请关注博客持续更新! 这是python+selenium实现Web自动化第五篇博 ...

  9. 【Selenium06篇】python+selenium实现Web自动化:日志处理

    一.前言 最近问我自动化的人确实有点多,个人突发奇想:想从0开始讲解python+selenium实现Web自动化测试,请关注博客持续更新! 这是python+selenium实现Web自动化第六篇博 ...

  10. 【Selenium03篇】python+selenium实现Web自动化:元素三类等待,多窗口切换,警告框处理,下拉框选择

    一.前言 最近问我自动化的人确实有点多,个人突发奇想:想从0开始讲解python+selenium实现Web自动化测试,请关注博客持续更新! 这是python+selenium实现Web自动化第三篇博 ...

随机推荐

  1. 数组递增的判断【python实现】

    有时候需要对某一组数组的数据进行判断是否 递增 的场景,比如我在开发一些体育动作场景下,某些肢体动作是需要持续朝着垂直方向向上变化,那么z轴的值是会累增的.同理,逆向考虑,递减就是它的对立面. 下面是 ...

  2. python WordCloud matplotlib docx 简易生成docx报告

    # encode=utf-8 import numpy as np import matplotlib.pyplot as plt from docx import Document from doc ...

  3. 使用Python实现基本的学生管理系统

    本篇文章主要分享python学生管理系统的使用,文章非常详细地介绍了通过示例代码实现的学生管理系统,该系统对每个人的研究或工作都有一定的参考学习价值,希望你能在其中有所收获. 这个是用python实现 ...

  4. Java字节码与反射机制

    字节码(Byte Code)是Java语言跨平台特性的重要保障,也是反射机制的重要基础.通过反射机制,我们不仅能看到一个类的属性和方法,还能在一个类里调用另外一个类的方法,但前提是我们得有相关类的字节 ...

  5. 强烈建议收藏,python库大全

    Python常用库大全及简要说明 本文为大家罗列了Python开发的常用库和各个库的简要说明以及Python开发工具,包管理,环境管理等其它常用资源和Python学习资料.本文只罗列了一部分,完整内容 ...

  6. plsql打开报错:Control 'dxDockBrowserPanel' has no parent window问题解决

    一.现象: 使用plsql登陆oracle数据库时,登陆信息没有报错,但是最后一步报错,重启电脑依然没有解决 一直报:" Control 'dxDockBrowserPanel' has n ...

  7. BTC-协议

    BTC-协议 一个去中心化的数字货币要解决两个问题 1.谁有权发行货币 比特币的发行是由挖矿决定的(coinbase transaction 唯一一个产生新币的途径)比特币通过挖矿来决定货币的发行权, ...

  8. 每天学五分钟 Liunx 111 | 存储篇:NFS

    NFS NFS(Network File System,网络文件系统),它可以通过网络让不同操作系统,不同机器共享彼此的文件. NFS 分为服务端和客户端.服务端提供共享的文件目录,客户端将该目录挂载 ...

  9. zookeeper 集群环境搭建及集群选举及数据同步机制

    本文为博主原创,未经允许不得转载: 目录: 1. 分别创建3个data目录用于存储各节点数据 2. 编写myid文件 3. 编写配置文件     4.分别启动 5.分别查看状态 6. 检查集群复制情况 ...

  10. 【Printf】CubeMX生成MDK工程实现printf功能注意点

    重定向printf int fputc(int ch, FILE *f) { /* Write a character to the USART */ USART1->DR = ch; /* L ...