
Python 操作 Excel
前言
这次梳理的篇幅主要是涉及Excel以及如何通过python对Excel进行操作等,对巩固自己的python知识也是很有帮助的,进一步的对Excel的使用而言也是帮助很大的。
但更多的是抛砖引玉,希望对你们有所帮助。
感谢各位鼓励与支持🌹🌹🌹,往期文章都在最后梳理出来了(●'◡'●)
接下来就以问题的形式展开梳理👇
python对应下的Excel
Excel,「Excel一般指Microsoft Office Excel。Microsoft Excel是Microsoft为使用Windows和Apple Macintosh操作系统的电脑编写的一款电子表格软件。直观的界面、出色的计算功能和图表工具,再加上成功的市场营销,使Excel成为最流行的个人计算机数据处理软件」。
常用工具
类型 | xlrd&xlwt&xlutils | XlsxWriter | OpenPyXL | Excel开放接口 |
读取 | 支持 | 不支持 | 支持 | 支持 |
写入 | 支持 | 支持 | 支持 | 支持 |
修改 | 支持 | 不支持 | 支持 | 支持 |
xls | 支持 | 不支持 | 不支持 | 支持 |
xlsx | 高版本 | 支持 | 支持 | 支持 |
大文件 | 不支持 | 支持 | 支持 | 不支持 |
效率 | 快 | 快 | 快 | 较慢 |
功能 | 较弱 | 强大 | 一般 | 超强大 |
xlrd & xlwt & xlutils介绍
「xlrd」,用于读取 Excel 文件; 「xlwt」,用于写入 Excel 文件; 「xlutils」,用于操作 Excel 文件的实用工具,比如复制、分割、筛选等。
python下安装相应的资源包
安装xlrd
命令行: pip install xlrd
复制
安装xlwt
命令行: pip install xlwt
复制
安装xlutils
命令行: pip install xlutils
复制
python下写入Excel
导入库创建文件对象
导入 xlwt 库:import xlwt
创建 xls 文件对象:wb = xlwt.Workbook()
那我们看看写入Excel
的完整代码吧👇
# 导入 xlwt 库
import xlwt
# 创建 xls 文件对象
wb = xlwt.Workbook()
# 新增两个表单页
sh1 = wb.add_sheet('成绩')
sh2 = wb.add_sheet('汇总')
# 然后按照位置来添加数据,第一个参数是行,第二个参数是列
# 写入第一个sheet
sh1.write(0, 0, '姓名')
sh1.write(0, 1, '专业')
sh1.write(0, 2, '科目')
sh1.write(0, 3, '成绩')
sh1.write(1, 0, '张三')
sh1.write(1, 1, '信息与通信工程')
sh1.write(1, 2, '数值分析')
sh1.write(1, 3, 88)
sh1.write(2, 0, '李四')
sh1.write(2, 1, '物联网工程')
sh1.write(2, 2, '数字信号处理分析')
sh1.write(2, 3, 95)
sh1.write(3, 0, '王华')
sh1.write(3, 1, '电子与通信工程')
sh1.write(3, 2, '模糊数学')
sh1.write(3, 3, 90)
# 写入第二个sheet
sh2.write(0, 0, '总分')
sh2.write(1, 0, 273)
# 最后保存文件即可
wb.save('test.xls')
复制
从上面看,我们可以看到类似于索引表,每个索引表对应一个值,比如索引为2对应头部中的第二个sheet头部信息,这样子的话,在传输的时候,不在是传输对应的头部信息了,而是传递索引,对于之前出现过的头部信息,只需要把「索引」(比如1,2,...)传给对方即可,对方拿到索引查表就行了。
运行效果
运行代码,结果会看到生成名为 test.xls 的 Excel 文件,打开文件查看如下图所示:
在打开的Excel表中有我们刚刚在代码中填写的数据:
在表的sheet2中有所有成绩的总分:
以上就是写入 Excel 的代码,是不是很简单,下面我们再来看下读取 Excel 该如何操作。
python在读取Excel
导入库写入文件
导入 xlrd 库:import xlrd
写入 xls 文件:wb = xlrd.open_workbook("test_w.xls")
那我们看看读取Excel
的完整代码吧👇
# 导入 xlrd 库
import xlrd
# 打开刚才我们写入的 test_w.xls 文件
wb = xlrd.open_workbook("test_w.xls")
# 获取并打印 sheet 数量
print( "sheet 数量:", wb.nsheets)
# 获取并打印 sheet 名称
print( "sheet 名称:", wb.sheet_names())
# 根据 sheet 索引获取内容
sh1 = wb.sheet_by_index(0)
# 或者
# 也可根据 sheet 名称获取内容
# sh = wb.sheet_by_name('成绩')
# 获取并打印该 sheet 行数和列数
print( u"sheet %s 共 %d 行 %d 列" % (sh1.name, sh1.nrows, sh1.ncols))
# 获取并打印某个单元格的值
print( "第一行第二列的值为:", sh1.cell_value(0, 1))
# 获取整行或整列的值
rows = sh1.row_values(0) # 获取第一行内容
cols = sh1.col_values(1) # 获取第二列内容
# 打印获取的行列值
print( "第一行的值为:", rows)
print( "第二列的值为:", cols)
# 获取单元格内容的数据类型
print( "第二行第一列的值类型为:", sh1.cell(1, 0).ctype)
# 遍历所有表单内容
for sh in wb.sheets():
for r in range(sh.nrows):
# 输出指定行
print( sh.row(r))
复制
运行效果
运行代码,在后台显示结果如下:
细心的朋友可能注意到,这里我们可以获取到单元格的类型,上面我们读取类型时获取的是数字1,那1表示什么类型,又都有什么类型呢?别急下面我们慢慢讲述。
单元格类型
数值 | 类型 | 说明 |
0 | empty | 空 |
1 | string | 字符串 |
2 | number | 数字 |
3 | date | 日期 |
4 | boolean | 布尔值 |
5 | error | 错误 |
通过上面表格,我们可以知道刚获取单元格类型返回的数字1对应的就是字符串类型。
python下修改Excel
导入库打开文件
导入 xlrd和xlutils 库:
from xlutils.copy import copy
打开 xls 文件:readbook = xlrd.open_workbook("test_w.xls")
那我们看看修改Excel
的完整代码吧👇
# 导入相应模块
import xlrd
from xlutils.copy import copy
# 打开 excel 文件
readbook = xlrd.open_workbook("test_w.xls")
# 复制一份
wb = copy(readbook)
# 选取第一个表单
sh1 = wb.get_sheet(0)
# 在第五行新增写入数据
sh1.write(4, 0, '王欢')
sh1.write(4, 1, '通信工程')
sh1.write(4, 2, '机器学习')
sh1.write(4, 3, 89)
# 选取第二个表单
sh1 = wb.get_sheet(1)
# 替换总成绩数据
sh1.write(1, 0, 362)
# 保存
wb.save('test.xls')
复制
「我们通过两张图来看看它的修改效果吧」👇

python下格式转换操作
「在平时我们使用 Excel 时会对数据进行一下格式化,或者样式设置,在这里把上面介绍写入的代码简单修改下,使输出的格式稍微改变一下,代码下:」
# 导入 xlwt 库
import xlwt
# 设置写出格式字体红色加粗
styleBR = xlwt.easyxf('font: name Times New Roman, color-index red, bold on')
# 设置数字型格式为小数点后保留两位
styleNum = xlwt.easyxf(num_format_str='#,##0.00')
# 设置日期型格式显示为YYYY-MM-DD
styleDate = xlwt.easyxf(num_format_str='YYYY-MM-DD')
# 创建 xls 文件对象
wb = xlwt.Workbook()
# 新增两个表单页
sh1 = wb.add_sheet('成绩')
sh2 = wb.add_sheet('汇总')
# 然后按照位置来添加数据,第一个参数是行,第二个参数是列
sh1.write(0, 0, '姓名', styleBR) # 设置表头字体为红色加粗
sh1.write(0, 1, '日期', styleBR) # 设置表头字体为红色加粗
sh1.write(0, 2, '成绩', styleBR) # 设置表头字体为红色加粗
# 插入数据
sh1.write(1, 0, '张三',)
sh1.write(1, 1, '2020-07-01', styleDate)
sh1.write(1, 2, 90, styleNum)
sh1.write(2, 0, '李四')
sh1.write(2, 1, '2020-08-02')
sh1.write(2, 2, 95, styleNum)
# 设置单元格内容居中的格式
alignment = xlwt.Alignment()
alignment.horz = xlwt.Alignment.HORZ_CENTER
style = xlwt.XFStyle()
style.alignment = alignment
# 合并A4,B4单元格,并将内容设置为居中
sh1.write_merge(3, 3, 0, 1, '总分', style)
# 通过公式,计算C2+C3单元格的和
sh1.write(3, 2, xlwt.Formula("C2+C3"))
# 对 sheet2 写入数据
sh2.write(0, 0, '总分', styleBR)
sh2.write(1, 0, 185)
# 最后保存文件即可
wb.save('test.xls')
复制

可以看出,使用代码我们可以对字体,颜色、对齐、合并等平时 Excel 的操作进行设置,也可以格式化日期和数字类型的数据。当然了这里只是介绍了部分功能,不过这已经足够我们日常使用了,想了解更多功能操作可以参考官网。
「❤️ 感谢大家」
如果你觉得这篇内容对你挺有有帮助的话:
点赞支持下吧,让更多的人也能看到这篇内容(收藏不点赞,都是耍流氓 -_-) 欢迎在留言区与我分享你的想法,也欢迎你在留言区记录你的思考过程。 觉得不错的话,也可以阅读近期梳理的文章(感谢掘友的鼓励与支持🌹🌹🌹):
「❤️ 资源传送门」
1. 扫码关注【做一个柔情的程序猿】公众号
2. 在【做一个柔情的程序猿】后台回复 【python资料】【2020秋招】 获取相应资料
👆长按上方二维码 2 秒 回复「python资料」即可获取python学习资料 回复「2020秋招」即可获取2020秋招面试题及答案 复制