第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名,是名副其实的"探花郎",无论用它做什么(网络爬虫. ... 
随机推荐
- 第3章 01 python数字类型即操作
			浮点数类型 通过round函数比较浮点数之间的比较关系 复数类型 数值运算函数 小结 天天向上的力量 千分之一的力量 千分之五和百分之一的力量 在1的基础上增加天天向上的参数 在1的基础上减去天天向下 ... 
- Hadoop学习笔记(一):ubuntu虚拟机下的hadoop伪分布式集群搭建
			hadoop百度百科:https://baike.baidu.com/item/Hadoop/3526507?fr=aladdin hadoop官网:http://hadoop.apache.org/ ... 
- @Autowried入门和源码分析
			话不多说直接上代码: 声明一个接口userDao: package ioc.hello; public interface UserDao { public void test(); } 2个实现类: ... 
- 一分钟理解Redo Undo
			数据库中有一种特殊的"日志文件"叫 Redo(重做) Undo(撤销),传统意义上的日志文件是记录系统运行状态的,主要用于系统工程师或者程序员排错.而 Reod/Undo 文件是数 ... 
- linux 上部署  YApi  可视化接口管理平台
			linux 上部署 YApi 可视化接口管理平台: YApi 是一个高效.易用.功能强大的可视化接口管理平台,官方地址 : http://yapi.demo.qunar.com/ 环境要求 nodej ... 
- Bottleneck靶机渗透
			Bottleneck 端口扫描,主机发现. 敏感目录为:http://192.168.114.165/image_gallery.php 在该目录下发现:http://192.168.114.165/ ... 
- 从CPU缓存看缓存的套路
			一.前言 不同存储技术的访问时间差异很大,从 计算机层次结构 可知,通常情况下,从高层往底层走,存储设备变得更慢.更便宜同时体积也会更大,CPU 和内存之间的速度存在着巨大的差异,此时就会想到计算机科 ... 
- 《Java从入门到失业》第四章:类和对象(4.6):类路径
			4.6类路径 4.6.1什么是类路径 前面我们讨论过包,知道字节码文件最终都会被放到和包名相匹配的树状结构子目录中.例如上一节的例子: 其实类还有一种存放方式,就是可以归档到一个jar文件中,jar文 ... 
- django中url和reverse使用
			使用url标签和reverse()函数,可以避免在模板和view中对url进行硬编码,这样即使url改变了,对模板和view也没有影响, 其实在模板, view中,如果想获取当前访问的url,那用re ... 
- 数据类型-字符串(str)
			1.只要是被单引号,双引号,三引号括起来的,都是字符串类型 2.字符串里面元素:单个字母,单个符号,都称之为一个元素 例如:s='hello!' (6个元素) len(数据)统计数据的长度pri ... 
