当前位置:文档之家› 九、Python 操作excel(一)

九、Python 操作excel(一)

pip install xlrd(读)1.导入:import xlrd2.打开文件:book = xlrd.open_workbook(文件位置+文件名)3.根据sheet名称获取工作薄:sheet = book.sheet_by_name('Sheet5')4.获取行数:rows = sheet.nrows5.获取列数:cols = sheet.ncols6. 按行获取值:for r in range(rows):row_vaule = sheet.row_values(r)7.按列获取值: for c in range(cols):col_vuale = sheet.col_values(c)8.按行列获取值:sheet.cell(行,列) 注:行列第一行下标从0开始pip install xlwt(写,不支持xlsx格式)1.导入:import xlwt2.初始化并创建一个工作簿:book = xlwt.Workbook()3.sheet = book.add_sheet('Sheet5',cell_overwrite_ok = True) #同一个单元格重复写入数据设置,book.add_sheet('Sheet5',cell_overwrite_ok = True)4.按行列写入:sheet.write(行,列,'内容')5.合并信息并写入样式:sheet.write_merge(开始行,结束行,开始列,结束列,'内容',self.styleExcle(2,3)) #self.styleExcle(2,3)自定义函数,2,3为参数,详见下面的实例6.保存:book.save(文件位置+文件名)pip install xlutils(结合读写可修改excel)1.导入:from xlutils.copy import copy import os2.打开文件:book = xlrd.open_workbook(filename)3.复制excel:newbook = copy(book)4.打开第一个工作薄:sheet = newbook.get_sheet(0)5.修改第2行,第一列的值:sheet.write(1,0,'xiugren')6.保存文件:newbook.save(copefilename)7.删除旧文件:os.remove(filename)8.重命名新文件名为旧文件名:os.rename(copefilename,filename)文件路径实例#!/usr/bin/python# ‐*‐ coding: UTF‐8 ‐*‐import xlrdimport xlwtfrom xlutils.copy import copyimport os'''xlwt:只支持xls不支持xlsx如果写入数据时,打开了exl会报PermissionError: [Errno 13] Permission denied: 异常 '''class excel():#编辑Excel样式,字体加粗加红def styleExcle(self,fontclour,patternclour):#初始化样式style = xlwt.XFStyle()#为样式创建字体font = xlwt.Font()font.colour_index = fontclour #2为红色 3为绿色#font.bold = True #粗体#font.height = 400# 字体大小#font.italic = True # 斜体#font.struck_out =True # 横线(比如:在一个字中 画上一横)style.font= font#设置背景颜色pattern = xlwt.Pattern()#设置背景颜色的模式pattern.pattern = xlwt.Pattern.SOLID_PATTERN#背景颜色pattern.pattern_fore_colour= patternclour#2为红色 3为绿色style.pattern = patternreturn style#xlwt(写)def wirteExcle(self,filename,data):#初始化并创建一个工作簿book = xlwt.Workbook()#创建一个名为sheetname的表单sheet = book.add_sheet('Sheet5',cell_overwrite_ok = True)#同一个单元格重复写入数据设置,book.add_sheet('Sheet5',cell_overwrite_ok = True)#同一个单元格重复写入数据设置,book.add_sheet('Sheet5',cell_overwrite_ok = True) #默认 cell_overwrite_ok = False 表示禁止重复写入,重写抛出异常raiseException(msg)Exception: Attempt to overwrite cell:c=1for students in data:#标题sheet.write(0,0,'姓名')sheet.write(0,1,'年龄')#内容(行,列,值)第一行=0,第一列=0sheet.write(c,0,students['name'])sheet.write(c,1,students['age'])c+=1#(开始行,结束行,开始列,结束列,合并信息)sheet.write_merge(c,c,0,1,'学生信息',self.styleExcle(2,3))#将工作簿以filename命名并保存book.save(filename)#xlutils(结合读写可修改excel)def updateExcle(self,filename,copefilename):book = xlrd.open_workbook(filename)#打开文件newbook = copy(book)#复制excelsheet = newbook.get_sheet(0)#打开第一个工作薄sheet.write(1,0,'xiugren')#修改第2行,第一列的值newbook.save(copefilename)#保存文件os.remove(filename)#删除文件os.rename(copefilename,filename)#重命名#xlrd(读)def readExcle(self,filename):print('‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐开始‐读‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐') book = xlrd.open_workbook(filename)#打开文件sheetname =book.sheet_names()#查看文件中包含sheet的名称sheet = book.sheet_by_name('Sheet5')#根据sheet名称获取工作薄#sheet = file.sheets()[0] #获取第一个sheet#sheet = file.sheet_by_index(0)#获取第一个sheet#cell_A1 = sheet.cell(0,0).value#获取第1行第1列的值#row_A1 = sheet.row(0)[1].value#获取第1行第2列的值#col_A2 = sheet.col(1)[2].value#获取第2列第2行的值#print(cell_A1,row_A1,col_A2)rows = sheet.nrows#获取行数cols = sheet.ncols#获取列数print('按行打印值,返回list值,一行一个list')for r in range(rows):row_vaule = sheet.row_values(r)print(r,row_vaule)print('按列打印值,返回list值,一列一个list')for c in range(cols):#默认从0开始,如果从1开始(1,cols)col_vuale = sheet.col_values(c)print(c,col_vuale)print('按第二行,第二列打印值')print(sheet.cell(1,1))print('‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐结束‐读‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐') if __name__=='__main__':str= [{'name':'zhangshan','age':19},{'name':'lisi','age':28},{'name':'wangwu','age':59}]exl = excel()exl.wirteExcle('D:\excel\pythonexcel.xls',str)exl.readExcle('D:\excel\pythonexcel.xls')exl.updateExcle('D:\excel\pythonexcel.xls','D:\excel\pythonexcel1.xls') 文件内容读取文件内容,控制台打印信息‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐开始‐读‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐按行打印值,返回list值,一行一个list0 ['姓名', '年龄']1 ['zhangshan', 19.0]2 ['lisi', 28.0]3 ['wangwu', 59.0]4 ['学生信息', '']按列打印值,返回list值,一列一个list0 ['姓名', 'zhangshan', 'lisi', 'wangwu', '学生信息']1 ['年龄', 19.0, 28.0, 59.0, '']按第二行,第二列打印值number:19.0‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐结束‐读‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐。

相关主题