Python怎么利用xlrd和xlwt模块操作Excel表格
发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,这篇文章主要为大家展示了"Python怎么利用xlrd和xlwt模块操作Excel表格",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"Python怎么利用x
千家信息网最后更新 2026年11月01日Python怎么利用xlrd和xlwt模块操作Excel表格
这篇文章主要为大家展示了"Python怎么利用xlrd和xlwt模块操作Excel表格",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"Python怎么利用xlrd和xlwt模块操作Excel表格"这篇文章吧。
简介:
xlrd和xlwt是python的第三方库,xlrd模块实现对excel文件内容读取,xlwt模块实现对excel文件的写入。
安装:
pip install xlrdpip install xlwt
初始数据:
excelLearn.xls
个人信息表:
| 姓名 | 年龄 | 地址 |
| Tom | 26 | CN |
| Jo | 27 | UK |
| Lily | 28 | US |
| Kim | 29 | JP |
班级成绩表:
| 考试日期 | 班级 | 分数 |
| 2020/1/1 10:20 | A1 | 60 |
| 2021/1/2 10:40 | A2 | 80 |
| 2022/1/3 10:50 | A3 | 90 |
Sheet3:空
xlrd使用:
细节:没有值的地方获取,注意索引越界,超出会抛异常。
1、打开Excel文件读取数据
2、根据下标获取sheet名称
3、根据sheet索引或者名称获取sheet内容,获取sheet名称、列数、行数
4、根据sheet名称获取整行和整列的值
5、获取指定单元格的内容
6、获取单元格内容的数据类型
7、获取单元内容为日期类型的方式
8、获取单元内容为number的方式(转为整型)
import xlrd# 打开Excel文件读取数据data = xlrd.open_workbook('excelLearn.xls')sheet_name = data.sheet_names() # 获取所有sheet名称print(sheet_name) # ['个人信息表', '班级成绩表', 'Sheet3']# 根据下标获取sheet名称sheet2_name = data.sheet_names()[1]print(sheet2_name) # 班级成绩表# 根据sheet索引或者名称获取sheet内容,同时获取sheet名称、列数、行数sheet1 = data.sheet_by_name('个人信息表')print('sheet1名称:{}\nsheet1列数: {}\nsheet1行数: {}'.format(sheet1.name, sheet1.ncols, sheet1.nrows))# sheet1名称: 个人信息表# sheet1列数: 3# sheet1行数: 5print()sheet2 = data.sheet_by_index(1)print('sheet2名称:{}\nsheet2列数: {}\nsheet2行数: {}'.format(sheet2.name, sheet2.ncols, sheet2.nrows))# sheet2名称: 班级成绩表# sheet2列数: 3# sheet2行数: 4# 根据sheet名称获取整行和整列的值sheet1 = data.sheet_by_name('个人信息表')print(sheet1.row_values(0)) # 第一行:['姓名', '年龄', '地址']print(sheet1.row_values(1)) # 第二行:['Tom', 26.0, 'CN']print(sheet1.col_values(1)) # 第二列:['年龄', 26.0, 27.0, 28.0, 29.0]print(sheet1.col_values(2)) # 第三列:['地址', 'CN', 'UK', 'US', 'JP']# 获取指定单元格的内容print(sheet1.cell(0, 0).value) # 第1行1列内容:姓名print(sheet1.cell_value(1, 1)) # 第2行2列内容:26.0print(sheet1.row(2)[2].value) # 第3行3列内容:UK# 获取单元格内容的数据类型:说明:ctype : 0 empty,1 string, 2 number, 3 date, 4 boolean, 5 errorprint(sheet1.cell(0, 0).ctype) # 第1行1列内容:姓名为string类型 -> 1print(sheet1.cell(1, 1).ctype) # 第2行2列内容:26.0为number类型 -> 2# 获取到日期转为date格式from datetime import datetime, dateif sheet2.cell(1, 0).ctype == 3: print(sheet2.cell(1, 0).value) # 43831.43090277778 date_value = xlrd.xldate_as_tuple(sheet2.cell(1, 0).value, data.datemode) print(date_value) # (2020, 1, 1, 10, 20, 30) print(date(*date_value[:3])) # 2020-01-01 print(date(*date_value[:3]).strftime('%Y/%m/%d')) # 2020/01/01# 获取单元内容为number的方式(转为整型)if sheet1.cell(1, 1).ctype == 2: print(sheet1.cell(1, 1).value) # 26.0 num_value = int(sheet1.cell(1, 1).value) print(num_value) # 26# IndexError: list index out of range# 没有第9行第9列的值,获取会抛出异常。# print(sheet1.cell(8, 8))xlwt使用:
import xlwtfrom datetime import datetimedef set_style(name, height, bold=False, format_str=''): style = xlwt.XFStyle() # 初始化样式 font = xlwt.Font() # 为样式创建字体 font.name = name # 'Times New Roman' font.bold = bold font.height = height borders = xlwt.Borders() # 为样式创建边框 borders.left = 6 borders.right = 6 borders.top = 6 borders.bottom = 6 style.font = font style.borders = borders style.num_format_str = format_str return stylewb = xlwt.Workbook()ws = wb.add_sheet('代码生成sheet') # 增加sheetws.col(0).width = 200 * 30 # 设置第一列列宽ws.write(0, 0, 11.22, set_style('Times New Roman', 220, bold=True, format_str='#,##0.00'))ws.write(0, 1, "新增文字", set_style('Times New Roman', 220, bold=True))ws.write(1, 0, datetime.now(), set_style('Times New Roman', 220, bold=False, format_str='DD-MM-YYYY'))styleOK = xlwt.easyxf('pattern: fore_colour light_blue;' 'font: colour green, bold True;')pattern = xlwt.Pattern() # 一个实例化的样式类pattern.pattern = xlwt.Pattern.SOLID_PATTERN # 固定的样式pattern.pattern_fore_colour = xlwt.Style.colour_map['pink'] # 背景颜色styleOK.pattern = patternws.write(2, 0, 1, style=styleOK)ws.write(2, 1, 1)ws.write(2, 2, xlwt.Formula("A3+B3"))wb.save('write.xls') # 保存xls运行结果产出的Excel1:
xlwt使用示例2:
import xlwtfrom datetime import datetime, date def set_style(name, height, bold=False, format_str='',align='center'): style = xlwt.XFStyle() # 初始化样式 font = xlwt.Font() # 为样式创建字体 font.name = name # 'Times New Roman' font.bold = bold font.height = height borders = xlwt.Borders() # 为样式创建边框 borders.left = 2 borders.right = 2 borders.top = 0 borders.bottom = 2 alignment = xlwt.Alignment() # 设置排列 if align== 'center': alignment.horz = xlwt.Alignment.HORZ_CENTER alignment.vert = xlwt.Alignment.VERT_CENTER else: alignment.horz = xlwt.Alignment.HORZ_LEFT alignment.vert = xlwt.Alignment.VERT_BOTTOM style.font = font style.borders = borders style.num_format_str = format_str style.alignment = alignment return style wb = xlwt.Workbook()ws = wb.add_sheet('联系人',cell_overwrite_ok=True) # 增加sheetrows = ['机构名称', '姓名', '部门', '电话', '入职日期', '手机', '邮箱']col1 = ['王1', '王2', '王3']col2 = ['666', '777','888']col3 = ['2014-08-09','2014-08-11','2015-08-09']# 写第一行数据ws.write_merge( 0, 0, 0, 6, '联系人表', set_style( 'Times New Roman', 320, bold=True, format_str='')) # 合并单元格 styleOK = xlwt.easyxf() pattern = xlwt.Pattern() # 一个实例化的样式类pattern.pattern = xlwt.Pattern.SOLID_PATTERN # 固定的样式pattern.pattern_fore_colour = xlwt.Style.colour_map['yellow'] # 背景颜色 borders = xlwt.Borders() # 为样式创建边框borders.left = 2borders.right = 2borders.top = 6borders.bottom = 2 font = xlwt.Font() # 为样式创建字体font.name = 'Times New Roman'font.bold = Truefont.height = 220 styleOK.pattern = patternstyleOK.borders = bordersstyleOK.font = font # 写第二行数据for index, val in enumerate(rows): ws.col(index).width = 150 * 30 # 定义列宽 ws.write(1, index, val, style=styleOK) # 写第3行-6行第一列数据ws.write_merge( 2, 2 + len(col1)-1, 0, 0, 'x机构', set_style( 'Times New Roman', 320, bold=True, format_str='')) # 合并单元格 # 从第3行开始写1列数据for index, val in enumerate(col1): ws.col(1).width = 150 * 30 # 定义列宽 ws.write(index+2, 1, val, style=set_style('Times New Roman', 200, bold=False, format_str='',align='')) # 从第3行开始写4列数据for index, val in enumerate(col2): ws.col(3).width = 150 * 30 # 定义列宽 ws.write(index+2, 3, val, style=set_style('Times New Roman', 200, bold=False, format_str='',align='')) # 从第3行开始写5列数据for index, val in enumerate(col3): ws.col(4).width = 150 * 30 # 定义列宽 ws.write(index+2, 4, val, style=set_style('Times New Roman', 200, bold=False, format_str='',align='')) ws.write(4, 2,'技术部', style=styleOK)ws.write(4, 5,'186777233', style=styleOK)ws.write(4, 6,'wang@166.com', style=styleOK)wb.save('write2.xls') # 保存xls运行结果产出的Excel2:
以上是"Python怎么利用xlrd和xlwt模块操作Excel表格"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!
内容
名称
样式
数据
单元
模块
个人
信息
班级
类型
姓名
成绩
文件
日期
表格
地址
字体
年龄
方式
篇文章
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
互联网科技产业
互联网佳科技有限公司
蓝思科技飞鸽互联网
科技创新与互联网经济
今日互联网科技
互联网科技小贷
礼当家互联网科技
北京互联网络科技有限公司
极限挑战互联网科技
广西互联网科技公司
伴你行互联网科技有限公司
成都玖崟互联网科技有限公司乐商圈怎么样
互联网科技公司需要的职位
哈尔滨新华互联网科技学院
互联网科技热点资讯
互联网新科技动漫ppt素材
济南有互联网科技公司吗
互联网科技新闻
北京互联网科技类企业分布
北京瑞云互联网科技有限公司
有格互联网科技
广州互联网科技公司
伴你行互联网科技有限公司
深圳市罗太互联网科技有限公司
互联网科技的全部知识
怎样加入科技互联网
互联网与数字科技关系
新氧科技和美国互联网有关系吗
河南商务圈互联网科技有限公司
互联网的黑科技实验室