活动地址:CSDN21天学习挑战赛
目录
一、7大库优缺点对比二、xlrd读取Excel表1、安装xlrd模块2、xlrd读取Excel表1)打开Excel表2)获取全部表名3)指定sheet表4)sheet表的行操作4)sheet表的列操作三、xlwt写入Excel表1、安装xlwt包2、写入单条数据3、多条数据写入4、设置宽度和高度5、自定义单元格样式一、7大库优缺点对比
二、xlrd读取Excel表
xlrd读取Excel表数据非常快,支持.xls和.xlsx
1、安装xlrd模块
pip install xlrd
2、xlrd读取Excel表
1)打开Excel表
错误:
xlrd-2.0.1不支持xlsx,需要卸载,安装1.2版本,需要自行解决
pip install xlrd=1.2.0
2)获取全部表名
import xlrd#打开文件wb = xlrd.open_workbook("test.xls")list_name = wb.sheet_names()print(list_name)
3)指定sheet表
import xlrd#打开文件wb = xlrd.open_workbook("test.xls")#按名称指定sheet1 = wb.sheet_by_name('test')print(sheet1)#按索引指定,索引是从0开始计算sheet2 = wb.sheet_by_index(0)print(sheet2)
4)sheet表的行操作
参数列表:行数rowx从0开始算起,不包含结束列end_colx,默认值Noneimport xlrd# 打开文件wb = xlrd.open_workbook("test.xls")# 通过sheet索引获得sheet对象sheet = wb.sheet_by_index(0)print(sheet)# 获取该表总行数nrows = sheet.nrowsprint("总行数是:", nrows)# 显示单行数据,索引从0开始计算print(sheet.row(0))# sheet.row(0) == sheet.row_slice(0) 效果相同print(sheet.row_slice(0))# 显示单行数据 索引从0开始计算print(sheet.row_values(1))# rowx第几行,start_colx从第几列开始,第几列结束 默认值end_colx=Noneprint(sheet.row_values(rowx=2, start_colx=0, end_colx=1))# 行的有效长度print("行的有效长度:", sheet.row_len(0))# 循环打印里面所有数据for i in range(nrows):print(sheet.row_values(i))
4)sheet表的列操作
参数列表 列数colx从0开始算起,不包含结束行end_rowx,默认值Noneimport xlrd# 打开文件wb = xlrd.open_workbook("test.xls")# 通过sheet索引获得sheet对象sheet = wb.sheet_by_index(0)print(sheet)# 获取该表总列数ncols = sheet.ncolsprint("总列数是:", ncols)# 显示单列数据,索引从0开始计算print(sheet.col(0))# sheet.col(0) == sheet.col_slice(0) 效果相同# 带列名print(sheet.col_slice(0))print("=" * 40)# 不带列名print(sheet.col_slice(0, 1))print("=" * 40)# 循环打印里面所有数据for i in range(ncols):print(sheet.col_values(i))
三、xlwt写入Excel表
xlwt写入Excel表数据,支持.xls和.xlsx
1、安装xlwt包
pip install xlwt
2、写入单条数据
import xlwt# 创建Excel对象 并指定编码格式ws = xlwt.Workbook(encoding='utf-8')# 创建sheet表sheet = ws.add_sheet('sheet1')# 第一个参数是行# 第二个参数是列# 第三个参数需要写入的内容sheet.write(0, 0, 'python')# 保存数据名字和格式ws.save('test1.xls')# 保存正常,但是打开报错,后续在解决ws.save('test2.xlsx')
3、多条数据写入
import xlwt# 定义写入数据data_list = [("张三", 35, '男'), ('李四', 32, '男'), ('凤姐', 33, '女'), ('小明', 12, '男')]# 创建Excel对象 并指定编码格式ws = xlwt.Workbook(encoding='utf-8')# 创建sheet表sheet = ws.add_sheet('sheet1')# 自定义列名表头col_name = ('姓名', '年龄', '性别')# 循环写入sheet表单第一行for i in range(0, len(col_name)):sheet.write(0, i, col_name[i])# 循环写入数据for i in range(0, len(data_list)):data = data_list[i]for j in range(0, len(col_name)):sheet.write(i + 1, j, data[j])ws.save('test1.xls')
结果:
4、设置宽度和高度
sheet.col(“行索引”).width = 256 * 24
sheets.row(“行索引”).height_mismatch = True 默认行高是和文字的高度进行匹配的,即 值是 False,我们设置行高不会生效
sheets.row(“行索引”).height = 20*20 # 其中一个20代表单位,想要行高是多少乘以多少就行了。
import xlwt# 定义写入数据data_list = [("张三", 35, '男'), ('李四', 32, '男'), ('凤姐', 33, '女'), ('小明', 12, '男')]# 创建Excel对象 并指定编码格式ws = xlwt.Workbook(encoding='utf-8')# 创建sheet表sheet = ws.add_sheet('sheet1')# 自定义列名表头col_name = ('姓名', '年龄', '性别')# 循环写入sheet表单第一行for i in range(0, len(col_name)):# 设置宽度sheet.col(i).width = 256 * 24# 设置高度sheet.row(i).height_mismatch = Truesheet.row(i).height = 20*20sheet.write(0, i, col_name[i])# 循环写入数据for i in range(0, len(data_list)):data = data_list[i]for j in range(0, len(col_name)):sheet.write(i + 1, j, data[j])# 设置高度sheet.row(i+1).height_mismatch = Truesheet.row(i+1).height = 20*20ws.save('test1.xls')
5、自定义单元格样式
参数说明:
import xlwt# 定义写入数据data_list = [("张三", 35, '男'), ('李四', 32, '男'), ('凤姐', 33, '女'), ('小明', 12, '男')]# 创建Excel对象 并指定编码格式ws = xlwt.Workbook(encoding='utf-8')# 创建sheet表sheet = ws.add_sheet('sheet1')# 实例化表格样式对象xstyle = xlwt.XFStyle()# 设置字体样式xfont = xlwt.Font()xfont.colour_index = 0x04 # 设置字体颜色xfont.bold = True # 字体加粗xfont.height = 20 * 18 # 设置字体高度(20是基数不变,18是字号用于调整大小)xfont.underline = 0x01 # 设置字体带下划线xfont.name = '华文彩云' # 设置字体# 将字体对象赋值给样式对象xstyle.font = xfont# 自定义列名表头col_name = ('姓名', '年龄', '性别')# 循环写入sheet表单第一行for i in range(0, len(col_name)):# 设置宽度sheet.col(i).width = 256 * 24# 设置高度sheet.row(i).height_mismatch = Truesheet.row(i).height = 20 * 20sheet.write(0, i, col_name[i], style=xstyle)# 循环写入数据for i in range(0, len(data_list)):data = data_list[i]for j in range(0, len(col_name)):sheet.write(i + 1, j, data[j], style=xstyle)# 设置高度sheet.row(i + 1).height_mismatch = Truesheet.row(i + 1).height = 20 * 20ws.save('test1.xls')