游戏电视苹果数码历史美丽
投稿投诉
美丽时装
彩妆资讯
历史明星
乐活安卓
数码常识
驾车健康
苹果问答
网络发型
电视车载
室内电影
游戏科学
音乐整形

10分钟干完2小时的活,用Python自动化办公有多爽?

  模块的介绍和安装
  Python专栏中有对所有可以操作Excel的模块进行了对比分析,感兴趣的同学可以前去围观。
  推荐阅读:Python杀死Excel?众多模块哪家强
  openpyxl模块是一个可以读取和写入Excel文件的模块,可以处理Excel数据、公式、样式,在表格里面插入图表等;需要单独安装不包含在python标准库里;
  安装:pipinstallopenpyxlihttps:pypi。tuna。tsinghua。edu。cnsimple
  在windows系统下使用此条指令进行第三方库的安装省时间,Mac端直接使用pip3install模块名
  具体openpyxl的官方文档可以参照https:openpyxl。readthedocs。ioenstable
  Excel表格术语
  列:column,以字母表示,在表格的上方
  行:row,以数字表示,但是注意这里是从1开始,在表格的左侧
  表单:sheet,在表格的下部
  读数据打开Excel表格并获取表格名称
  下面读取表格的整体思路就是:读取一个表格获取里面的某个sheet获取sheet中单元格、某行、某列的数据获取指定范围的行列数据案例:查找有空值的单元格
  loadworkbook(filename表格文件路径);workbook。sheetnames获取表格文件内的sheet名称
  注意:只能打开存在的表格,不能用该方法创建一个新表格文件
  我们通过读取丝芙兰的售卖商品来学习Excel操作,内容如下:
  fromopenpyxlimportloadworkbookworkbookloadworkbook(filenamecosmetics。xlsx)print(workbook。sheetnames)
  可以看到有:〔cosmetics,Sheet1,Sheet2〕
  那么我们就可以通过sheetname获取表格,但是如果Excel中只有一个sheet,那么可以直接使用。activesheetworkbook〔cosmetics〕返回的是workbook对象:Worksheetcosmetics
  但是我们的workbook是有多个sheet的,active的使用如下:sheetworkbook。active
  获得Excel里面的sheet之后就可以对表格的数据进行操作。比如:获取表格的尺寸大小;第一行第一列的数据,代码如下:print(sheet。dimensions)获取的表格的范围:A1:K1473cellsheet〔B1〕print(cell。value)获取B1表格的数据,结果:Brand获取某一行或者某一列的内容colcontentsheet〔B〕表示获取B这一列rowcontentsheet〔3〕获取第3行数据print(rowcontent)
  注意返回的Cell单元格对象(Cellcosmetics。A3,Cellcosmetics。B3,Cellcosmetics。C3,Cellcosmetics。D3,Cellcosmetics。E3,Cellcosmetics。F3,Cellcosmetics。G3,Cellcosmetics。H3,Cellcosmetics。I3,Cellcosmetics。J3,Cellcosmetics。K3)
  如果想获取每个里面的值,可以结合value属性接上代码forrowinrowcontent:print(row。value)获取多行或者多列内容
  。iterrows(minrow最低行数,maxrow最高行数,mincol最低列数,maxcol最高列数)按行获取
  。itercols(minrow最低行数,maxrow最高行数,mincol最低列数,maxcol最高列数)按列获取
  注意:这两个演示任一个都可以,两个案例的区别就是第一个是每次获取一行内容,第二个是按照列获取内容。
  每次获取一行数据forrowinsheet。iterrows(minrow2,maxrow5,mincol1,maxcol4):涵盖范围的所有单元格都会显示print(row)每行的内容是一个元组的内容,如果想看到数据还需要继续遍历forcellinrow:print(cell。value)print(50)
  结果:
  这个获取的内容有点类似使用pandas的loc获取第几行几列的情况。
  同样列的获取也是一样道理,就是每次获取一列数据forcolinsheet。itercols(minrow2,maxrow5,mincol1,maxcol4):print(col)forcellinrow:print(cell。value)print(50)
  结果:
  如果有需要获取表格的行或者列可以使用,sheet。rows或者sheet。columns
  案例:
  编写一个python程序,要求:
  (1)打开文件丝芙兰化妆品表格cosmetics。xlsx
  (2)找到其中空的单元格
  (3)输出这些空单元格的坐标(如A1,B5,C6)fromopenpyxlimportloadworkbook1。加载cosmetics。xlsx表格workbookloadworkbook(filenamecosmetics。xlsx)2。得到cosmetics工作簿sheetworkbook〔cosmetics〕3。获取工作簿的范围并切割范围:A1:K1473使用字符串的split分隔得到:〔A1,K1473〕sizelssheet。dimensions。split(:)4。从而可以得到行和列的最大和最小值colmin,rowmin,colmax,rowmaxsizels〔0〕〔0〕,sizels〔0〕〔1〕,sizels〔1〕〔0〕,sizels〔1〕〔1:〕print(colmin,rowmin,colmax,rowmax)打印结果是:A,1,K,1473即最小列是A,最大列是K,最小行是1,最大行是14735。声明一个空的列表存放有空值的单元格坐标nonelist〔〕6。遍历行和列遍历列,但是需要注意的是列是字母,所以要使用ord将字母转成数字才可以使用range范围forcolinrange(ord(colmin),ord(colmax)1):7。遍历行,将字符串的行转成整型forrowinrange(int(rowmin),int(rowmax)1):8。通过chr(col)str(row)获取单元格坐标,再通过chr将数字转成字母比如65就是A,所以chr(col)str(row)的结果类似是:A3ifsheet〔chr(col)str(row)〕。valueNone:9。如果某个单元格没有值则将单元格坐标保存到列表:nonelist中nonelist。append(chr(col)str(row))10。打印查看nonelist里面的内容foriinnonelist:print(i)
  综合对比openpyxl在读取获取数据上没有pandas有优势,但是pandas不能修改表格,但是openpyxl是可以的。
  写数据
  向某个格子写入数据并保存
  sheet〔‘A1’〕‘你好啊’
  用Python列表插入行数据
  sheet。append(Python列表)插入的数据会接在表格内已有数据后面
  复制一个sheet
  workbook。copyworksheet(sheet实例)
  案例:fromopenpyxlimportWorkbookfromopenpyxl。utilsimportgetcolumnletterwbWorkbook()destfilenameworkbook。xlsx激活默认工作薄ws1wb。active设置工作簿ws1。titlenumbers向指定单元格写入内容ws1〔C5〕3。14ws1〔A2〕1。5创建第二个工作薄,名字为ws2wb。createsheet(titlescore)data〔〔张三,100〕,〔李四,98〕,〔王五,83〕,〔赵六,99〕,〕forrowindata:ws2。append(row)复制一个sheetwb。copyworksheet(ws2)最后将内容保存wb。save(filenamedestfilename)使用Excel公式workbookloadworkbook(filenameworkbook。xlsx)sheetworkbook〔score〕sheet〔B5〕AVERAGE(B1:B4)sheet〔B6〕SUM(B1:B4)workbook。save(filenameworkbook。xlsx)
  如果你对Excel足够熟悉也可以使用过复杂的公式:workbookloadworkbook(filenameworkbook。xlsx)sheetworkbook〔Sheet1〕sheet〔D1〕标准身高Excel中的公式:IF(RIGHT(C2,2)cm,C2,SUBSTITUTE(C2,m,)100cm)foriinrange(2,9):sheet〔D{}。format(i)〕fIF(RIGHT(C{i},2)cm,C{i},SUBSTITUTE(C{i},m,)100cm)workbook。save(filenameworkbook。xlsx)
  结果:
  可以使用的公式是(可以通过下列代码获取):fromopenpyxl。utilsimportFORMULAEprint(FORMULAE)
  比如说有SUM
  添加筛选
  sheet。autofilter。ref:给表格添加筛选器
  。autofilter。refsheet。dimension给所有字段添加筛选器;
  。autofilter。refA1给A1这个格子添加筛选器,就是给第一列添加筛选器;冻结窗格
  sheet。freezepanes‘G2’
  冻结的结果是,在这个窗格的左上都是不动的,当移动滑块时,变化的只有窗格的右下方数据。也就是当运行此程序代码后,Excel表格里面会在G2窗格(左上方)处出现’十字’坐标线,在第二象限的数据没有办法移动,改变的只有其它象限的数据fromopenpyxlimportloadworkbook1。加载cosmetics。xlsx表格workbookloadworkbook(filenamecosmetics。xlsx)2。得到cosmetics工作簿sheetworkbook〔cosmetics〕3。设置筛选器sheet。autofilter。refA14。冻结C100窗口sheet。freezepanesC1005。保存设置workbook。save(filenamecosmetics。xlsx)
  当然如果不需要也可以删除行、列、表,分别使用:
  。remove(sheet名):删除某个sheet表;
  。deleterows(idx数字编号,amount要插入的列数)删除行,从idx这一列开始,包括idx这一列
  。deletecols(idx数字编号,amount要插入的列数)删除列,从idx这一行开始,包括idx这一行
  也可以添加空行
  插入多行空行
  。insertrows(idx数字编号,amount要插入的列数)在idx数字编号的行上边插入几行
  或者多个空列
  。insertcols(idx数字编号,amount要插入的列数)在idx数字编号的列左边插入几列案例
  编写一个Python程序,要求:
  (1)打开文件丝芙兰化妆品表格cosmetics。xlsx
  (2)找到Price这一列
  (3)找到Price中大于100的数据
  (4)将这些数据所在行复制到一个新的Excel文件中fromopenpyxlimportWorkbookfromopenpyxlimportloadworkbookworkbookloadworkbook(filenamecosmetics。xlsx)sheetworkbook。activeworkbook1Workbook()sheet1workbook1。activecellssheet〔D〕datalist〔〕forcellincells:ifisinstance(cell。value,int)andcell。value100:datalist。append(cell。row)print(输出满足条件的数据所在行数的列表:{}。format(datalist))j1forrowindatalist:forcolinrange(ord(A),ord(G)1):sheet1〔chr(col)str(j)〕sheet〔chr(col)str(row)〕。valueprint(正在写入第{}行数据。format(j),end)j1workbook1。save(cosmeticsother。xlsx)
  样式
  修改字体样式
  Font(name字体名称,size字体大小,bold是否加粗,italic是否斜体,color字体颜色)
  获取表格中字体的样式
  cell。font。属性
  设置对齐样式
  Alignment(horizontal水平对齐模式,vertical垂直对齐模式,textrotation旋转角度,wraptext是否自动换行)
  设置边框样式
  Side(style边线样式,color边线颜色)Border(left左边线样式,right右边线样式,top上边线样式,bottom下边线样式)
  填充
  PatternFill(filltype填充样式,fgColor填充颜色)GradientFill(stop(渐变颜色1,渐变颜色2,))
  设置行高和列宽
  。rowdimensions〔行编号〕。height行高。columndimensions〔列编号〕。width列宽
  合并单元格
  。mergecells(待合并的格子编号)。mergecells(startrow起始行号,startcolumn起始列号,endrow结束行号,endcolumn结束列号)
  取消合并单元格
  。unmergecells(待合并的格子编号)。unmergecells(startrow起始行号,startcolumn起始列号,endrow结束行号,endcolumn结束列号)
  案例综合应用
  编写一个python程序,要求
  (1)打开文件丝芙兰化妆品表格cosmetics。xlsx
  (2)找到Rank在4。5年以上的,Price价格大于100的数据
  (3)将其他数据删除,最后不要在中间留空行
  (4)将price数据背景标为红色,字体标为白色
  (5)保存该Excel文件importosfromopenpyxlimportWorkbookfromopenpyxlimportloadworkbookfromopenpyxl。stylesimportFontfromopenpyxl。stylesimportPatternFillworkbookloadworkbook(filenamecosmetics。xlsx)sheetworkbook。activeworkbook1Workbook()sheet1workbook1。activedefreturncolorrow(content):函数功能:根据输入的content,筛选出窗格中含有这个content的所有的col(列)和row(行)返回两个的列表,第一个是所在列的数据,第二个是所在行的数据datasizesheet。dimensionssizelsdatasize。split(:)colmin,rowmin,colmax,rowmaxsizels〔0〕〔0〕,sizels〔0〕〔1〕,sizels〔1〕〔0〕,sizels〔1〕〔1:〕rowls〔〕colls〔〕forcolinrange(ord(colmin),ord(colmax)1):forrowinrange(int(rowmin),int(rowmax)1):ifsheet〔chr(col)str(row)〕。valuecontent:colcontentchr(col)rowcontentstr(row)colls。append(colcontent)rowls。append(rowcontent)return(colls,rowls)colbyRankreturncolorrow(Rank)〔0〕〔0〕colPricereturncolorrow(Price)〔0〕〔0〕datacolbyRanksheet〔colbyRank〕datacolPricesheet〔colPrice〕datafinialrow〔〕foriinrange(len(datacolbyRank)):ifdatacolbyRank〔i〕。valueRank:continueifdatacolPrice〔i〕。valuePrice:continueifisinstance(float(datacolbyRank〔i〕。value),float)andfloat(datacolbyRank〔i〕。value)4。5andisinstance(float(datacolPrice〔i〕。value),float)andfloat(datacolPrice〔i〕。value)100:print(Rank的数值为{},对应的价格是{}。format(datacolbyRank〔i〕。value,datacolPrice〔i〕。value))datafinialrow。append(datacolbyRank〔i〕。row)print(筛选后满足要求的数据行列表输出为:{}。format(datafinialrow))datafinialrow。insert(0,1)这一步的目的是将原来文件的标签写到新文件中去j1forrowindatafinialrow:forcolinrange(ord(A),ord(K)1):print(sheet〔chr(col)str(row)〕。value)sheet1〔chr(col)str(j)〕sheet〔chr(col)str(row)〕。valueprint(正在写入第{}行数据。format(j),end)j1print(数据已全部导入新Excel文件!下面给数据做标记。。。。。。)dataafterPricesheet1〔returncolorrow(Price)〔0〕〔0〕〕forcellindataafterPrice:cell。fillPatternFill(filltypesolid,fgColorFF0000)cell。fontFont(colorFFFFFF)print(数据标记完成)workbook1。save(filename筛选数据后的表格。xlsx)print(completed!)
  结果:
  绘制图形fromopenpyxlimportWorkbookfromopenpyxl。chartimportBarChart,Series,Reference,BarChart3DwbWorkbook()wswb。activerows〔(None,2020,2021),(Apples,6,9),(Oranges,5,2),(Pears,8,3)〕forrowinrows:ws。append(row)dataReference(ws,mincol2,minrow1,maxcol3,maxrow4)titlesReference(ws,mincol1,minrow2,maxrow4)chartBarChart3D()chart。title3DBarChartchart。adddata(datadata,titlesfromdataTrue)chart。setcategories(titles)ws。addchart(chart,E5)wb。save(bar3d。xlsx)
  或者fromopenpyxlimportWorkbookfromopenpyxl。chartimportSeries,Reference,BubbleChartwbWorkbook()wswb。activerows〔(NumberofProducts,SalesinUSD,Marketshare),(14,12200,15),(20,60000,33),(18,24400,10),(22,32000,42),(),(12,8200,18),(15,50000,30),(19,22400,15),(25,25000,50),〕forrowinrows:ws。append(row)chartBubbleChart()chart。style18useapresetstyleaddthefirstseriesofdataxvaluesReference(ws,mincol1,minrow2,maxrow5)yvaluesReference(ws,mincol2,minrow2,maxrow5)sizeReference(ws,mincol3,minrow2,maxrow5)seriesSeries(valuesyvalues,xvaluesxvalues,zvaluessize,title2013)chart。series。append(series)addthesecondxvaluesReference(ws,mincol1,minrow7,maxrow10)yvaluesReference(ws,mincol2,minrow7,maxrow10)sizeReference(ws,mincol3,minrow7,maxrow10)seriesSeries(valuesyvalues,xvaluesxvalues,zvaluessize,title2014)chart。series。append(series)placethechartstartingincellE1ws。addchart(chart,E1)wb。save(bubble。xlsx)
  Python全栈人工智能、网络安全等热门学科,正在火热报名中,想从事互联网IT行业,想高薪就业的同学,欢迎咨询免费体验,线上部分学科学费最高减免3000元。
  以下文章来源于Python专栏,作者宋宋
  来源:https:mp。weixin。qq。comsKrHejrgOXKIXg9hJ30PhA

当客户说,我再考虑一下,你要这样回答相信做外贸的朋友一定有以下的体验,千辛万苦花了大量时间和精力让国外客户下订单,无数封邮件和电话,客户搪塞你说我还要再考虑一下。那么你遇到这种情况的时候,又是怎么样去应对的呢?……马士基箱船数百个货柜落水!年前在盐田厦门港出口的货主注意了据华富康供应链了解到,自从1月16号后,马士基旗下MAERSKESSEN号在洛杉矶途中遇到恶劣天气导致750个集装箱落水后,在2月16日,马士基旗下运力达13100TEU名为M……极米H3S焕新来袭,科技加持续写投影传奇据有关调查研究显示,爱逛街、爱逛展、爱观影、爱宅家已成为了当代年轻人在城市中的TOP4消费趋势。同时,随着社会经济的不断发展与智能科技的持续进步,年轻人的宅家空间也早已突破传统……家谱核心是传承家族文化,东方文明的核心呢?家谱,就是家族文化传承的核心。家谱记载的内容,不但是祖宗流传下来的智慧结晶,更是一个家族能够发展绵延不断的根本所在。很多人对于家谱中传承的文化不理解,认为家谱中很多生僻字,甚至……一向挑剔的李楠都频频点赞,FindX3究竟有何优势?最近这几年,智能手机的外观设计同质化非常明显。因为智能手机的设计受到大屏和轻薄的限制,清一色的挖孔屏矩阵相机模组似乎已经成为了主流旗舰的一贯设计思路。不过,最近发布的OPPOF……Web自动化测试基础知识脑图自动化测试领域正在快速发展。对专业的自动化测试工程师的需求也在增加,谁跟得上当前行业对技术的要求,谁就能站稳脚跟。需掌握的编程技术您需要的语言是:Python、CC、HT……亚马逊封店风波下,深圳大手笔鼓励独立站【新网网站建设资讯】从今年5月份开始,不断有亚马逊大卖店铺被封停。据深圳市跨境电子商务协会6月份统计,在过去的两个多月时间,亚马逊平台被封店的中国卖家超过5万,已造成行业损失金……小白搭建网站指南【新网建站科普】在没有网络的情况下,经营一家企业已经不再可行。从产品落地到营业时间,消费者都转向了互联网。在此情况下,即使是一个设计良好的简单网站,也能让你在自己的领域占据优势……ATampampampT和思科为物联网应用推出5G网络功能ATT和思科正在合作,通过专用5G网络功能提高物联网应用的性能。ATT的6GHz以下5G网络已经覆盖超过2。51亿人,为制造、汽车和娱乐等行业提供低延迟和高带宽的尖端应用……感恩节!感恩你的出现点击此处添加图片说明文字今天是2020年11月26日感恩节,感恩节,是西方传统的一个节日,也是美国人民独创的一个合家欢聚的节日。一开始的时候,感恩节并没有固定日期,是由美……清新空气一键搞定思乐智CAPS400A空气净化器链接视频10月国庆一过,浙江沪包邮地区的气温就会有一个断崖式的下跌。除了感受到江南的魔法攻击之外,一家人也逐渐减少了出门的时间。但是随着居家时间的越来越多,室内空气质量又……苏宁线上百货打响双12第一枪马克华菲单品牌销售破3400万11月30日,苏宁易购宣布启动双十二,价格全面对标双十一。苏宁线上百货行业线率先打响第一枪,联合马克华菲品牌共同让利,为消费者寒冬保暖大计保驾护航,24小时下单金额破3400万……
学习JavaEE开发技术对学历有要求吗JavaEE的应用近几年大家已经看到了,JavaEE的发展也是不可限量的,因此现在想要学习JavaEE的人不断的增加,那么想要学习JavaEE的话对学历有什么要求吗?是否需要参……Eclipse2020安装了JDK却无法打开,解决办法Eclipse2020安装了最新版本的JDK却无法打开,提示版本太老的完美解决方法温馨提示:此教程仅限于提前配置过变量的朋友们,没有配置变量的先去配个变量相信有很多……体验气传导耳机SanagA5S自带大内存的双模播放,保护听力很多喜欢听音乐的玩家逐渐考虑到普通耳机对听力的损伤,这种损伤是不可逆的。骨传导耳机的传播原理是不需要通过耳膜,对耳朵的伤害几乎没有,做到了听歌不入耳,让声音的传播通过另一种方式……双十一一加火力全开,旗下机型配置越高价格越香一年一度的双11如期而至,众多商家都迎来了大放价,很多消费者这时入手各种产品都是非常合适的,尤其是数码产品,手机厂商们都拿出了不错优惠力度,有换机的朋友可以放心冲一波。而一加作……坦克300国产硬派越野之光,上市就卖到断货,厂家婉拒订单作为国产的一款硬派越野车,坦克300在2020年成为了一款爆款车型。不仅仅是因为硬派越野竞争小,更是因为,见过这款车的外观,了解过这款车的价格后,很难说服自己不去买它。因为它既……航天彩虹伊朗事件无人机大放异彩,彩虹无人机亦热销中东选股理由:净利润稳步增长伊朗事件股价异动产能大幅增长证券简称:航天彩虹评级:A数据截止日期:2019年9月30日单位:亿元证券代码:002389;成立日期:2……为什么都说iQOOZ1x产品优势很大?实际表现尽显豪华自进入2020年以来,iQOO品牌便频频带来惊喜,推出了一大批全新的5G手机,并且都在市场上取得了不错的成绩,例如iQOO3、iQOONeo3等,都是目前备受用户欢迎的5G机型……续航超1000公里,比亚迪开始放大招e平台3。0发布9月8日,比亚迪发布了纯电专属平台e平台3。0。对于平台概念,很多人认为就是一个简单的升级和更新,然而。。。真的如此吗?就比亚迪e平台来说,从1。0、2。0到现在的3。0……突破技术瓶颈造出全球最薄真空冰箱,海信如何做到?一向技术立企的海信,近日再次发布突破行业技术瓶颈的新产品:10月18日,海信发布全球首台海信真空超薄冰箱。这台全球最薄的冰箱,壁薄仅33mm,宽度700mm,在整体变薄的同时却……吉利汽车半年报挣钱能力依旧,新能源心结难解符合此前市场预期。8月18日午间,吉利汽车发布2021年上半年财报。财报显示,今年上半年,吉利汽车营收达450亿元,同比增长22;股东应占溢利为23。81亿元,同比增长3……干货丨商标侵权,侵犯的是哪些权利?商标侵权,在多数案件中,指的是商标的使用权和独占权。根据法律规定,一共有9大商标权利,虽说其他商标侵权行为比较少见,但是您也别轻易忽视!遇到被侵权的情况,勇敢点,维护自己的权益……英国脱欧过渡期即将结束,您的专利,商标和外观设计将何去何从?英国脱欧过渡期将持续至2020年12月31日。过渡期结束之前,欧盟商标和欧盟外观设计在英国仍受保护。在过渡期结束之后,欧盟商标和欧盟外观设计的相关法律将不再适用于英国。2021……
友情链接:易事利快生活快传网聚热点七猫云快好知快百科中准网快好找文好找中准网快软网