过去,在很多金融、市场、行政的招聘中,面试官都会问一句:“你精通 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基础、爬虫、框架、数据分析、机器学习等,不怕你学不会!

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

  1. 【定制开发】【M11】Python采集数据源,自动生成Excel报表:避免人力浪费,提高工作效率

    目录 一.背景 二.采集数据源 2.采集[氮氨]数据 3.采集[COD 化学需氧量]数据 4.采集[总氮]数据 三.输出Excel内容样式 1.输出文件命名格式 2.文件内容格式详述 四.解决方案 1 ...

  2. python杀死了excel_Python杀死了Excel|自动更新表格,告别繁琐

    大家好,又到了Python办公自动化专题. 今天我们讲解的案例是如何使用Python自动更新Excel表格,简单来说就是每天都会对Excel中多个sheet进行更新,需要操作完后可以用程序完成第一张s ...

  3. python sql导出excel_python sql导出excel数据库

    数据库内容到EXCEL 继Python将数据库数据导入到EXCEL文章之后,这次来一个推进版,将其编写为函数,接着是class.哈哈.. 问过群里的朋友,他们大多采用工具将数据导入到excel,本人以 ...

  4. python创建excel_python自动生成excel(xlwt库)

    # coding: utf-8import web import json import datetime import xlwt import StringIO # 如果不在前端调用接口,如下web ...

  5. 如何用python整理表格_Python 自动整理 Excel 表格

    点击上方"Python爬虫与数据挖掘",进行关注 回复"书籍"即可获赠Python从入门到进阶共10本电子书 今 日 鸡 汤 位卑未敢忘忧国,事定犹须待盖棺. ...

  6. python怎么读excel_python怎么读写excel文件

    展开全部 最近用python处理一个小项目32313133353236313431303231363533e4b893e5b19e31333363393732,其中涉及到对excel的读写操作,通过查 ...

  7. 【Python】用Python下载壁纸并自动更换桌面

    今天我们继续用Python写一个小工具,一方面实现壁纸自由,另一方面实现桌面更换自由! 壁纸 API 我们这里使用一个开源在 GitHub 上的必应壁纸 API 作为壁纸的来源 ❝ https://g ...

  8. 搞点Python骚操作,自动美化excel表格

    今天就整点不一样的:用Python自动美化表格! 以前写过一篇文章,用Python爬虫爬取了全国20多个图书馆的热门借阅图书信息,并按照一定的规则做了统计汇总,得到了这一份大学生各领域必读TOP150 ...

  9. python数据导出excel_python 数据生成excel导出(xlwt,wlsxwrite)代码实例

    这篇文章主要介绍了python 数据生成excel导出(xlwt,wlsxwrite)代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 话不多 ...

最新文章

  1. 远程办公,为什么一直不被公司普遍接受?
  2. AT5198 01 Matrix(构造)
  3. xp系统如何将计算机放到桌面快捷方式,如何整理xp系统电脑桌面快捷方式图标...
  4. R语言使用ggpubr包的ggarrange函数组合多张结论图:使用ggpubr包将图像、文本、表格组合在一起展示
  5. java 单链表约瑟夫环_java循环单链表实现约瑟夫环问题
  6. 英特尔首推物联网云平台设备管理
  7. 如何具备无坚不摧的意志力
  8. 用于字符串和数组的5种简单有效的Java技术
  9. 臭名昭著的sun.misc.Unsafe解释
  10. linux ntp 'ntp_request.c'远程拒绝服务漏洞,NTP 'ntp_request.c'远程拒绝服务漏洞
  11. websockert后台定时向前端发送状态_(文末送书)手把手教你打造属于自己团队的前端小报系统...
  12. HelpDesk工作流多级,多任务流程(包含源代码和InfoPath模板)
  13. Apache SSI 远程命令执行漏洞
  14. 麦克斯韦电磁场理论基础
  15. 0x0000006B蓝屏问题解决方法
  16. SpringBoot框架下集成萤石云平台开发海康的摄像头
  17. 傅里叶级数的通俗理解
  18. Python实现快速排序
  19. android wifi热点默认名称,Android 修改WiFi热点的默认SSID和密码
  20. python里面else什么意思_python中if else和if elif else有什么区别?

热门文章

  1. Redis 压缩列表原理与应用分析
  2. “Java跌落向下,Python奋斗向前”,程序员:看哭了...
  3. OpenStack精华问答 | OpenStack的目标是什么?
  4. 微服务架构之「 访问安全 」
  5. 微服务精华问答:什么是微服务架构中的DRY?| 技术头条
  6. 小学学校计算机室财产登记册,小学财产登记制度
  7. 极光推送 请检查参数合法性_极光小课堂 | 极光推送在人脸识别终端管理系统中的应用...
  8. VS Code Git 日常操作
  9. Mybatis-plus批量插入、批量修改数据saveBatch等速度缓慢
  10. 该虚拟机似乎正在使用中 请获取所有权