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

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

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

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

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

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

今天本篇文章,我们就总结了一下利用 python 操作 Excel 文件的第三方库和方法。内容出自课程——《OpenPyXL 处理 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控制excel能达到什么目的_你精通excel吗?不,我精通python操控excel!相关推荐

  1. python金融大数据分析师工资待遇_三年工作经验大佬带你解读 Python金融大数据分析...

    内容提要: Python凭借其简单.易读.可扩展性以及拥有巨大而活跃的科学计算社区,在需要分析.处理大量数据的金融行业得到了广泛而迅速的应用,并且成为该行业开发核心应用的首选编程语言.本书提供了使用P ...

  2. python交互式方式、代码文件方式_涨见识了,在终端执行 Python 代码的 6 种方式

    原作:BRETT CANNON 译者:豌豆花下猫@Python猫 英文:https://snarky.ca/the-many-ways-to-pass-code-to-python-from-the- ...

  3. python语言的使用不需要付费_人生不值得,我在用python.1_关于python

    一直喜欢编程,最近决定潜心入坑.起初一直在研究要学什么语言,想过c语言,学过VB(两天...),后来听说了python,功能强大,并且适合小白入手.文笔不行,但还是申请了博客号,以便记录.发表自己的所 ...

  4. python控制摄像头拍照是反的_使用反向Shell控制摄像头

    原标题:使用反向Shell控制摄像头 如果你已经用胶条封住了你的网络摄像头,你可能是因为听说过黑客或NSA可以远程监视你.那么问题来了,这些你素未谋面人又是如何远程连接到你的机器并监视你的呢? 这可能 ...

  5. python爬取网页表格数据匹配_爬取表格类网站数据并保存为excel文件

    本文转载自以下网站:50 行代码爬取东方财富网上市公司 10 年近百万行财务报表数据 https://www.makcyun.top/web_scraping_withpython6.html 主要学 ...

  6. python 可以用excel做词云图嘛_今天从零教你开始利用Python打造词云图!

    1. 量身打造属于你的词云图 今天的Python案例是跟着笔者来打造属于自己的词云图.那么什么是词云图呢?我们在百度中来搜索一下,如图所示: 概念:词云图就是由词汇组成类似云的彩色图形.接下来我们就可 ...

  7. python控制鼠标点击的包_控制鼠标点击的Python脚本

    我用win32api创建了一个小Python脚本,用于流行的游戏Cookie Clicker(一个你必须点击一个大Cookie来获得分数的游戏)只是为了好玩.它有一个名为"自动点击器&quo ...

  8. python控制手机屏幕亮度的软件_使用Python脚本更改显示器亮度

    前言 不管在电脑屏幕前办公还是娱乐,环境光线在变化,看的东西也在变化.显示器的亮度也应该及时调整,白天亮一些,晚上暗一些,打游戏亮一些,看文档暗一些. 如果是笔记本,可以在Win10的任务栏最右边的通 ...

  9. python控制浏览器不上下滚动失灵_浅谈selenium如何应对网页内容需要鼠标滚动加载的问题...

    相信大家在selenium爬取网页的时候都遇到过这样的问题:就是网页内容需要用鼠标滚动加载剩余内容,而不是一次全部加载出网页的全部内容,这个时候如果要模拟翻页的时候就必须加载出全部的内容,不然定位元素 ...

最新文章

  1. 初窥Go module
  2. 计算机基础及wps office应用_自考本科计算机应用基础考试大纲
  3. IOS开发设置应用程序App启动图片
  4. Idea Spring Boot配置文件.yaml或.properties不能自动提示的有效解决办法
  5. LeetCode 1230. 抛掷硬币(DP)
  6. python变量和字符_Python变量和字符串
  7. 一个mysql复制中断的案例
  8. 程序员如何在百忙中更有效地利用时间,如何不走岔路,不白忙(忙得要有效率,要有收获)...
  9. 河南省2020年计算机高考真题,2020年最新版对口高考试卷(计算机).docx
  10. c语言 增加 删除 修改的功能 不用链表,C语言的链表的创建、修改、添加与删除...
  11. python属性查找 深入理解(attribute lookup)
  12. 1086 就不告诉你 (15 分)—PAT (Basic Level) Practice (中文)
  13. arcgis 接口转换与.Net框架
  14. html添加右键菜单,JS添加右键菜单
  15. element input限制输入数字
  16. a href点击无效_a标签失效的问题
  17. 电脑连不上网络, 并且宽带连接是灰色的
  18. 腾讯云部署DevOps
  19. word2vec-google code
  20. 使用联机搜索求解Wumpus World

热门文章

  1. 如何在 Android Studio 使用 Genymotion 模拟器
  2. MybatisPlus动态修改表名
  3. 用java写了一个计算器(两个数的加减乘除运算)
  4. PHP curl 获取PHPSESSID,PHP curl_init() 方法伪造HTTP头信息 (采集用)
  5. 编程培训,C++、Java、Python如何选择?
  6. SpringBoot集成支付宝支付支付宝退款
  7. ParseInt用法
  8. 秒懂:kotlin 集合操作fold vs reduce
  9. sql入门及大数据概念
  10. 京东智联云媒体处理服务再升级