当前位置 : 主页 > 网络编程 > 其它编程 >

xlrd和xlwt模块

来源:互联网 收集:自由互联 发布时间:2023-07-02
简述xlrd和xlwt是python的第三方库,xlrd模块实现对excel文件内容读取,xlwt模块实现对excel文件的写入使用前需先进行安装这2个库pipinstall xl 简述 xlrd和xlwt是python的第三方库,xlrd模块实现对
简述xlrd和xlwt是python的第三方库,xlrd模块实现对excel文件内容读取,xlwt模块实现对excel文件的写入使用前需先进行安装这2个库pipinstall xl

简述

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 xlrdfrom 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列内容:roseprint(sheet1_data.col(2)[2].value) # 第3行第3列内容:北京# 获取单元格内容的数据类型:说明:ctype : 0 empty,1 string, 2 number, 3 date, 4 boolean, 5 errorprint(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.40625if 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.0if sheet2_data.cell(1, 2).ctype == 2: print(int(sheet2_data.cell(1, 2).value)) # 46

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')

 

写入的表格内容:

 

【文章转自bgp服务器 http://www.558idc.com/yz.html提供,感恩】
上一篇:七牛雲試用指南-文件下載
下一篇:没有了
网友评论