用xlrd读取excel
温馨提示 新版本xlrd 和xlwt 无法打开 xlsx文件。需要下载1.2.0版本
pip install xlrd==1.2.0pip install xlwt==1.2.0
横(一)是行,竖(丨)是列
import xlrd#1打开Excel文件xlrd.open_workbook('excel文件路径')#2把打开的excel文件装进盒子里方便使用excel1 = xlrd.open_workbook('excel文件路径')#3获取excel文件中所有表单的名字(sheet_name)a = excel1.sheet_name()print(a)#4根据下标返回对应表单的数据对象(即一张表单的所有数据)#返回Excel1中第一张表单的cell对象b = excel1.sheet_by_index(0)#sheet.row(n)获取表单第n行所有数据以cell对象形式返回print(b.row(5)) #获取表单b中第5行所有单元格#sheet.col(n)获取表单第n列所有数据以cell对象形式返回print(b.col(3)) #获取表单b中所有第3列的单元格#sheet.cell(row,col)获取指定行列单元格中数据以cellprint(b.cell(2,3))#sheet.cell_value()返回得是对应单元格的值print(b.cell_value(2,3)) 返回第2行第3列的值#sheet.row_slice(rowx,star_colx,end.colx) 包左不包右print(b.row_slice(5,0,3))#获取第5行的第0列到第2列的cell对象。#sheet.row_values(rowx,star_colx,end.colx) 包左不包右print(b.row_values(5,0,3))#返回的是第5行第0列到第2列的值#sheet.col_slice(colx,star_rowx,end.rowx) 包左不包右print(b.col_slice(2,1,19))#返回的是第2列第1行到第18行的cell对象。#sheet.col_values(colx,star_rowx,end.rowx) 包左不包右print(b.col_values(2,1,19))#返回的是第2列第1行到第18行的值。#sheet.col_slice()返回的cell对象无法直接进行运算,但是col_values返回的可以直接进行运算print(sum(b.col_values(2,1,19)))#求和第2列第行到第18行的值# .sheet_by_name("")根据名字返回指定表单中的数据对象c = excel1.sheet_by_name("1班") 返回 excel文件中表名为1班的表单 数据#row_values(n,star_col,end_col)返回第n行指定列的值,返回对应单元格的值.print(c.row_values(5,1,4)) 返回第5行第1列到第3列#col_values(n,star_col,end_col)返回第n列指定行的值,返回对应单元格的值.print(c.col_values(3,2,3)) 返回 第3列中第2行的数据# .sheets() 返回Excel文件中所有表单数据。按住对应顺序以列表的形式返回。无法直接进行操作需要,但可以用下标的形式操作d = excel1.sheets()
xlwt Excel的写入
import xlwt 1创建workbook对象 (就是excel文件)excel2 = xlwt.Workbook(encoding="utf8")#2 创建一个sheet对象 即创建一张表单 workbook.add_sheet('表单名字')sheet0 = excel2.add_sheet("我是第一张表呀")#3 写入数据 sheet.write(rowx,colx,text)cjb2.write(0,0,'姓名')#4 保存文件 生成新文件xls1.save("files/新2成绩表.xlsx")
Excel的编辑 读取编辑写入一个新excel(可覆盖前任)
import xlwtimport xlrdimport randomname = ['名字', '李思聪', '李健林', '马风', '张小某', '陈开歌', '冯大刚', '赵小薇', '张冰冰', '成凤', '李连连', '钱多多', '刘强西', '张良', '李言红', '周杰杰', '陈妍', '许家家', '何振西']sub = ['语文', '数学', '英语']newexcel1 = xlwt.Workbook(encoding="utf8")newsheet1 = newexcel1.add_sheet("成绩表")x = 0for i in name:newsheet1.write(x,0,i)x += 1y=1for i in sub:newsheet1.write(0,y,i)y+=1for row in range(1,19):for col in range(1,4):newsheet1.write(row,col,random.randint(60,150))newexcel1.save("11.26/files/发放.xls")# 打开文件rwb = xlrd.open_workbook("11.26/files/发放.xls")#打开要操作的表单bd1 = rwb.sheet_by_index(0)newexcel = xlwt.Workbook(encoding='utf8')newbd1 = newexcel.add_sheet("成绩表")#获取表单行数hs1 = (bd1.nrows)print(hs1)#获取数值for i in range(1,4):yw = bd1.col_values(i,1,(hs1))# print(yw)pjz = sum(yw)/(hs1-1)# print(pjz)#写入数据newbd1.write((hs1),i,pjz)newbd1.write(hs1,0,"平均分")#复制原表内容for row in range(bd1.nrows):for col in range(bd1.ncols):value = bd1.cell_value(row,col)newbd1.write(row,col,value)newexcel.save("11.26/files/newexcel.xls")