python下载晚上excel_Python自动操控excel,一小时解决你一天的工作

过去,在很多金融、市场、行政的招聘中,面试官都会问一句:“你精通 EXCEL 吗?”

但今天,他们可能更喜欢问:“你会 Python 吗?”

越来越多的企业开始用 Python 处理数据,特别是金融、证券、商业、互联网等领域。在顶级公司的高端职位中,Python 更是成为了标配:

Python 究竟有什么法力能让大家如此青睐?

举个例子:

在过去,如果老板想要获取 A 股所有股票近 2 年的数据,你可能需要 查询-下载-记录到excel 循环数百次,即使你是一个没有感情的复制机器人,也需要一两天的时间。

但如果你掌握了 Python,只需要写个脚本,泡杯咖啡的功夫数据就全部下载好了。再加上 Python 强大的绘图功能,你可以一次性完成 数据收集 — 整理 — 分析 — 绘图的过程,直接把分析结果用图表呈现出来。

今天本篇文章,我们就总结了一下利用 python 操作 Excel 文件的第三方库和方法。

首先,我们来学习一下,如何 用 Python 创建和保存 Excel 文档。

对于经常与数据打交道的人来说,Excel 是经常使用的工具;对于与数据打交道的程序员来说,OpenPyXL 库是一个利器。Python 官方提供了这样一个库,让我们可以直接通过 Python 代码实现对 Excel 文件的操作,操作文件格式包括 xlsx、xlsm、xltx、xltm。

知识点

创建/打开工作簿

访问工作表单元及其值

保存工作表

让我们先来学习简单的创建和保存功能。

创建/打开工作簿

首先,下载实验所需 shiyanlou.xlsx 示例文件,同时安装指定版本的 openpyxl 库。

!wget -nc "https://labfile.oss.aliyuncs.com/courses/1585/shiyanlou.xlsx"

!pip install openpyxl==3.0.3

使用 openpyxl 不需要在文件系统上创建文件,只需导入 Workbook 类并开始工作:

教学代码:

from openpyxl import Workbook

wb = Workbook() # 实例化一个工作簿对象

print(wb)

也可以打开本地已有的工作簿进行实验操作:

from openpyxl import load_workbook

wb = load_workbook(filename='shiyanlou.xlsx')

print(wb)

load_workbook 中可以使用以下几个参数:

data_only:带有公式的单元格是否具有公式(默认具有)或上一次 Excel 读取工作表时存储的值。

keep_vba:设置是否保留任何 Visual Basic 元素(默认保留),可选择保留但是不支持编辑。

工作簿创建时总是会默认创建一个名为 Sheet 工作表,可以通过使用Workbook.active 属性获取:

ws = wb.active # 获取当前活跃的工作表

print(ws)

也可以通过 Workbook.create_sheet() 创建工作表并命名,若不设置名字参数则默认命名为 sheet,sheet1,sheet2...创建的工作表位置默认总是插入到最后:

ws = wb.create_sheet() # sheet

ws1 = wb.create_sheet("Mysheet") # 命名为 Mysheet

ws2 = wb.create_sheet("Mysheet1", 0) # 新建 Mysheet1 工作表插入到第一个位置

ws3 = wb.create_sheet("Mysheet2", -1) # 新建 Mysheet2 工作表插入到倒数第二个的位置

ws.title = "shiyanlou" # 将上述 ws 工作表重命名为 shiyanlou

print("Success")

默认情况下,工作表的标签背景颜色为白色。我们可以通过Worksheet.sheet_properties.tabColor 属性改变颜色:

ws.sheet_properties.tabColor = "1072BA" # RGB 格式

print(ws.sheet_properties.tabColor)

我们给工作表取名后,可以把它作为该工作簿的一个键,简化后续代码,例如:

ws = wb["shiyanlou"]

print(ws)

若想查看该工作簿下的所有工作表,可以通过函数 Workbook.sheetname:

print(wb.sheetnames)

也可以通过迭代的方式打印所有工作表

for sheet in wb:

print(sheet.title)

我们可以通过 Workbook.copy_worksheet() 方法在单个工作簿中创建工作表的副本:

source = wb.active # 获取活跃的工作表

target = wb.copy_worksheet(source) # 上述获取的工作表为其创建副本

print(target)

访问工作表单元及其值

前面我们已经知道了如何创建获取工作簿及工作表,接下来我们将学习修改单元格的内容。以下操作基于 shiyanlou.xlsx 工作簿中的 shiyanlou 工作表进行。

单元格可以直接作为工作表的键进行访问赋值,用 value 属性进行值访问:

c = ws['A4'] # 将访问 A4 单元格

ws['A4'] = 4 # 对 A4 单元格进行赋值

c.value # 访问 A4 单元格的值,同 ws['A4'].value

注意:在内存中创建工作表时,它不包含任何单元格,单元格都是在首次访问时自动创建的。

以上代码也可以通过更简便的代码实现:

d = ws.cell(row=4, column=2, value=10) # B4 进行赋值

ws['B4'].value # 访问单元格的值

访问多个单元格

可以使用切片访问范围为 A1 到 C2 的所有单元格:

cell_range = ws['A1':'C2']

cell_range

行或列的范围可以类似地获得:

# 访问列

colC = ws['C']

col_range = ws['C:D']

# 访问行

row10 = ws[10]

row_range = ws[5:10]

print(col_range, row_range)

也可以使用 Worksheet.iter_rows() 返回行:

for row in ws.iter_rows(min_row=1, max_col=3, max_row=2):

for cell_row in row:

print(cell_row)

使用 Worksheet.iter_cols() 返回列:

for col in ws.iter_cols(min_row=1, max_col=3, max_row=2):

for cell_col in col:

print(cell_col)

如果需要遍历工作表的所有行或列,则可以使用 Worksheet.rows 属性。出于性能原因,该属性在只读模式下不可用:

ws['C9'] = 'hello world'

tuple(ws.rows)

或者使用 Worksheet.columns 属性。出于性能原因,该属性在只读模式下不可用:

tuple(ws.columns)

访问值

如果只需要工作表中的值,则可以使用该 Worksheet.values 属性。

遍历工作表中的所有行,但仅返回单元格值:

for row in ws.values:

for value in row:

print(value)

Worksheet.iter_rows() 和 Worksheet.iter_cols() 可以用 values_only 参数,只返回单元格的值:

for row in ws.iter_rows(min_row=1, max_col=3, max_row=2, values_only=True):

print(row)

保存工作表

将我们之前创建的工作簿保存格式为 xlsx 的文件,若已存在则覆盖:

wb.save("shiyanlou.xlsx")文源网络,仅供学习之用,如有侵权,联系删除。

我将优质的技术文章和经验总结都汇集在了我的公众号【Python圈子】里。

在学习Python的道路上肯定会遇见困难,别慌,我这里有一套学习资料,包含40+本电子书,600+个教学视频,涉及Python基础、爬虫、框架、数据分析、机器学习等,不怕你学不会!

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

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

相关文章

java 注释 过时_Java 注解

前言为什么需要学习注解?1.能够灵活地使用框架提供的注解,最后能够读懂框架的源码2.能够配合反射将代码书写更加的灵活,更加易于维护易于扩展,Properties配置,XML配置,注解配置[Java配置]3.极大程度地简化了代码,提高了代码的可读性注解的概述Java提供了一种源程序中元素和任何…

python模拟登录淘宝直通车_Python实现的淘宝直通车数据抓取(1)

最近帮一个朋友做一个抓取淘宝直通车数据的小项目,感觉ython比较适合写爬虫程序,决定使用Python来做程序。首先是登陆程序,因为淘宝的登陆校验很复杂,所以不能直接使用命令行的形式输入账号密码。查阅资料后,发现可以使…

java的serversocket_Java ServerSocket 实现聊天室功能(简易版)

大体实现功能可以选择房间,可以与房间中的用户进行实时的交流说在前面的话:serverSocket.accept() 会形成阻塞scanner.hasNextLine() 和 scanner.nextLine() 也会形成阻塞windows 下需要打开telnet服务。请自行百度实现思路:用户连接上服务器后选择房间号&#xff0…

python爬虫验证码的识别_Python爬虫识别验证码

Python爬虫识别验证码安装tesserocrpip3 install tesserocr pillow识别测试将验证码图片放到项目根目录下,用tesserocr库识别该验证码,代码如下所示:import localelocale.setlocale(locale.LC_ALL, C)import tesserocrfrom PIL import Imagei…

python对象属性赋值_关于python对象 中dict属性赋值的疑问

下面这段代码 很奇怪把两个对象放在一个 list中然后循环操作两个对象 中 一个dict key的数值但是循环操作输出的时候发现两个对象的 值会叠加#!/usr/bin/env pythonclass test:base {score : 100}def setBase(self, score):self.base[score] scoredef addScore(self):self.se…

java mysql jsp分页代码_JSP实现数据库分页显示源代码例

JSP实现数据库分页显示源代码例2018-11-25分页显示数据库信息分页显示数据库记录用户名性别电话E-Mailtry{//驱动程序名String driverName"sun.jdbc.odbc.JdbcOdbcDriver";//连接字符串String url"jdbc:odbc:userdata";//加载驱动程序Class.forName(driver…

java解压zip异常_java解压zip文件示例

若是使用Java自带的压缩工具包来实现解压缩文件到指定文件夹的功能,因为jdk提供的zip只能按UTF-8格式处理,而Windows系统中文件名是以GBK方式编码的,所以如果是解压一个包含中文文件名的zip包,会报非法参数异常,所以要…

ensp删除所有命令_HCIA学习笔记——eNSP配置NAT技术

今天用华为的eNSP做了关于NAT的实验,我把它发了出来,有需要的小伙伴可以收藏一下。分别配置了静态的NAT,NAT Outbound配置,Easy IP配置,NAT server配置。接口配置如图所示。在网关路由器上配置访问外网的默认路由。配置…

java怎么设置背景_如何在Java中设置背景图片?

小编典典根据应用程序或小程序是使用AWT还是Swing,答案会略有不同。(基本上,以J诸如JApplet和JFrame为开头的类是Swing和Appletand Frame是AWT。)无论哪种情况,基本步骤都是:将图像绘制或加载到Image对象中。在要绘制背景的绘画事…

python调用selenium的get_Python – selenium webdriver在循环中停留在.get()

我有一个Python代码片段,它使用Selenium Webdriver来循环一些历史性的棒球赔率.代码的第一部分旨在从调度表(包含大约57个需要循环的页面)中获取所有单独的游戏URL,并将它们存储在列表中.我第一次测试它它工作得很好 – 现在,无论出于何种原因,driver.get()函数似乎无法正常工作…

java什么叫元素_什么是Java做什么 - 每个元素使它们成为对象类型?

这个问题关于如何处理Java for-each循环中的元素。我有一个哈希表,它是一个LinkedLists数组。 LinkedList节点的数据部分包含TableEntry,其中K和V是键和值类型。我写了一个for循环来查看LinkedList中的每个TableEntry,检查一个键是否等于Tabl…

python读取dicom文件的包_python 读取DICOM头文件的实例

用dicompyler软件打开dicom图像,头文件如图所示:当然也可以直接读取:ds dicom.read_file(H:Datadata216622.16.840.1.113662.2.0.105002416.1489146183.701CTCT#0#21662#E7AB693D.dcm)print ds>>(0008, 0008) Image Type CS: [ORIGINA…

java程序员用代码写的情书_用代码写的三行情诗,你懂得程序员的浪漫吗?

原标题:用代码写的三行情诗,你懂得程序员的浪漫吗?在一般人眼里,程序员是一群古板,技术宅,不懂得浪漫的屌丝,但其实这些大神们浪漫起来也是相当可以的!下面让我们来看一下程序员们用…

对比四大企业级linux版本_Linux家族族谱

大体上来讲,Linux分为两个生态体系,红帽和debian。商业版本以Redhat为代表,开源社区版本则以debian为代表。红帽家族redhat :红帽自家服务器centos :基于红帽重新封装的去掉版权信息的免费版本fedora :基于…

java编写静态工具类_Java编程中静态内部类与同步类的写法示例

java静态内部类将某个内部类定义为静态类,跟将其他类定义为静态类的方法基本相同,引用规则也基本一致。不过其细节方面仍然有很大的不同。具体来说,主要有如下几个地方要引起各位程序开发人员的注意。(一)一般情况下,如果一个内部…

python流量实时统计_Python实现获取nginx服务器ip及流量统计信息功能示例

本文实例讲述了Python实现获取nginx服务器ip及流量统计信息功能。分享给大家供大家参考,具体如下:#!/usr/bin/python#codingutf8log_file "/usr/local/nginx/logs/access.log"with open(log_file) as f:contexts f.readlines()# define ip d…

java实验1机动车实验目的_《Java程序设计》实验指导书.doc

《Java程序设计》实验指导书实验一、熟悉JDK环境及主要命令一、实验目的1) 熟悉JDK的环境配置2) 掌握JDK的命令3) 掌握Java Application程序的开发过程,并编写一个Java Application程序二、实验内容1.按照上课所学知识,为自己的机器配置环境变…

python selenium 下载文件_Python Selenium —— 文件上传、下载,其实很简单

很多selenium学习者被浏览器弹出的文件上传、下载框折磨的痛不欲生,今天博主就带你们轻松搞定上传和下载问题。上传上传弹框文件上传是所有UI自动化测试都要面对的一个头疼问题,要处理这个问题,我们需要:首先,要区分出…

mysql vim 命令_Vim基本命令必知必会

光标移动定位方式hjkl (强例推荐使用其移动光标,但不必需) →你也可以使用光标键 (←↓↑→). 注: j 就像下箭头0 → 数字零,到行首^ → 到本行第一个不是blank字符的位置(所谓blank字符就是空格,tab,换行,回车等)$ →…

python执行语句转换成str_python3.x,_python3.4.3如何转换str字符串?,python3.x - phpStudy...

python3.4.3如何转换str字符串?#codingutf8import pymssqlclass MSSQL:def __init__(self,host,user,pwd,db):self.host hostself.user userself.pwd pwdself.db dbdef __getConnect(self):"""得到连接信息返回: conn.cursor()"…