Excel文件处理笔记
-
Excel文件处理需要用到xlrd库和xlwt库,xlrd库用于读取文件,xlwt用于写入文件
pip install xlrd # 安装xlrd库 pip install xlwt # 安装xlwt库
-
读取Excel文件
# 导入库 import xlrd # 打开工作表 workbook = xlrd.open_workbook('路径')
-
获取Sheet
# 导入库 import xlrd # 打开表 workbook = xlrd.open_workbook('Excel名.xlsx/xls') # 打印所有的sheet的表名 sheet = workbook.sheet_names() print(sheet_names) / #根据索引获取sheet sheet = workbook.sheet_by_index(0) print(sheet.name) / #根据名称获取sheet sheet = workbook.sheet_by_name("表名") print(sheet.name) / #获取所以的sheet对象 sheets = workbook.sheets() for sheet in sheets: print(sheet.name) / #获取这个sheet中的行数和列数 nrows = sheet.nrows ncols = sheet.ncols
-
获取表行和列的数据
ncols 表的列数
nrows 表的行数
name.cell 表某一单元格内容
name.row_slice (x,y,z)获取第x行第y列到第z列的数据
name.col_slice(x,y,z) 获取第x列第y行到第z行的数据
name.row_values(x,y,z) 获取第x行第y列到第z列的不带数据类型的数据
name.col_values(x,y,z) 获取第x列第y行到第z行的不带数据类型数据
cell.ctype 获取数据类型
用法
import xlrd # 导入库 f = xlrd.open_workbook('工作表.xlsx') sheet = f.sheet_by_index(索引) lr = sheet.cell(x,y) # 获取工作表中x行y列的内容 lr1 = sheet.row_slice(x,y,z) # 获取第x行第y列到第z列的数据 print('列数',sheet.ncols) # 输出表的列数 print('行数',sheet.nrows) # 输出表的行数 print(lr) # 输出带有数据类型的lr数据 print(lr.value) # 只输出数据 print(lr1) # 输出带数据类型的lr1数据 for x in lr1: #循环 print(x.value) #输出不带数据类型的lr1数据
-
往Excel表内写入内容
workbook = xlwt.workbook(encoding='utf-8') #创建一个新工作表,并规定内容 sheet = workbook.add_sheet('成绩表') #创建一个成绩表 sheet.write(x,y,'语文') #在x行y列写入数据 for x in range(x,y): #循环从x列第一行开始直到y行 for y in range(x,y): #循环从x行x列开始直到x行y列 sheet.write(x,y,randint(数据内容)) #写入数据 wrokbook.save('成绩表.xls') #保存Excel
-
写入新成绩表并计算
name.put_cell 添加新行写入新的内容
import xlwt,xlrd #导入库 import random #循环库 # 打开工作表 workbook = xlrd.open_workbook('工作表。xlsx') # 索引表 sy=workbook = workbook.sheet_by_index(0) # 往表格内写入内容内容 sy.put_cell(x,y,数据类型,'写入内容',None) #求和 ncols=sy.ncols # 获取表格没改变之前的值 保存 nrows=sy.nrows # 获取表格没改变之前的值 保存 for x in range(x,nrows): # 遍历 lr=sy.row_values(x,y,nrows) sy.put_cell(x,y,xlrd.XL_CELL_NUMBER,sum(lr),None) # 求平均成绩 for x in range(1,4): #遍历 lr1=sy.col_values(x,1,nrows) pj=sum(lr1)/len(lr1) sy.put_cell(nrows,x,xlrd.XL_CELL_NUMBER,pj,None) # 遍历表格 for x in range(nrows): for y in range(ncols): lr3=sy.cell_value(x,y) sheed.write(x, y, lr3) # 把内容写入新表格 xbg.save('成绩表3.xls')