职场必备技能2自动化办公excel操作

目录

一、介绍excel

二、应用场景:----可以完成什么操作

生活中遇见的场景

三、下载

四、excel模块

3.1、xlrd

语法:

案例: 算2020年与2021收入差距是多少 

3.2、openpyxl

语法 

案例1:计算一年的工资--12个月

案例2:新建sheet页,添加数据

效果:

案例3:九九乘法表

3.3、两个模块的区别

五、生成器

六、案例

抓取链家的长沙市所有房价,放到excel文档中,爬了一页

 代码演示:

最后效果:

七、思维导图总结


一、介绍excel

Excel是一种电子表格软件,由微软公司开发和发布。它是一种用于数据分析、计算和管理的工具,可以用于创建、编辑和组织数据表格,进行数据分析和图表制作等。Excel具有强大的计算功能和丰富的数据处理功能,被广泛应用于商业、金融、教育、科研等领域。Excel的文件格式为.xlsx,它可以在Windows、Mac和其他操作系统上运行。

excel有不同的sheet页,每个sheet页,也有不同的内容 先获得对应的sheet页

二、应用场景:----可以完成什么操作

1. 数据处理和分析:将数据从数据库或其他数据源中提取出来,然后用Python写入到Excel文件中,以便进行进一步的数据处理和分析。

2. 数据报告和可视化:将数据以图表、表格等形式写入Excel文件,以便生成数据报告和可视化分析结果。

3. 自动化报表生成:通过Python编写程序,自动从数据源中提取数据,并将其写入Excel文件,以生成定期报表。

4. 数据导出:将Python程序处理后的数据导出到Excel文件中,以便与其他人分享或进行进一步处理。

5. 数据备份:将Python程序处理后的数据写入Excel文件,以便进行数据备份和存档。

生活中遇见的场景

①把mysql数据导入到excel文件中,然后报错了导出来日期类型是反着的,格式对不上

列:MySQL的格式:2023/12/12       excel:12/12/2023

解决办法:写个pythin脚本改变它

把文件读出来放到页面上去,通过集合去调用一遍

②准备一个excel文件通过python程序去读取excel文件内容

通过selenium打开网站过selenium方法,往输入框中填入对应的内容,然后会控制它去点击,点击提交

三、下载

注:excel不是python自带的,要求下载

pip install xlrdpip install openpyxl

四、excel模块

3.1、xlrd

用于从Excel文件中读取数据,支持读取旧版本的Excel文件(xls格式),但不支持写入或修改Excel文件。xlrd可以用于读取Excel文件中的单元格数据、格式、公式等内容。

语法:

导入以有模块

from  xlrd import  open_workbook


 打开文件

wb=open_workbook('hh.xlsx')

根据名字拿

s1=wb.sheet_by_name('2020')

 拿列 从0开始

s1.col_values(1)

案例: 算2020年与2021收入差距是多少 

from  xlrd import  open_workbook# 打开文件
wb=open_workbook('hh.xlsx')# 根据名字拿
s1=wb.sheet_by_name('2020')# 算出总数
# sum(s1.col_values(1))# 从0开始  拿第二列
print([c for c in s1.col_values(1)])# 2020年收入
s1=wb.sheet_by_name('2020')
t1=sum(s1.col_values(1))# 2021年收入
s2=wb.sheet_by_name('2020')
t2=sum(s2.col_values(1))print(t2-t1)

注意: 版本必须是1.2以下的

 

3.2、openpyxl

 

语法 

  导入模块

from openpyxl import load_workbook

读取以有文档

load_workbook('放你要读取的文档') 

 wb就是一个工作表(拿到整文档) 

wb = load_workbook('hh.xlsx');

获取默认的那个sheet页

s1=wb.active 
切换sheet页
#s2=wb['放sheet页名字']
s2=wb['2020']
新建一个sheet页
wb.create_sheet(title='')
获取所有sheet页
方法一: 
wb.sheetnames
方法二:
for sheet in wb:print(sheet.title)
获得sheet页的名字
.title

单独只定某个格子 F4列

方式一:
wb['F4']=内容
方式二:
获取单元格col\row列和行
ws3.cell(colum=col,row=row,value="")
切片方式可以访问多个单元格--用名字
cell_range=ws['A1':'C2']
读多个格子iter_row---用区域来读
注:从1开始读取到3列,读取到第2行
for row in ws.iter_row(min_row=1,max_col=3,max_row=2):for cell in row:print(cell)
获取所有行---每一行都是元组,里面有很多单元格
ws.rows
获取所有列
ws.columns
 ws3 ['AA10'].value
注:不好调

案例1:计算一年的工资--12个月

方法一:
wb = load_workbook('hh.xlsx');
# 选中sheet页
s1 = wb['2020']total = 0
# 拿到需要的数据 拿12行
for i in range(1, 13):# 通过列方法拿 拿到工资数字在第二行# 测试一下# print(s1.cell(row=i,column=2).value)# 每进来一次total += s1.cell(row=i, column=2).valueprint(total)
#最后保存就可以了

方法二 

wb = load_workbook('hh.xlsx');
# 选中sheet页
s1 = wb['2020']# 获取第二行---遍历当前列
cs=s1.iter_cols(min_row=1,max_row=12,min_cil=2,max_col=2)# 方式二列表推导式
cs=[c for c in cs ][0]
# 拿到所有值
cs=[c.value for c in cs]
# 求和并保存就可以了
print(sum(cs))# 方式一遍历
# for c in cs:
#     for c in c:

案例2:新建sheet页,添加数据

# 导入
from openpyxl import load_workbook
wb = load_workbook('hh.xlsx');
s3 = wb.active
s3 = wb.create_sheet(title='2023')
# 遍历
for i in range(10):# append添加内容s3.append(range(5))# 保存
wb.save('demo.xlsx')

效果:

案例3:九九乘法表

注:#新建sheet页,但新建出来必定有不用新建,只需要拿当前sheet页

# 导入
from openpyxl import Workbook# 新建
wb = Workbook()# 获取默认sheet页
s1 = wb.active# 改个名字
s1 = title = '九九乘法表'
# 放内容--->循环
for i in range(1, 10):for j in range(1, i+1):# 拿到单元格s1.cell(row=i,column=j,value=f'{i}*{j}={i*j}')wb.save('99.xlsx')

效果: 

用于读取、写入和修改Excel文件,支持读取和写入新版本的Excel文件(xlsx格式)。openpyxl可以用于创建新的Excel文件、读取和修改现有文件中的数据、样式、图表等内容。

3.3、两个模块的区别

①1.2.0之后的版本不支持xlsx格式,openpyxl都支持

②xlrd只读取,openpyxl可以读取也可以新建修改

③读取速度比较:xlrd比openpyxl快

④ 老版新建出来教工作表,新版新建出来叫工作簿

格式:xls(老版的) xlsx(新版的---2013后面)

问题:为什么xlrd不支持新版的xlsx格式,而支持xls老版的?

回答:xlrd是一个Python模块,用于从Excel文件中读取数据。它最初是为了处理旧版本的Excel文件(xls格式)而设计的,因为在xlrd被开发的时候,xlsx格式还没有成为主流。xls格式是二进制格式,而xlsx格式是基于XML的开放格式。

当xlsx格式成为主流并且对其读取需求增加时,openpyxl模块应运而生,提供了对新版本Excel文件的读取、写入和修改功能。因此,虽然xlrd不支持新版的xlsx格式,但可以使用openpyxl模块来满足对新版本Excel文件的处理需求。

总的来说,xlrd不支持新版的xlsx格式是因为它最初设计时的用途是处理旧版本的Excel文件,而openpyxl则专门用于处理新版本的Excel文件。

五、生成器

简介:生成器(generator)是一种特殊的迭代器,它可以在迭代过程中动态生成值,而不需要一次性将所有值存储在内存中。生成器使用 yield 关键字来返回值,并且可以暂停和继续执行,这使得它们非常灵活和高效。生成器可以通过 for 循环来迭代,也可以使用 next() 函数来逐个获取值。生成器可以大大节省内存空间,特别适用于处理大数据集或者需要动态生成值的情况。注:
生成器不能中括号,只能遍历

六、案例

抓取链家的长沙市所有房价,放到excel文档中,爬了一页

注: for i in names:这个遍历的是元素  --->是没有下标的---->所有用生成器enumerate

  房价的名字:

 房价的价格:

 代码演示:

from requests_html import  HTMLSession
from  openpyxl import  Workbook# 发请求的对象
session=HTMLSession();# 拿到响应码
resp=session.get('https://cs.fang.lianjia.com/loupan/')# 拿到对应网站
html=resp.html# 如果是异步请求,要渲染---但是下面有下一页会报错
# html.render()# 测试是否拿到数据
# print(html.text)# 拿到房子的名字和价格
names=[t.text for t in html.find(".resblock-name .name")]
# print([t.text for t in html.find(".resblock-name .name")])prices=[t.text for t in html.find(".main-price .number")]
# print([t.text for t in html.find(".main-price .number")])# 新建excel
wb=Workbook()# 拿到默认的工作页
s1=wb.active# 遍历
for i,v in enumerate(names):#  写入  i下标 v内容# 名字 i+1因为从1开始s1.cell(row=i+1,column=1,value=v)# 价格s1.cell(row=i+1,column=2,value=prices[i])#保存
wb.save('lj.xlsx')

出现的报错:网络超时,重新运行就好 


 

最后效果:

七、思维导图总结

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/607964.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

探讨JS混淆技术及其加密解密实例

引言 在当前计算机科学领域中,保护软件代码的安全性和隐私性变得愈发重要。为了防止黑客攻击和恶意软件分析,开发人员采用各种技术来混淆和加密其代码,其中包括JS混淆技术。本文将介绍JS混淆技术的原理和应用,并提供一些相关的加密…

十、HTML 样式- CSS

CSS (Cascading Style Sheets) 用于渲染HTML元素标签的样式。 一、实例 1、HTML使用样式 本例演示如何使用添加到 <head> 部分的样式信息对 HTML 进行格式化。 <!DOCTYPE html> <html><head><meta charset"utf-8"><title>HTM…

用sql计算两个日期的间隔天数 ,去除周末

快递行业&#xff0c;经常需要计算2个节点的时效&#xff0c;有的计算自然日&#xff0c;有时候需要计算去掉周末的时效&#xff0c;计算自然日很简单&#xff0c;用函数datediff 就可以了&#xff0c;计算工作日时效&#xff0c;我的实现方法如下&#xff0c;借助了一个日期维…

多线程-生产者消费者模型

一、基本信息 1、场景介绍&#xff1a;厨师和吃货的例子&#xff0c;吃货吃桌子上的面条&#xff0c;吃完让厨师做&#xff0c;厨师做完面条放桌子上&#xff0c;让吃货吃&#xff0c;厨师如果发现桌子上有面条&#xff0c;就不做&#xff0c;吃货发现桌子上没有面条就不吃。 …

校招行测,认知能力测验,④破解数量关系测试题

数量关系&#xff0c;值得是数量计算、对比和分析&#xff0c;每种题型都有一定的规律性&#xff0c;如果善于终结也是容易掌握的&#xff0c;当然&#xff0c;只有见多&#xff0c;才能识广&#xff0c;最好的方式就是&#xff0c;锻炼&#xff0c;刷题&#xff0c;就算是临时…

QT应用篇:QT解析与生成XML文件的四种方式

四种常见的解析 XML 的方式(DOM、SAX、以及基于 Qt 的 XmlStreamReader)各有自己的优缺点,适合不同的应用场景。 DOM 适合小型且结构简单的 XML 文件,需要频繁修改和操作整个文档结构的情况。SAX 适合大型 XML 文件,以及只需读取不需要修改的情况。基于 Qt 的 XmlStreamRe…

12V 全桥驱动芯片GC9008——可替代TMI8118,应用于摄像机、消费类产品上

GC9008 是一款 12V 全桥驱动芯片&#xff0c;为提供高性价比的方案。它能提供 0.1A 的持续输出电流。可以工作在 4.5~15V 的电源电压上。 具有 PWM&#xff08;IN1/IN2&#xff09;输入接口,与行业标准器件兼容.是 SOP8封装&#xff0c;GC9008D是DIP封装芯片特点 ● H 桥电机驱…

使用 CompletableFuture 分批处理任务

一、无返回值任务函数 // 数据分批 List<List<StatisticsDTO>> batches Lists.partition(statisticsList, BATCH_SIZE); List<CompletableFuture<Void>> futures new ArrayList<>(batches.size());// 数据处理 for (int i 0; i < batches…

【linux】更改infiniband卡在Debian系统的网络接口名

在Debian或任何其他基于Linux的系统中&#xff0c;网络接口的名称由udev系统管理。通过创建udev规则&#xff0c;可以修改网络接口名称。以下是更改InfiniBand卡接口名称的一般步骤&#xff1a; 1. 找到网络接口的属性&#xff0c;以编写匹配的udev规则 可以使用udevadm命令查…

4.6 BOUNDARY CHECKS

我们现在扩展了tile矩阵乘法内核&#xff0c;以处理具有任意宽度的矩阵。扩展必须允许内核正确处理宽度不是tile宽度倍数的矩阵。通过更改图4.14中的示例至33 M、N和P矩阵&#xff0c;图4.18创建了矩阵的宽度为3&#xff0c;不是tile宽度&#xff08;2&#xff09;的倍数。图4.…

Spring事务控制

1.事务介绍 1.1什么是事务&#xff1f; 当你需要一次执行多条SQL语句时&#xff0c;可以使用事务。通俗一点说&#xff0c;如果这几条SQL语句全部执行成功&#xff0c;则才对数据库进行一次更新&#xff0c;如果有一条SQL语句执行失败&#xff0c;则这几条SQL语句全部不进行执…

window mysql5.7 搭建主从同步环境

window 搭建mysql5.7数据库 主从同步 主节点 配置文件my3308.cnf [mysql] # 设置mysql客户端默认字符集 default-character-setutf8mb4[mysqld] server-id8 #server-uuidbc701be9-ac71-11ee-9e35-b06ebf511956 log-binD:\mysql_5.7.19\mysql-5.7.19-winx64\mysql-bin binlog-…

性能分析与调优: Linux 内存观测工具

目录 一、实验 1.环境 2.vmstat 3.PSI 4.swapon 5.sar 6.slabtop 7.numstat 8.ps 9.top 10.pmap 11.perf 12.bpftrace 二、问题 1.接口读写报错 2.slabtop如何安装 3.numactl如何安装 4.numad启动服务与关闭NUMA 5. perf如何安装 6. kernel-lt-doc与kern…

Vue3+Vite打包跨平台(七牛、阿里OSS)上传部署前端项目

1、业务场景 阅读之前&#xff0c;想了解一下各位观众老爷们&#xff0c;你们公司的项目是怎么部署的&#xff1a; 1.本地打包手动上传服务器&#xff1b; 2.本地打包自动上传服务器&#xff1b; 3.代码仓库流水线自动构建&#xff1b; 4.其他…&#xff1b; 我们用的第3种部…

前端中什么是DOM对象

DOM&#xff08;文档对象模型&#xff09;是一种编程接口&#xff0c;用于HTML和XML文档。它提供了一种将文档结构表示为树结构的方式&#xff0c;这使得程序和脚本能够动态地访问和更新文档的内容、结构和样式。 在前端开发中&#xff0c;DOM是非常重要的概念。当浏览器加载网…

认知能力测验,⑥如何破解逻辑判断类测试题?

逻辑思维&#xff0c;是一个比较大的范围&#xff0c;在绝大多数的招聘中&#xff0c;认知能力测评形式多样&#xff0c;难度也较大&#xff0c;其中逻辑判断题型所涉及到的分类为&#xff1a;概念类、条件类、矛盾类、数字类、图形类等知识。比如奥数就是个好东西.....如果经历…

Go语言日志美化库,slog使用指南

Go语言日志美化库&#xff0c;slog使用指南 1.slog2.快速开始3.使用JSON格式4.Text格式化formatter 1.slog slog是Go 实现的一个易于使用的&#xff0c;易扩展、可配置的日志库 slog - github 控制台效果&#xff1a; 安装方式&#xff1a; go get github.com/gookit/slog2…

RAG 最新最全资料整理

最近在做RAG方面的工作。它山之石可以攻玉&#xff0c;做了一些调研&#xff0c;包含了OpenAi&#xff0c;百川&#xff0c;iki.ai为我们提供的一些实现方案。 本文以时间顺序&#xff0c;整理了最近最新最全的和RAG相关的资料。都是满满的干货&#xff0c;包含了RAG评测工具、…

TOPS、MIPS、DMIPS、MFLOPS、吞吐量与推理效率

1.概述 在深度学习对应的神经推理中经常涉及几个重要概念&#xff0c;TOPS、MIPS、DMIPS&#xff0c;MFLOPS&#xff0c;下文对其做对比说明。 2.概念对比 2.1 MIPS Million Instructions Per Second的缩写&#xff0c;每秒处理的百万级的机器语言instructions。这是衡量处…

【单片机】四种烧写方式简介

目录 单片机的四种烧写方式简介 1.使用JTAG接口实现2.SWD接口烧录方式3.ISP烧写方式&#xff0c;用UART实现&#xff08;常用&#xff09;4.SWIM单总线下载方式 烧录方式基本介绍烧录方式详述 1、ISP&#xff1a;In System Programming2、IAP&#xff1a;In Applicatin Program…