如何通过python操作excelope
1、导入相关库
fromopenpyxlimportWorkbookfromopenpyxlimportload_workbookimportdatetime
2、创建新表
wb=Workbook()
3、打开已有的表
wb=load_workbook(商品销售.xlsx)
4、正在激活的工作表
ws1=wb.active
5、插入行标题(表头)
wshead=[店铺ID,商品ID,标题,总销量,日期]ws1.append(wshead)
6、储存数据
#1.单元格插入数据ws1[A2]=杨国福麻辣烫#2.插入一行数据ws1.append([张亮麻辣烫,,什锦套餐,,-03-23])#3.插入带日期的数据ws1[E2]=datetime.datetime.now().strftime("%Y-%m-%d")
7、创建新的sheet表页
ws3=wb.create_sheet(sheet3)#默认插到最后ws2=wb.create_sheet(sheet2,1)#插到指定位置,0为最开始,1为第二个
8、选择sheet表页
#1.根据sheet页名称(方法一)ws2=wb[sheet2]#常用#2.根据sheet页名称(方法二)ws3=wb.get_sheet_by_name(sheet3)#不常用,且会出现warning警告
9、查看sheet表名
#1.直接显示所有sheet表页名print(wb.sheetnames)#2.遍历所有sheet表页foriinwb:print(i.title)
10、修改sheet表页名
ws4=wb[sheet2]#第一步:定位到要修改名称的sheet表页ws4.title=sheet2_rename#第二步:直接给该表页的title赋新的值即可wb.save(商品销售.xlsx)#第三步:保存excel表(为了保存操作记录)11、访问单元格
#1.单一单元格访问#(1)方法一:c=ws1[B2]#访问sheet表页:ws1的B2单元格ws1[C2]=女神套餐c.value=#给单元格的value赋值#(2)方法二:d=ws1.cell(column=4,row=2,value=90)#(3)方法三:foriinrange(1,):forjinrange(1,):ws4.cell(column=j,row=i,value=xx)#2.多单元格访问#(1)切片访问多个单元格cell_range=ws3[A1:C2]#访问sheet3表页的A1:C2确定的区域范围#(2)通过行(列)访问colC=ws3[C]#访问sheet3表页的第C列col_range=ws3[C:E]#访问sheet3表页的C列:E列确定的区域范围row10=ws3[10]#访问sheet3表页的第10行row_range=ws3[10:15]#访问sheet3表页的第10行:第15行确定区域范围#(3)通过指定的范围(行--行)forrowinws3.iter_rows(min_row=1,max_row=3,max_col=2):forcellinrow:print(cell)#(4)通过指定的范围(列--列)forcolinws3.iter_cols(min_col=1,max_col=3,max_row=2):forcellincol:print(cell)#(5)遍历所有ws3[C9]=HelloWorldprint(tuple(ws3.rows))#遍历sheet3表页的所有行print(tuple(ws3.columns))#遍历sheet3表页的所有列
12、保存数据
wb.save(商品销售.xlsx)
13、其他
#1.改变sheet标签页按钮背景颜色ws3.sheet_properties.tabColor=BA#2.获取最大行和最大列print(fsheet3的最大行数为:{ws3.max_row})print(fsheet3的最大列数为:{ws3.max_column})#3.获取每一行和每一列forrowinws1.rows:#ws1.rows为生成器,里面是每一行数据,每一行又有一个tuple包裹forcell_rowinrow:print(cell_row.value)#按行将每行数据输出出来forcolinws1.columns:#ws1.columns为生成器,里面是每一列数据,每一列又有一个tuple包裹forcell_colincol:print(cell_col.value)#按列将每列数据输出出来#4.根据数字得到字母,根据字母得到数字fromopenpyxl.utilsimportget_column_letter,column_index_from_string#(1)根据列的数字得到字母print(get_column_letter(2))#输出第二列的字母:B(第二列即B列)#(2)根据列的字母得到数字print(column_index_from_string(B))#输出B列的数字:2(B列即第二列)#5.删除工作表#(1)方法一:#wb.remove(ws3)#(2)方法二:#delwb[sheet3]#6.矩阵转换(行列倒置)rows=[[Number,data1,data2],[2,40,30],[3,40,25],[4,50,30],[6,25,5],[7,50,10]]foriinlist(zip(*rows)):ws3.append(i)
14、设置单元格样式
#1.需要导入类fromopenpyxl.stylesimportFont,colors,Alignment,PatternFill,Border,Side#2.设置字体#直接使用的cell的font属性font_bold=Font(name=等线,size=24,italic=True,color=00FF00,bold=True)fill_bold=PatternFill(fill_type=darkDown,fgColor=AACF91,bgColor=CD)ws3[A1].font=font_boldws3[A2].fill=fill_bold#3.设置对齐方式#直接使用的cell的属性alignmentcell.alignment=Alignment(horizontal=,vertical=)align=Alignment(horizontal=center,vertical=center)forrowinws1.rows:forcellinrow:cell.alignment=align#4.设置行高和列宽#设置ws1sheet页第一行的行高为40#ws1.row_dimensions[1].height=40#设置ws1sheet页第2列的列宽为30#ws1.column_dimensions[2].width=30#5.合并和拆分单元格#(1)合并单元格ws1.merge_cells(E1:E3)ws1.merge_cells(F1:H3)#(2)拆分单元格ws1.unmerge_cells(F1:H3)#6.设置边框forrowinws1.rows:forcellinrow:cell.border=Border(top=Side(border_style=thin,color=FF),right=Side(border_style=thin,color=FF),bottom=Side(border_style=thin,color=FF),left=Side(border_style=thin,color=FF))
------案例------
fromopenpyxlimportWorkbookimportdatetimefromtimeimporttimefromrandomimportchoicefromopenpyxl.utilsimportget_column_letterwb=Workbook()ws=wb.activews.append([Date,title,A_Z])foriinrange():dati=datetime.datetime.now().strftime("%Y-%m-%d")title=str(time())a_z=get_column_letter(choice(range(1,50)))ws.append([dati,title,a_z])wb.save(test.xlsx)fromopenpyxlimportWorkbookimportdatetimefromtimeimporttimefromrandomimportchoicefromopenpyxl.utilsimportget_column_letterwb=Workbook()ws=wb.activews.append([Date,title,A_Z])foriinrange():dati=datetime.datetime.now().strftime("%Y-%m-%d")title=str(time())a_z=get_column_letter(choice(range(1,50)))ws.append([dati,title,a_z])wb.save(test.xlsx)预览时标签不可点收录于话题#个上一篇下一篇
转载请注明:http://www.sonphie.com/jbby/14190.html