学了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飞起来的更多相关文章

  1. 转载 12步轻松搞定python装饰器

    作者: TypingQuietly 原文链接: https://www.jianshu.com/p/d68c6da1587a 呵呵!作为一名教python的老师,我发现学生们基本上一开始很难搞定pyt ...

  2. Python高级特性: 12步轻松搞定Python装饰器

    12步轻松搞定Python装饰器 通过 Python 装饰器实现DRY(不重复代码)原则:  http://python.jobbole.com/84151/   基本上一开始很难搞定python的装 ...

  3. 12步轻松搞定Python装饰器

    译者:寒寻 译文:http://www.cnblogs.com/imshome/p/8327438.html 原文:https://dzone.com/articles/understanding-p ...

  4. 第4天 | 12天搞定Python,基础语法(下)

    为了方便你的学习,减轻负重,我特意将基础语法分成上下两部分.希望你喜欢这种方式,如果不喜欢,你可以跟我说,反正我是不会改的,哈哈~~. 如果上部分,你还没看的话,先去看<第4天 | 12天搞定P ...

  5. 第10天 | 12天搞定Python,文件操作(超详细)

    在开发系统的过程中,经常会用到XML存储和传输数据,XML是一种用于标记电子文件使其具有结构性的标记语言,在博客中经常会见到. JSON是一种轻量级的数据交换格式,常被用在后端和前端的数据交互上,如你 ...

  6. 第1天|12天搞定Python网络爬虫,吃里爬外?

    人力资源部漂亮的小MM,跑来问我:老陈,数据分析和爬虫究竟是关系呀?说实在的,我真不想理她,因为我一直认为这个跟她的工作关系不大,可一想到她负责我负责部门的招聘工作,我只好勉为其难地跟她说:数据分析, ...

  7. 一句话搞定python六剑客

    六剑客 一行搞定六剑客:三个函数:map filter reduce + lambda 切片 推导列表 python最有特点的一行代码,所有代码均可以借用一行代码(目标) 1.map(函数,列表或者字 ...

  8. 百道Python面试题实现,搞定Python编程就靠它

    对于一般的机器学习求职者而言,最基础的就是掌握 Python 编程技巧,随后才是相关算法或知识点的掌握.在这篇文章中,我们将介绍一个 Python 练习题项目,它从算法练习题到机试实战题提供了众多问题 ...

  9. 第1天 | 12天搞定Python,告诉你有什么用?

    掌握多一门编程语言,多一种选择,多一份机遇,更何况学的是人见人爱,花见花开的Python语言.它目前可占据编程语言排行榜的第3名,是名副其实的"探花郎",无论用它做什么(网络爬虫. ...

随机推荐

  1. Arnold变换(猫脸变换)

    Arnold变换是Arnold在遍历理论研究中提出的一种变换.由于Arnold本人最初对一张猫的图片进行了此种变换,因此它又被称为猫脸变换.Arnold变换可以对图像进行置乱,使得原本有意义的图像变成 ...

  2. 基本的PID算法整理(水缸的例子有问题!!)

    一,先谈关于水缸漏水的问题 谈到PID原理入门的时候,大家经常会举的一个例子就是水缸漏水的例子.这里把一个解释水缸漏水的帖子放在这里:https://blog.csdn.net/qq_41736609 ...

  3. Java多线程--AQS

    ReentrantLock和AQS的关系 首先我们来看看,如果用java并发包下的ReentrantLock来加锁和释放锁,是个什么样的: 1 ReentrantLock reentrantLock ...

  4. 进程管理、PS命令、nohup命令

    1. Windows 下,扩展名为exe的文件,鼠标双击,运行,把这个程序正在运行的实例,称之为进程 Windows进程的信息可以通过 任务管理器看到 查看到:正在运行的计算器程序 Calculato ...

  5. MySQL手注之盲注(布尔)

    布尔注入: 当我们在注入的过程中输入的语句在页面没有数据返回点,这就需要利用布尔型盲注一步步来猜取想要的数据.(盲注分为布尔盲注和时间盲注) 盲注常用函数: length()  返回字符串的长度, 可 ...

  6. 微服务实战系列(七)-网关springcloud gateway

    1. 场景描述 springcloud刚推出的时候用的是netflix全家桶,路由用的zuul,但是据说zull1.0在大数据量访问的时候存在较大性能问题,2.0就没集成到springcloud中了, ...

  7. 交互式甘特图组件VARCHART XGantt 如何在活动中标注非工作间隔

    甘特图从1998年的第一个商用版本开始就致力于计划编制和项目管理方面控件的研究和开发,经过20多年的积累和沉淀,目前可为软件开发商和最终用户提供最顶级的计划编制和项目管理的控件产品,帮助用户快速的整合 ...

  8. js自定义属性的操作

    <body> <div id = "demo" index = "1" class = "nav"></div ...

  9. C++ “string”: 未声明的标识符

    转载:https://blog.csdn.net/kkkmmmjjjj/article/details/53780549 解决方案: 要添加using namespace std;语句在宏定义后面. ...

  10. [Docker] redis 全配置

    启动容器,加载配置文件并持久化数据 docker run -d --privileged=true -p 6379:6379 --restart always -v /usr/redis/conf:/ ...