本文是Python对Excel常用操作的演示测试环境:Python3.7openpyxl3.0.5Windows10专业版(CPU:i5-8500RAM:16GB)使用的Python包:1.OS(内置,无需安装)2.random(内置,无需安装)3.openpyxl安装:pip3installopenpyxl==3.0.5运行代码#1.解压'excel_oparetion.rar'后#2.python3excel_base_op.pyExcel对应openpyxl目标工作簿(workbook):一个Excel电子表格文档;工作表(sheet):每个工作簿可以包含多个工作表,如:sheet1、sheet2等;activesheet(活动工作表):用户当前查看的工作表;Column(列):列地址从A开始;行(row):行地址从1开始;单元格(cell):特定行和列的正方形;openpyxl的基本操作(建议按照stepbystep操作哦,虽然后面有完整的代码)导包importrandomimportopenpyxl读取Excel:1.打开已有工作表,获取工作簿对象file_name="practice.xlsx"wb=openpyxl.load_workbook(file_name)2.工作簿的基本属性#获取表单中所有sheet的名称,并返回一个列表sheet_name_lis=wb.sheetnamesprint("文件%s,sheet的名称列表为:%s"%(file_name,sheet_name_lis))#fileexercise.xlsx,withthesheetnamelistis:['Sheet1','Sheet2']3.获取sheet对象sheet_name_1=wb.sheetnames[0]sheet_1=wb[sheet_name_1]4.sheet的基本属性print("%s最大列数:%s,最大行数:%s"%(sheet_1.title,sheet_1.max_column,sheet_1.max_row))#Sheet1最大列数:5,最大行数:105。获取单元格对象的基本属性cell_1_2=sheet_1.cell(1,2)6.cellprint("Cell%s,value:%s,横坐标:%s,纵坐标%s"%(cell_1_2.coordinate,cell_1_2.value,cell_1_2.row,cell_1_2.column))#CellB1,value:我是B1,横坐标:1,纵坐标27.cell的多种访问方式#1.使用column访问cell#单列col_b=sheet_1['B']print("表%s中B列的值:%s"%(sheet_1.title,[cel.valueforcelincol_b]))#Sheet1中B列的值:['我是B1','我是B2','我是B3','我是B4','我是B5','我是B6','我是B7','我是B8','我是B9','我是B10']#多列#col_range=sheet_1['C:D']#2.使用行访问单元格#单行row_3=sheet_1[3]print("表格%s第3行值:%s"%(sheet_1.title,[r.valueforrinrow_3]))#Sheet1第3行的值:['我是A3','我是B3','我是C3','我是D3','我amE3']#多行#row_range=sheet_1[2:5]2.写入Excel:1.新建一个excel文件,当然你也可以在当前文件中修改#注意Workbook首字母大写new_wb=openpyxl.工作簿()2。新建一个sheet#获取当前sheet,默认第一个new_sheet_1=new_wb.active#可以重命名sheet,默认"sheet"new_sheet_1.title="Iamanewsheet"#或者新建一个sheet#new_sheet_1=new_wb.create_sheet("我是标题",0)3.插入数据#1.设置单元格的值,三种方式new_sheet_1['A2']="First"new_sheet_1.cell(row=2,column=2).value="Secondtype"new_sheet_1.cell(row=2,column=3,value="Thirdtype")#2.写整行#在当前sheet的底部添加一行(即就是,逐行追加,从第一行开始)必须是list、tuple、dict、range、generator类型的#1,如果是list,则从头到尾依次添加list。#2、如果是dict,则根据对应的key添加对应的keyvalue。new_sheet_1.append([0,1,2,3])new_sheet_1.append({"A":"这是A","C":"这是C"})new_sheet_1.append({1:"这是A",3:"ThisisC"})#使用列写入单元格col_c=new_sheet_1['C']forcelincol_c:cel.value=random.randint(1,50)col_range=new_sheet_1['C:D']for_celincol_range:forcin_cel:c.value=random.randint(1,50)#使用行写入单元格#row_10=new_sheet_1[10]#row_range=new_sheet_1[2:9]4.Save(一定要保存!!)new_wb.save("Iamanewtable.xlsx")#如果报这个错,很大概率你还在打开这个表,关掉就好了#PermissionError:[Errno13]Permissiondenied:'Iamanewtable.xlsx'3.其他1.创建工作表副本copy_sheet=new_wb.copy_worksheet()2.从openpyxl设置单元格(RRGGBB)的背景色。stylesimportPatternFill#generatestylegreen_fill=PatternFill(fgColor="AACF91",fill_type="solid")orange_fill=PatternFill(fgColor="FFC125",fill_type="solid")#填充图案ternnew_sheet_1.cell(2,2).fill=green_fillnew_sheet_1.cell(2,3)。fill=orange_fillnew_wb.save("Iamanewtable.xlsx")4.根据'practice.xlsx'文件sheet2中的H列练习分组,在文件新建的sheet中将行填充值为1,并将值设置为2行填充到新文件中。5.完成demoimportrandomimportopenpyxlfromopenpyxl.stylesimportPatternFillfile_name="Exercise.xlsx"wb=openpyxl.load_workbook(file_name)#获取表格中所有sheet的名称并返回一个列表sheet_name_lis=wb.sheetnamesprint("file%s,sheet的名称列表为:%s"%(file_name,sheet_name_lis))#fileexercise.xlsx,sheet的名称列表为:['Sheet1','Sheet2']sheet_name_1=wb.sheetnames[0]sheet_1=wb[sheet_name_1]print("%s最大列数:%s,最大行数:%s"%(sheet_1.title,sheet_1.max_column,sheet_1.max_row))#Sheet1最大列数:5,最大行数:10cell_1_2=sheet_1.cell(1,2)print("单元格%s,值:%s,横坐标:%s,纵坐标%s"%(cell_1_2.coordinate,cell_1_2.value,cell_1_2.row,cell_1_2.column))#cellB1,value:IamB1,横坐标:1,纵坐标2#1.使用列访问单元格#单列col_b=sheet_1['B']print("表格%sB列的值:%s"%(sheet_1.title,[col_b中cel的cel.value]))#TSheet1B列的值:['我是B1','我是B2','我是B3','我是B4','我是B5','我是B6','我是B7','我是B8','我是B9','我是B10']#多列#col_range=sheet_1['C:D']#2.使用行访问单元格#单行row_3=sheet_1[3]print("Table%srow3value:%s"%(sheet_1.title,[r.valueforrinrow_3]))#Sheet1第3行的值:['我是A3','我是B3','我是C3','我是D3','我是E3']#多行#row_range=sheet_1[2:5]#注意Workbook首字母大写new_wb=openpyxl.Workbook()#获取当前sheet,默认第一个new_sheet_1=new_wb.active#可以重命名sheet,默认"sheet"new_sheet_1.title="我是新的sheet"#或者新建一个sheet#new_sheet_1=new_wb.create_sheet("我是title",0)#1.设置单元格的值,三种方式new_sheet_1['A2']="第一个"new_sheet_1.cell(row=2,column=2).value="第二种"new_sheet_1.cell(row=2,column=3,value="第三种")#2.写全line#添加一行到当前sheet的底部(即从第一行开始逐行追加)必须是list,tuple,dict,range,generator类型的#1,如果是list,添加从头到尾依次列出。#2、如果是dict,则根据对应的key添加对应的keyvalue。new_sheet_1.append([0,1,2,3])new_sheet_1.append({"A":"这是A","C":"这是C"})new_sheet_1.append({1:"这是A",3:"ThisisC"})#使用列写入单元格col_c=new_sheet_1['C']forcelincol_c:cel.value=random.randint(1,50)col_range=new_sheet_1['C:D']for_celincol_range:forcin_cel:c.value=random.randint(1,50)#使用行写入单元格#单行#row_10=new_sheet_1[10]#多行#row_range=new_sheet_1[2:9]new_wb.save("Iamanewtable.xlsx")#如果报这个错,很大概率你还在打开这个表,关掉就好了#PermissionError:[Errno13]Permissiondenied:'IamNewtable.xlsx'#generatestylegreen_fill=PatternFill(fgColor="AACF91",fill_type="solid")orange_fill=PatternFill(fgColor="FFC125",fill_type="solid")#填充样式new_sheet_1.cell(2,2).fill=green_fillnew_sheet_1.cell(2,3).fill=orange_fillnew_wb.save("我是一张新的sheet.xlsx")
