python3结合openpyxl库实现excel操作的实例代码
一.相关说明:
1、openpyxl(可读写excel表)专门处理Excel2007及以上版本产生的xlsx文件;2007一下的版本为xls结尾的文件,需要使用xlrd和xlwt库进行操作
2、excel表的文字编码如果是“gb2312”读取后就会显示乱码,请先转成Unicode
3、workbook:工作簿,一个excel文件包含多个sheet。
4、sheet:工作表,一个workbook有多个,表名识别,如“sheet1”,“sheet2”等。
5、cell:单元格,存储数据对象
二.openpyxl的使用方法
1.新建
importopenpyxl #新建一个空excel,表名为sheet,文件名为test wb=openpyxl.Workbook()#创建新的excel文件,一个工作簿(workbook)在创建的时候同时至少也新建了一张工作表(worksheet) wb.save('test.xlsx')
2.表操作
注:从此操作往后都使用如下的测试数据
importopenpyxl importopenpyxl.styles #打开已有的excel wb=openpyxl.load_workbook("test.xlsx") #------------------表操作------------------ #新建sheet表 wb.create_sheet(index=2,title="sheet3")#可通过index控制创建的表的位置 #获取所有表名 sheet_names=wb.sheetnames#得到工作簿的所有工作表名结果:['Sheet1','Sheet2','Sheet3'] #根据表名删除sheet表 wb.remove(wb[sheet_names[2]])#删除上一步建的第3个工作表 #根据表名打开sheet表 sheet1=wb[sheet_names[0]]#打开第一个sheet工作表
3.读取数据
#------------------读取数据------------------ #获取单元格数据 sheet1_max_colum=sheet1.max_column#获取最大列数结果:3 #ws=wb.active#获取当前活动的sheet页 sheet1_max_row=sheet1.max_row#获取最大行数结果:10 A1_value=sheet1['A1'].value#获取单元格A1值结果:a1 A1_column=sheet1['A1'].column#获取单元格A1列值结果:A A1_row=sheet1['A1'].row#获取单元格A1行号结果:1 A1=sheet1.cell(row=1,column=1).value#获取第一行第一列的单元格值结果:a1 #获取C列的所有数据 list_sheet1_column_C=[] foriinsheet1["C"]: list_sheet1_column_C.append(i.value) #获取第1行的所有数据 list_sheet1_row_1=[] foriinsheet1[1]: list_sheet1_row_1.append(i.value) #读取所有数据 list_sheet1_all=[] forrowinsheet1.rows: forcellinrow: list_sheet1_all.append(cell.value)#按行循环获取所有的值,保存在list_sheet1_all列表中
4.写入数据
#------------------写入数据------------------ sheet1.cell(row=1,column=2,value="B1")#修改第一行第二列的单元格的值为B1 sheet1["A1"]="A1"#直接修改A1单元格的值为A1 sheet1["B11"]="B11"#新增B11单元格的值为B11 sheet1.title="test_sheet"#修改sheet1的表名为test_sheet
5.表格样式调整
#------------------表格样式调整------------------ #表格样式支持:字体、颜色、模式、边框、数字格式等 #A1单元格等线24号加粗斜体,字体颜色浅蓝色 sheet1["B11"].font=openpyxl.styles.Font(name="宋体",size=24,italic=True,color="00CCFF",bold=True) #B1单元格水平上下居中 sheet1["B11"].alignment=openpyxl.styles.Alignment(horizontal="center",vertical="center") #第一行高度设置为30 sheet1.row_dimensions[1].height=30 #C列的宽度设置为35 sheet1.column_dimensions["C"].width=35
6.保存文件
#保存文件,注意文件打开时文件保存会出错 wb.save("test.xlsx")
补充:下面通过实例代码看下python3openpyxl基本操作,具体代码如下所示:
#coding:utf-8 importxlrd importxlwt #读写2007excel importopenpyxl importsys #读取设备sn #defreadSN(path): #wb=openpyxl.load_workbook(path) #sheet=wb.active #dict=[] #foriinrange(2,sheet.max_row+1): #c=sheet["C"+str(i)].value; #d=sheet["D"+str(i)].value; # #dict.append(d) ##dict.append(d) ##print(c,d) #returndict; # #pass; #print(readSN("./sim/1.xlsx")) defread07Excel(path,path1): wb=openpyxl.load_workbook(path) sheet=wb.active #print(sheet.max_column)#获取最大列数 #print(sheet.max_row)#获取最大行数 #print(sheet['B1'].value) wb1=openpyxl.load_workbook(path1) sheet1=wb1.active foriinrange(2,sheet.max_row): iccid=sheet["B"+str(i)].value; len_iccid=len(iccid) iflen_iccid==20: sub_iccid=iccid[16:-1] eliflen_iccid==21: sub_iccid=iccid[17:-1] forxinrange(1,sheet1.max_row): #print(sheet1["D"+str(x)].value) ifsub_iccid+"N"==sheet1["D"+str(x)].value: sheet["O"+str(i)].value=sheet1["C"+str(x)].value; wb.save(filename=path) print(str(sheet1["D"+str(x)].value)+""+str(sheet1["C"+str(x)].value)+""+str(iccid)) print() pass #写入数据 #s=sheet["P"+str(i)].value="dsdaf"; #wb.save(filename=path) #p=sheet["P"+str(i)].value; #print(sub_iccid) #forrowinsheet.rows: #forcellinrow: #print(cell.value,"\t",end="") #print(cell.column,"\t",end="") # # #print() #sys.exit() #path="./sim/2.xlsx" #wb=openpyxl.load_workbook(path) ##sheet=wb.sheetnames[0]#获取名称 #sheet=wb.active #分别返回 #print(sheet['A1'].value)#获取单元格A1值 read07Excel("./sim/2.xlsx","./sim/1.xlsx") #wb=openpyxl.load_workbook('./sim/1.xlsx')#打开excel文件 #print(wb.sheetnames)#获取工作簿所有工作表名
总结
以上所述是小编给大家介绍的python3结合openpyxl库实现excel操作,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对毛票票网站的支持!