乐趣区

关于python:第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 利用方面的内容,老陈讲完了,如果感觉对你有所帮忙,心愿老铁能转发点赞,让更多的人看到这篇文章。你的转发和点赞,就是对老陈持续创作和分享最大的激励。

一个当了 10 年技术总监的老家伙,分享多年的编程教训。想学编程的敌人,可关注今日头条:老陈述编程。我将分享 Python,前端 (小程序) 和 App 方面的编程常识。关注我,没错的。

退出移动版