【全民Python】Python数据处理之Excel数据xlrd xlwt xlutils模块运用

文章介绍了Python中用于处理Excel文件的xlrd,xlwt和xlutils库,包括如何安装这三个库,以及如何使用它们创建、读取和修改Excel表格的内容。通过示例代码展示了如何创建xls表格,读取表格数据,以及如何在不改变原文件的情况下修改数据。
摘要由CSDN通过智能技术生成

目录

一.前言

二.xlrd xlwt xlutils库的安装

三.Excel的读写改

1.创建Excel表格xls

2.读取Excel表格

3.修改表格


一.前言

数据处理是 Python 的一大应用场景,而 Excel 又是当前最流行的数据处理软件。因此用 Python 进行数据处理时,很容易会和 Excel 打起交道。得益于前人的辛勤劳作,Python 处理 Excel 已有很多现成的轮子,比如 xlrd & xlwt & xlutils 、 XlsxWriter 、 OpenPyXL ,而在 Windows 平台上可以直接调用 Microsoft Excel 的开放接口,这些都是比较常用的工具,还有其他一些优秀的工具这里就不一一介绍,接下来我们通过一个表格展示各工具之间的特点:

类型xlrd&xlwt&xlutilsXlsxWriterOpenPyXLExcel开放接口
读取支持不支持支持支持
写入支持支持支持支持
修改支持不支持支持支持
xls支持不支持不支持支持
xlsx高版本支持支持支持支持
大文件不支持支持支持不支持
效率超慢
功能较弱强大一般超强大

以上可以根据需求不同,选择合适的工具,现在为大家主要介绍下最常用的 xlrd & xlwt & xlutils 系列工具的使用。

二.xlrd xlwt xlutils库的安装

  • xlrd:用于读取 Excel 文件;

  • xlwt:用于写入 Excel 文件;

  • xlutils:用于操作 Excel 文件的实用工具,比如复制、分割、筛选等;

安装比较简单,直接用 pip 工具安装三个库即可,安装命令如下:

$ pip3 install xlrd xlwt xlutils

三.Excel的读写改

1.创建Excel表格xls

#region 创建Xls表格对象

import xlwt
wb= xlwt.Workbook() #创建xls文件对象

#新增两个表单页
sh1 = wb.add_sheet("成绩")
sh2 = wb.add_sheet("总结")

#然后根据位置添加数据,第一个参数是行,第二个参数是列
sh1.write(0,0,'姓名')
sh1.write(0,1,'成绩')
sh1.write(1,0,'张三')
sh1.write(1,1,90)
sh1.write(2,0,'李四')
sh1.write(2,1,96)
sh1.write(3,0,'幻世界')
sh1.write(3,1,100)

sh2.write(0,0,'总分')
sh2.write(0,1,195)

wb.save('./Config/成绩单.xls')
#endregion

2.读取Excel表格

#region 读取Excel表格

import xlrd

wb= xlrd.open_workbook('./Config/成绩单.xls')
print('sheet数量:', wb.nsheets, wb.sheet_names()[0],wb.sheet_names()[1])

# 根据 sheet 索引获取内容
sh1 = wb.sheet_by_index(0)
print('%s 表:%d 行  %d 列'%  (sh1.name,sh1.nrows,sh1.ncols) )
# 或者
#也可根据 sheet 名称获取内容
sh1 = wb.sheet_by_name('成绩')
print('%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))
#endregion

#region 修改Excel
sheet数量: 2 成绩 总结
成绩 表:4 行  2 列
成绩 表:4 行  2 列
第一行第二列的值为: 成绩
第一行的值为: ['姓名', '成绩']
第二列的值为: ['成绩', 90.0, 96.0, 100.0]
第二行第一列的值类型为: 1
[text:'姓名', text:'成绩']
[text:'张三', number:90.0]
[text:'李四', number:96.0]
[text:'幻世界', number:100.0]
[text:'总分', number:195.0]

 单元格子 返回的类型数值对应下面类型

数值类型说明
0empty
1string字符串
2number数字
3date日期
4boolean布尔值
5error错误

3.修改表格

#region 修改Excel
import xlrd
from xlutils.copy import copy

#打开excel文件
wb= xlrd.open_workbook('Config\成绩单.xls')
nwb= copy(wb)

#选第一个表
sh1 =nwb.get_sheet(0)
#添加新数据
sh1.write(3,0,'shj')
sh1.write(3,1,92)

sh2 =nwb.get_sheet(1)
sh2.write(1,0,1000)
nwb.save('Config\成绩单.xls')
#endregion

4.修改表格内格式

#region 格式转变
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, '2019-01-01', styleDate)
sh1.write(1, 2, 88, styleNum)
sh1.write(2, 0, '李四')
sh1.write(2, 1, '2019-02-02')
sh1.write(2, 2, 99.5, 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, 187.5)
# 最后保存文件即可
wb.save('./Config/成绩单1.xls')
#endregion

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

幻世界

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值