第12天 | 12天搞定Python,让excel飞起来
学了10多天Python基础知识了,是时候来点硬货了,看过《第1天 | 12天搞定Python,告诉你有什么用?》的老铁都知道,Python可用的领域挺多的。只是我长期待在企业,所以只能说说,它在企业中常用范围。
在企业中,我,有时会用Python进行数据爬取和分析;有时会用来快速开发Django Web系统;有时会为了提供工作效率,我会用Python对excel、word、ppt或pdf相关操作,进行高级处理。
有关Python在数据分析和Django Web方面的应用,我找专题介绍。在这,我先讲Python在办公领域的应用。
12.1 excel操作
上过班或没上过班的同学都应该知道,excel在日常或工作中的应用是很频繁的。在工作中,常用来记录考勤信息和制作报价单等;在生活中,用来安排学习计划和记录家庭开支等。
正由于此,Python对Excel提供的支持,是大大大的,大到库有好多,大到程序员都不知选择哪一个才好了。别急,我把已经把Python操作excel的相关库,给你整理出来了。

1. 库的比较
xlrd库只支持只读,xlwt补充了只写,xlutils补充了修改,这就是传说中的打补丁开发模式,想想不就想用,加上xlwt、xlutils只支持.xls文件的操作,那就更加没趣了,淘汰。
xlsxwriter只能支持写的操作,不用我多说了吧,直接淘汰。
openpyxl倒可以对.xlsx进行读写操作,可惜不支持.xls文件,这样就无法满足对”老古董“文件的处理,淘汰。pandas倒是可以同时支持.xls和.xlsx的读写操作,可惜不支持修改功能,淘汰。
经过一步一步的筛选,最后只剩下xlwings和win32com了。一开始,我以为win32com只能用在Windows 32系统上,经核查,发现其在Python对应的库名称是pypiwin32,而32也不是32位的意思,它也支持64位系统的。
如果非要比较win32com和xlwings的话,那就是win32com的性能要比xlwings好一些,但差别不是特别大,win32com的文档比xlwings难懂一些。所以在不考虑超级大数据的情况,我们会选择xlwings。
2. xlwings应用
打开【终端】窗口,输入pip install xlwings下载开发包。在安装成功之后,就可以用它对excel进行操作了。
(1) 创建excel文件
创建工作簿,创建页,在单元格逐个写入数据,也可一次性写入多项数据。
import xlwings as xw app = xw.App(visible=True, add_book=False)
# 新建工作簿
wb = app.books.add()
# 页sheet1
sht = wb.sheets["sheet1"]
# 单元格内容
sht.range("A1").value = "产品名称"
sht.range("B1").value = "编号"
sht.range("C1").value = "价格"
sht.range("D1").value = "规格"
sht.range("E1").value = "生产日期"
sht.range("A2").value = "牛逼1号"
sht.range("B2").value = "101010"
sht.range("C2").value = "¥666.66"
# 同时输入多个(D2~E2),行
sht["D2:E2"].value = ["12*26", "2020-10-20"]
# 按行输入
sht["A3"].value = ["牛逼2号", "101011", "9.9", "66*32", "2020-10-20"]
# 在当前目录下生成文件
wb.save("报价单.xlsx")
wb.close()
app.quit()
输出结果(报价单.xlsx)

(2) 编辑excel数据
修改单元格数据,删除指定单元格。获取行和列总数,提供删除行和列的方法,通过这些核心的API,你就可以对整个sheet进行操作了。
import xlwings as xw app = xw.App(visible=True, add_book=False)
app.screen_updating = False
app.display_alerts = False
# 打开工作簿
wb = app.books.open("报价单.xlsx")
# 页sheet1
sht = wb.sheets["sheet1"]
# 获取总行数和列数
"""rows = sht.used_range.last_cell.row
cols = sht.used_range.last_cell.column"""
# 修改E2单元格内容d
sht["E2"].value = ["2020-10-19"]
# 删除行
sht["2:2"].delete()
# 删除列
sht["D:D"].delete()
# 保存当前文件
wb.save()
wb.close()
app.quit()
输出结果(报价单.xlsx)

(3) 读取excel数据
可按单元格或按行进行读取数据。
import xlwings as xw app = xw.App(visible=True, add_book=False)
app.display_alerts = True
app.screen_updating = True
# 打开文件
wb = app.books.open("报价单.xlsx")
sht = wb.sheets["sheet1"]
# 读取单个
a = sht.range("A1").value
print(a)
# 读取多个并存入列表
r = sht.range("A1:A2").value
print(r)
wb.save()
wb.close()
app.quit()
输出结果
产品名称
['产品名称', '牛逼2号']
好了,有关Python在excel应用方面的内容,老陈讲完了,如果觉得对你有所帮助,希望老铁能转发点赞,让更多的人看到这篇文章。你的转发和点赞,就是对老陈继续创作和分享最大的鼓励。
第12天 | 12天搞定Python,让excel飞起来的更多相关文章
- 转载 12步轻松搞定python装饰器
作者: TypingQuietly 原文链接: https://www.jianshu.com/p/d68c6da1587a 呵呵!作为一名教python的老师,我发现学生们基本上一开始很难搞定pyt ...
- Python高级特性: 12步轻松搞定Python装饰器
12步轻松搞定Python装饰器 通过 Python 装饰器实现DRY(不重复代码)原则: http://python.jobbole.com/84151/ 基本上一开始很难搞定python的装 ...
- 12步轻松搞定Python装饰器
译者:寒寻 译文:http://www.cnblogs.com/imshome/p/8327438.html 原文:https://dzone.com/articles/understanding-p ...
- 第4天 | 12天搞定Python,基础语法(下)
为了方便你的学习,减轻负重,我特意将基础语法分成上下两部分.希望你喜欢这种方式,如果不喜欢,你可以跟我说,反正我是不会改的,哈哈~~. 如果上部分,你还没看的话,先去看<第4天 | 12天搞定P ...
- 第10天 | 12天搞定Python,文件操作(超详细)
在开发系统的过程中,经常会用到XML存储和传输数据,XML是一种用于标记电子文件使其具有结构性的标记语言,在博客中经常会见到. JSON是一种轻量级的数据交换格式,常被用在后端和前端的数据交互上,如你 ...
- 第1天|12天搞定Python网络爬虫,吃里爬外?
人力资源部漂亮的小MM,跑来问我:老陈,数据分析和爬虫究竟是关系呀?说实在的,我真不想理她,因为我一直认为这个跟她的工作关系不大,可一想到她负责我负责部门的招聘工作,我只好勉为其难地跟她说:数据分析, ...
- 一句话搞定python六剑客
六剑客 一行搞定六剑客:三个函数:map filter reduce + lambda 切片 推导列表 python最有特点的一行代码,所有代码均可以借用一行代码(目标) 1.map(函数,列表或者字 ...
- 百道Python面试题实现,搞定Python编程就靠它
对于一般的机器学习求职者而言,最基础的就是掌握 Python 编程技巧,随后才是相关算法或知识点的掌握.在这篇文章中,我们将介绍一个 Python 练习题项目,它从算法练习题到机试实战题提供了众多问题 ...
- 第1天 | 12天搞定Python,告诉你有什么用?
掌握多一门编程语言,多一种选择,多一份机遇,更何况学的是人见人爱,花见花开的Python语言.它目前可占据编程语言排行榜的第3名,是名副其实的"探花郎",无论用它做什么(网络爬虫. ...
随机推荐
- 基于k8s的集群稳定架构
前言 我司的集群时刻处于崩溃的边缘,通过近三个月的掌握,发现我司的集群不稳定的原因有以下几点: 1.发版流程不稳定 2.缺少监控平台[最重要的原因] 3.缺少日志系统 4.极度缺少有关操作文档 5.请 ...
- 二、Git安装--Windows
Git安装配置 在使用Git前我们需要先安装 Git.Git 目前支持 Linux/Unix.Solaris.Mac和 Windows 平台上运行. Git 各平台安装包下载地址为:http://gi ...
- ECMAScript 6新特性简介
目录 简介 ECMAScript和JavaScript的关系 let和const 解构赋值 数组的扩展 函数的扩展 简介 ECMAScript 6.0(以下简称 ES6)是 JavaScript 语言 ...
- JSTL1.1函数标签库(functions)
JSTL1.1函数标签库(functions) 在jstl中的fn标签也是我们在网页设计中经常要用到的很关键的标签,在使用的时候要先加上头 <%@ taglib uri="http:/ ...
- dpwwn-02靶机渗透
dpwwn-02靶机渗透 将两台机器都配置为net模式. 进行一下内网扫描: 发现主机10.10.10.10,进行端口扫描. 发现有80,111,443,2049等端口开放,443值得注意. 访问网站 ...
- 与Bat脚本的故事
因为工作时需要将定时处理的业务抽出来,废弃通过监听定时调用的这种方法,改为通过第三方软件定时执行bat脚本来实现,所以学习了一下bat脚本,整理出一些学习中的基础点和重点. 基础点: (1)bat脚本 ...
- Hibernate4.3 继承映射
一.单表继承映射 父子类合成一张表 An_id An_name gender Weight Height type 1 dog 1 300 D 2 cat 1 100 C 在Animal.hbm.xm ...
- gRPC-微服务间通信实践
微服务间通信常见的两种方式 由于微服务架构慢慢被更多人使用后,迎面而来的问题是如何做好微服务间通信的方案.我们先分析下目前最常用的两种服务间通信方案. gRPC(rpc远程调用) 场景:A服务主动发起 ...
- makefile实验二 对目标的深入理解 以及rebuild build clean的实现
(一) rebuild build clean的实现 新知识点: 当一个目标的依赖是一个伪目标时,这个伪目标的规则一定会被执行. 贴实验代码 CC := gcc Target := helloworl ...
- Java知识系统回顾整理01基础06数组01创建数组
一.数组定义 定义:数组是一个固定长度的,包含了相同类型数据的 容器 二.声明数组 int[] a; 声明了一个数组变量. []表示该变量是一个数组 int 表示数组里的每一个元素都是一个整数 a 是 ...