openpyxl读写excel,pythonopenpyxl写excel

  openpyxl读写excel,pythonopenpyxl写excel

  最近一直在做项目中的自动化工作,为了摆脱繁琐重复的工作,专心做数据分析。自动化python很好,但是因为您必须提交报告,

  一定要好看什么的。熊猫功能强大,但不能完全操作Excel。现在学vba有点晚了。于是我找到了这个openpyxl包,用python修改Excel。由于水平有限,我琢磨了两天,踩了很多坑,才把自动化工作做完(至少多几个小时,很美)。

  在这里,记下这两天的笔记,踩坑,新手躲在坑里,供自己以后参考。如有疑问,请见谅并指出。谢谢你。

  1从openpyxl导入Load _ workbook 2从openpyxl.styles导入颜色、字体、填充、命名样式3从openpyxl.styles导入图案Fill、Border、Side、Alignment45#加载文件6WB=load _ workbook(。/5a . xlsx’)工作簿:工作簿,一个excel文件包含多个工作表。

  工作表:工作表,有多个工作簿,并且工作表的名称是可识别的,例如“sheet1”和“sheet2”。

  Cell: noble棉花糖,存储数据对象。

  文章中使用的表格是:

  操作说明书

  1# read sheetname2print(输出文件的所有工作表名称:,wb.sheetnames)3ws=wb[5a]45#或6sheet _ names=WB。sheet names 7 ws 2=WB[sheet _ names[0]]#索引为0的第一个工作表8print(ws是ws2)。

  [5a]

  真实的

  1#修改工作表名称23ws。title= 5a _ 4 print( modify sheetname:,wb.sheetnames)修改sheet name:

  [5a_]

  1#创建一个新表2#创建一个必须分配给对象的新表,否则只有名称而没有实际的新表。34ws4=wb.create _ sheet (index=0,title= newsheet) 5 #如果不写任何参数,它将被插入到最后一个位置,名称默认为sheet。工作表1.order 67ws 5=WB . Create _ sheet()8 print( Create a new sheet:,wb.sheetnames)创建新工作表:

  [新闻页, 5a_ ,页]

  1# delete sheet2wb.remove(ws4) #此处只能写入工作表对象,而不能写入sheetname3print (delete sheet:,wb.sheetnames)。删除工作表:

  [5a_ ,工作表]

  1#修改工作表标签的背景颜色,默认为白色,设置为RRGGBB模式2ws。sheet _ properties . tab color= FFA 500 34 #读取有效区域56print(最大列数为:,ws.max_column)7print(最大行数为:,ws.max_row)最大列数。

  最大行数是:17

  1#插入行和列2ws.insert_rows(1) #插入一行3ws。第一行insert _ cols (2,4)#从第二列插入四列45#删除行和列6ws.delete_cols(6,3) #从第六列(f列)删除三列,即(f:)

  1 # read 2c=ws[ a1 ]3c 1=ws . cell(row=1,column=2) 4print (c,C1) 5print (c.value,C1.value)

  dth _标题省

  1#修改2ws[A1]=景点名称 3ws.cell(1,2)。value= province 4print(c.value,c1.value)景点名称省份

  1#读取许多高贵的棉花糖2 3 cell _ range=ws[ A1:B2 ]4 colc=ws[ C ]5 col _ range=ws[ C :D ]6 row 10=ws[10]7 row _ range=ws[5:10]8 #返回的结果都是!这里嵌套了两个元组,每一行的贵族棉花糖都位于同一个元组中。((, ), (, ))

  1 # 2 for row in ws . ITER _ rows(min _ row=1,max _ row=3,3 min _ col=1,max _ col=2):4 for cell in row:5 print(cell)6 #也可以使用worksheet.iter_col(),用法相同`` cell 5a _ 。A1单元格“5a _”。B1单元格“5a _”。A2单元格“5a _”。B2细胞 5a _ 。a3单元格“5a _”。B3 `1 #合并高贵的棉花糖

  2ws.merge_cells(F1:G1 )

  3w [f1]=合并两个高贵的棉花糖

  4#或

  5ws.merge_cells(start_row=2,start_column=6,end_row=3,end_column=8)

  6ws.cell(2,6)。value=合并三个高贵的棉花糖

  七

  8#取消贵族棉花糖合并

  9ws.unmerge_cells(F1:G1 )

  10#或

  11ws.unmerge_cells(start_row=2,start_column=6,end_row=3,end_column=8)

  12

  13wb.save(。/5a . xlsx’)

  保存前的14#操作。保存文件时,必须关闭文件!

  立正!Openpyxl对Excel的修改不像xlwings那样是实时的,他的修改是暂存在内存中的,所以当后期修改的时候,比如我准备在第一行插入一个新行作为标题,那么当我对新A1的贵族棉花糖进行操作的时候,原来A1(现在A2)的贵族棉花糖原来还在内存中的修改就会被覆盖。所以先存起来,或者一开始就规划好零钱操作,避免这样的事情发生。(别问我怎么知道的,都是眼泪o (957)

  2ws=wb[5a_]

  3#我们来设置一个表头。

  4w。insert _ rows (1) #在第一行插入一个新行

  5ws.merge_cells(A1:E1) #合并高贵的棉花糖

  6a1=ws[A1]

  WS[ A1 ]= 5A级景区名单

  八

  9#设置字体

  0ft=font (name= Microsoft Yahei ,color= 00000 ,size=15,b=true)

  11

  12名称:字体名称

  13color:颜色通常是RGB或aRGB十六进制值。

  14b(粗体):粗体(布尔)

  15i(斜体):倾斜(粗体)

  16阴影:阴影(布尔)

  17下划线:下划线(双重会计,单一,双重,单一会计)

  18charset:字符集(int)

  19strike:删除(布尔型)

  20

  21a1.font=ft

  22

  23#设置文本对齐方式

  24

  25ali=对齐(水平=居中,垂直=居中)

  26

  27水平:水平对齐(中心连续,常规,分布式,

  28 左,填充,居中,对齐,右)

  29垂直:垂直对齐(分布式,顶部,中心,两端对齐,底部)

  30

  31

  32a1.alignment=ali

  33

  34#设置舱口

  35

  36fill=PatternFill(solid ,fgColor=FFA500 )

  37#颜色一般用十六进制RGB。

  38 #‘实心’是一种影线类型,详情请参考文档。

  39

  40a1.fill=fill

  Openpyxl.styles.fills模块参数文档(链接阅读原文)1#设置边框

  2=side (style= medium ,color= 00000) #设置边框样式

  3

  4style:边框线的样式{ 爱听歌曲的微笑,偏点点,点点点,头发,中点点点,

  5 虚线,中虚线,粗,虚线点点,中,

  6 double , thin , mediumDashDotDot}

  7

  八

  9border=Border(上=边,下=边,左=边,右=边)

  10

  11top (top)、bottom (bottom)、left (left)、right (right):必须是Side类型。

  12对角线:斜线侧文字

  13diagonalDownd:右斜杠布尔值

  14对角线:左斜线粗线

  15

  16

  17# a1.border=border

  1对于WS A1: E1 中的项:#删除元组中的每个单元格以更改样式

  19 item.border=边境

  20

  1wb.save(。/5a.xlsx) #保存更改

  再次关注!a1.border=border不能用,否则只会如下图所示。B1: E1贵族棉花糖没有线。个人认为是因为线框涉及到相邻贵族棉花糖的修改,所以需要单独修改每个贵族棉花糖。你不能用ws[A1:E1]。边框=边框。从前面的内容我们可以知道,openpyxl的很多贵族棉花糖其实都是一个tuple,tuple没有style方法,必须一个一个改!其实还有其他官方途径,后面会讲到。[图片](https://yqfile . alicdn . com/d 51 a6b 37 ea 052 e 67940451 BDC 149 D2 A8 f 7 b 755 . png)按列或行设置样式1#现在我们设置整个表格。

  2

  3#阅读

  4wb=load_workbook(。/5a . xlsx’)

  5ws=wb[5a_]

  六

  7#读取数据表范围

  8rows=ws.max_row

  9cols=ws.max_column

  10

  1号字体

  1 font 1=font(name= Microsoft Yahei ,size=11,b=True)

  1 font 2=font(name= Microsoft Yahei ,size=11)

  14

  15#边框

  1line _ t=side (style= thin ,color= 00000) #细边框

  1line _ m=side (style= medium ,color= 00000) #粗边框

  18border1=Border(上=line_m,下=line_t,左=line_t,右=line_t)

  9 #与标题相邻的边缘设置为与标题相同。

  20border2=Border(上=line_t,下=line_t,左=line_t,右=line_t)

  21

  2 #填料

  23fill=PatternFill(solid ,fgColor=CFCFCF )

  24

  25#对齐

  26对齐=对齐(水平=“居中”,垂直=“居中”)

  27

  28#包装和命名样式

  29sty1=NamedStyle(name=sty1 ,font=font1,fill=fill,

  30 border=border1,alignment=alignment)

  31sty2=NamedStyle(name=sty2 ,font=font2,border=border2,alignment=alignment)

  32

  33对于范围内的r(第2行第1行):

  范围内的c为34(1,列):

  35如果r==2:

  36 ws.cell(r,c)。style=sty1

  37其他:

  38 ws.cell(r,c)。风格=风格2

  39

  40wb.save(。/5a . xlsx’)

  ![图片](https://yqfile . alicdn . com/2881d 58 e 87 c 97 bb 7 ff 313 AC 56 E1 e 84 ca 557 ca 279 . png)对于设置标题样式,其实官方也给出了自定义功能(链接阅读原文)。设置好范围后,范围内的贵族棉花糖会被合并,样式会被应用,就像我这里不赘述一样。有兴趣的可以看看。非常实用。原文发布于2018年12月24日。本文作者:混沌星系中的一扇星空之窗。本文来自云起社区伙伴“【Python爱好者社区】(https://MP . weixin . QQ . com/s/bore 8 C3 azaadpvgflw 5 ca)”。资料可以关注“python_shequ”微信微信官方账号。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: