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操作,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对毛票票网站的支持!