xlrd和xlwt模块
简述
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
xlwt使用:
import xlwt def set_style(name, high, colour='white', bold=False, format_str='', align='center'): style = xlwt.XFStyle() # 初始化样式 font = xlwt.Font() # 为样式创建字体 font.name = name font.bold = bold font.height = high borders = xlwt.Borders() #为样式创建边框 borders.left = 2 borders.right = 2 borders.top = 0 borders.bottom = 2 pattern = 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 = font style.borders = borders style.num_format_str = format_str style.alignment = alignment style.pattern = pattern return style wb = 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*30 ws.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')
写入的表格内容:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律