
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('汇总')# 然后按照位置来添加数据,第一个参数是行,第二个参数是列# 写入第一个sheetsh1.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)# 写入第二个sheetsh2.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 xlrdfrom 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-DDstyleDate = 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_CENTERstyle = 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秋招面试题及答案




