xlrd和xlwt模块

news/2025/1/8 23:42:10/

一、简述

xlrd和xlwt是python的第三方库,xlrd模块实现对excel文件内容读取,xlwt模块实现对excel文件的写入

二、安装

使用前需先进行安装这2个库

pip install xlrd

pip install xlwt

初始表格信息:imformation.xls

sheet:学生信息

sheet:考试信息

三、xlrd使用

1、打开Excel文件读取数据

2、根据下标获取sheet名称

3、根据sheet索引或者名称获取sheet内容,获取sheet名称、列数、行数

4、根据sheet名称获取整行和整列的值

5、获取指定单元格的内容

6、获取单元格内容的数据类型

7、获取单元内容为日期类型的方式

8、获取单元内容为number的方式(转为整型)

import xlrd
from datetime import date# 打开excel表格读取数据
data = xlrd.open_workbook('C:/Users/mpp/Desktop/information.xls')
sheet = data.sheet_names()  #获取全部sheet名称
print(sheet)  # ['学生信息', '考试信息', 'Sheet3']# 根据下标获取表格
sheet1_name = data.sheet_names()[0]
print(sheet1_name)  # 学生信息# 根据名称获取sheet内容,并获取sheet名称,行数,列数
sheet1_data = data.sheet_by_name('学生信息')
print(f'表格名称:{sheet1_data.name}\n行数:{sheet1_data.nrows}\n列数:{sheet1_data.ncols}')
# 表格名称:学生信息
# 行数:5
# 列数:3# 根据索引获取sheet内容,并获取sheet名称,行数,列数
sheet2_data = data.sheet_by_index(1)
print(f'表格名称:{sheet2_data.name}\n行数:{sheet2_data.nrows}\n列数:{sheet2_data.ncols}')
# 表格名称:考试信息
# 行数:4
# 列数:3# 根据sheet名称获取整行和整列的值
sheet1_data = data.sheet_by_name('学生信息')
print(sheet1_data.row_values(0))  # ['姓名', '年龄', '地址']# 获取指定单元格的内容
print(sheet1_data.cell_value(0, 0))  # 第一行第一列内容:姓名
print(sheet1_data.cell_value(1, 2))  # 第2行,第3列内容:上海
print(sheet1_data.row(3)[0].value)  # 第4行第1列内容:rose
print(sheet1_data.col(2)[2].value)  # 第3行第3列内容:北京# 获取单元格内容的数据类型:说明:ctype : 0 empty,1 string, 2 number, 3 date, 4 boolean, 5 error
print(sheet1_data.cell(0, 0).ctype)  # 获取sheet1 第1行第1列的数据类型 :1 -> string类型
print(sheet1_data.cell(1, 1).ctype) # 获取sheet1 第2行第2列的数据类型 :2 -> int类型
print(sheet2_data.cell(1, 0).ctype)  # 获取sheet2 第2行第1列的数据类型 :3 -> date类型# 获取到日期转为date格式
print(sheet2_data.cell(1, 0).value) # 44713.40625
if sheet2_data.cell(1, 0).ctype == 3:date_value = xlrd.xldate_as_tuple(sheet2_data.cell(1, 0).value, 0)print(date_value)print(*date_value[:3])print(date(*date_value[:3]).strftime('%Y/%m/%d'))  # 2022/06/01# 获取单元内容为number的方式(转为整型)
print(sheet2_data.cell(1, 2).value)  # 46.0
if sheet2_data.cell(1, 2).ctype == 2:print(int(sheet2_data.cell(1, 2).value))  # 46

xlrd读取文件内容后,再写入数据,可以使用xlutils的copy方法,转储原xls格式用来进一步写入数据。如,实现“学生信息”表中,在第4列新增性别数据

import xlrd
from xlutils import copypath = r'C:/Users/mpp/Desktop/information.xls'
wb = xlrd.open_workbook(path)
wsheet = wb.sheet_by_name('学生信息')
wsheet_rows = sheet_data.nrows  
new_wb = copy(wb)  # 复制文件并保留格式
new_wsheet = new_wb.get_sheet(0) # 根据下标打开表单data = ['性别', '男', '男', '女', '女']# 在第4列写入性别数据
for i in range(len(data)):wsheet.write(i, 3 , data[i]) new_wb.save(path)  # 最后进行保存

四、xlwt使用

import xlwtdef set_style(name, high, colour='white', bold=False, format_str='', align='center'):style = xlwt.XFStyle()   # 初始化样式font = xlwt.Font()  # 为样式创建字体font.name = namefont.bold = boldfont.height = highborders = xlwt.Borders()  #为样式创建边框borders.left = 2borders.right = 2borders.top = 0borders.bottom = 2pattern = xlwt.Pattern()  # 一个实例化的样式类pattern.pattern = xlwt.Pattern.SOLID_PATTERN  # 固定的样式pattern.pattern_fore_colour = xlwt.Style.colour_map[colour]  # 设置背景颜色alignment = xlwt.Alignment() # 设置对齐方式if align == 'center':alignment.horz = alignment.HORZ_CENTER  # 设置水平居中方式alignment.vert = alignment.VERT_CENTER  # 设置垂直居中方式else:alignment.horz = alignment.HORZ_LEFT   #设置左对齐方式alignment.vert = alignment.VERT_BOTTOM   #设置底部对齐方式style.font = fontstyle.borders = bordersstyle.num_format_str = format_strstyle.alignment = alignmentstyle.pattern = patternreturn stylewb = xlwt.Workbook()
ws = wb.add_sheet('员工信息统计表', cell_overwrite_ok=True)  # 创建sheet表
rows = ['公司', '姓名', '工号', '手机号', '邮箱']
col1 = ['张三', '李四', '王五']
col2 = ['3212001', '3212002', '3212003']
col3 = ['13212345601', '13212345602', '13212345603']
col4 = ['111@qq.com', '222@qq.com', '333@qq.com']# 写入第一行数据, 合并第1行, 第1~6列的单元格
ws.write_merge(0, 0, 0, 4, '员工信息表', set_style('等线', 300, colour='yellow', bold=True))# 写入第2行数据
for index, val in enumerate(rows):ws.col(index).width = 150*30ws.write(1, index, val, set_style('等线', 300, bold=True))# 写入第3~6行第一列数据,合并单元格
ws.write_merge(2, 2+len(col1)-1, 0, 0, 'XX科技公司', set_style('Times New Roman', 230))# 写入第3~6行,第2-6列的数据
data_list = (col1, col2, col3, col4)
for i in range(1, len(rows)):items = data_list[i-1]for index, val in enumerate(items):ws.write(index + 2, i, val, set_style('Times New Roman', 230))wb.save('write.xls')

写入的表格内容:


http://www.ppmy.cn/news/413874.html

相关文章

在 Linux 中重命名文件mv

要在终端中重命名文件,您实际上是使用mv移动文件,但您使用新名称将文件从自身移动到自身。 本示例将example.txt重命名为file.txt: $ mv example.txt file.txt因为它们都使用相同的命令,所以您可以将重命名与移动结合使用。例如…

手机技巧:安卓微信 8.0.38 内测版本功能一览

2023年6月14号安卓版本的微信8.0.38又开始内测了,今天就赶紧下载体验一下,下面就来给大家一一介绍,本次安卓微信内测版本功能更新,感兴趣的朋友可以文末下载体验一下! 首先看一下官方的更新内容: 本次更新…

《低代码指南》不能“生成代码”的低代码平台,为什么推进阻力那么大?

为什么现在低代码平台推进阻力那么大? “在踏出一步之前,首先考虑能否退回去” 现在低代码平台,功能性能这些先不说,能不能提升效率,提升多少,暂不讨论。光“平台和环境锁定”这一点,就是整个行业最大的技术推广障碍。道理很简单,平台有几百个,但是如果选了一个,…

HTML5: SVG (可缩放矢量图形)

ylbtech-HTML5: SVG (可缩放矢量图形)可缩放矢量图形是基于可扩展标记语言(标准通用标记语言的子集),用于描述二维矢量图形的一种图形格式。它由万维网联盟制定,是一个开放标准。 1. SVG返回顶部 SVG 指可伸缩矢量图形 (Scalable Vector Graphics) SVG 用来定义用于 网络…

MongoDB学习整理

MongoDB学习整理 文章目录 MongoDB学习整理1. 概述2. 入门语句3. 增删改查操作4. 用户管理(权限控制)5. 索引5.1 普通单列索引5.2 多列索引(复合索引)5.3 子文档索引5.4 唯一索引5.5 查询索引5.6 删除索引5.7 重建索引5.8 注意事项…

Symbian S60第三版 MR、FP1、FP2 机型的本质区别(转)

S60V3系统的9.1,9.2,9.3版本,俗称就是MR,FP1,FP2。虽然都属于S60v3系统,它们之间的区别还是很大的,对应的应用软件也有很大不同。 MR机型诺基亚已经停产。主要机型有:E50、E60、E61…

有图有真相,诺基亚商务新旗舰E71真机图放出

诺基亚商务智能新旗舰E71,大量真机图终于放出,但目前还没有得到诺基亚官方发布的消息。大家先品鉴一些最新出现的高清实拍图,一饱眼福。代号为“Liam”的诺基亚E71作为E61的升级机型,延续了E61的直板QWERTY全键盘设计,…