操作excel(读、写、修改),模块:xlrd、xlwt 和 xlutils。
1、读excel
import xlrd #读excel book = xlrd.open_workbook(r'students.xlsx') #打开excel print(book.sheet_names()) #获取所有sheet的名字 sheet = book.sheet_by_index(0) #根据sheet页的位置去取sheet # sheet2 = book.sheet_by_name('Sheet2') #根据sheet页的名字获取sheet页 print(sheet.nrows) #获取sheet页里面的所有行数 print(sheet.ncols) #获取sheet页里面的所有列数 print(sheet.row_values(0)) #根据行号获取整行的数据 print(sheet.col_values(0)) #根据列获取整列的数据 print(sheet.cell(1,1).value) #cell方法是获取指定单元格的数据,前面是行,后面是列 lis = [] for i in range(1,sheet.nrows): #i代表的是每一行,因为第一行是表头,所以直接从第二行开始循环 d = {} id = sheet.cell(i,0).value #行是不固定的,列是固定的 name = sheet.cell(i,1).value sex = sheet.cell(i,2).value d['id']=int(id) d['name']=name d['sex']=sex lis.append(d) print(lis)
2、写excel
import xlwt # 写excel lis = [{'id': 1, 'name': '小明', 'sex': '男'}, {'id': 2, 'name': '小黑', 'sex': '男'}] title = ['编号','姓名','性别'] book = xlwt.Workbook() #新建一个excel对象 sheet = book.add_sheet('stu') #添加一个sheet页 sheet.write(0,0,'编号') book.save('stu.xls') book = xlwt.Workbook() #新建一个excel对象 sheet=book.add_sheet('new_stu') for i in range(len(title)): sheet.write(0,i,title[i]) for row in range(len(lis)): id = lis[row]['id'] #因为lis里面存的是一个字典,lis[row]就代表字典里面的每个元素,然后字典取值 #固定的key就可以了 name = lis[row]['name'] sex = lis[row]['sex'] new_row = row+1 #因为循环的时候是从0开始循环的,第0行是表头,不能写 #要从第二行开始写,所以这里行数要加一 sheet.write(new_row,0,id) sheet.write(new_row,1,name) sheet.write(new_row,2,sex) book.save('new_stu.xls')
3、修改excel
import xlrd from xlutils.copy import copy book = xlrd.open_workbook('new_stu.xls') #打开原来的excel new_book = copy(book) #通过xlutils里面copy复制一个excel对象 sheet = new_book.get_sheet(0) #获取sheet页 sheet.write(0,0,'id') new_book.save('new_stu.xls') #保存文件名称不变会覆盖原有文件