当前位置: 首页 > 后端技术 > Python

Python自动操控excel,一小时解决你一天的工作

时间:2023-03-25 19:20:37 Python

以往在很多金融、营销、行政招聘中,面试官都会问:“你精通EXCEL吗?”但今天,他们可能更愿意问:“你知道Python吗?”越来越多的公司开始使用Python来处理数据,尤其是在金融、证券、商业、互联网等领域。在顶级公司的高端岗位上,Python已经成为标配:Python到底有什么魔力让大家如此吃香?举个例子:以前老板要获取A股近2年所有股票的数据,你可能需要查询-下载-记录excel几百个周期。两天。但是如果你掌握了Python,你只需要写一个脚本,泡一杯咖啡的功夫资料就全部下载了。再加上Python强大的绘图功能,一次完成数据采集-组织-分析-绘图的过程,将分析结果直接以图表形式呈现。在今天的文章中,我们总结了使用python操作Excel文件的第三方库和方法。首先,让我们学习如何使用Python创建和保存Excel文档。对于经常和数据打交道的人来说,Excel是一个常用的工具;对于处理数据的程序员来说,OpenPyXL库是一个利器。Python官方提供了这样一个库,可以让我们通过Python代码直接对Excel文件进??行操作。文件格式包括xlsx、xlsm、xltx和xltm。知识点创建/打开工作簿访问工作表单元格及其值保存工作表让我们从简单的创建和保存功能开始。创建/打开工作簿首先,下载实验所需的shiyanlou.xlsx示例文件,并安装指定版本的openpyxl库。!wget-nc"https://labfile.oss.aliyuncs.com/courses/1585/shiyanlou.xlsx"!pipinstallopenpyxl==3.0.3使用openpyxl不需要在文件系统上创建文件,导入即可工作簿类并开始工作:教学代码:fromopenpyxlimportWorkbookwb=Workbook()#实例化一个工作簿对象print(wb)也可以打开本地已有的工作簿进行实验操作:fromopenpyxlimportload_workbookwb=load_workbook(filename='shiyanlou.xlsx')print(wb)load_workbook可以使用以下参数:data_only:带公式的单元格是否有公式(默认)或Excel上次读取工作表时存储的值。keep_vba:设置是否保留任何VisualBasic元素(默认保留),可以选择保留但不支持编辑。创建工作簿时,总是默认创建一个名为Sheet的工作表,可以使用Workbook.active属性获取:ws=wb.active#获取当前活动的工作表print(ws)也可以通过Workbook创建。create_sheet()并命名工作表。如果不设置name参数,则默认命名为sheet,sheet1,sheet2...创建的工作表的位置默认总是插入最后:ws=wb.create_sheet()#sheetws1=wb.create_sheet("Mysheet")#命名为Mysheetws2=wb.create_sheet("Mysheet1",0)#创建一个新的Mysheet1工作表并将其插入到第一个位置ws3=wb.create_sheet("Mysheet2",-1)#创建一个新的Mysheet1工作表Mysheet2工作表,插入到倒数第二个位置两个位置ws.title="shiyanlou"#将上面的ws工作表重命名为shiyanlouprint("Success")默认情况下,工作表标签背景色为白色。我们可以通过Worksheet.sheet_properties.tabColor属性改变颜色:ws.sheet_properties.tabColor="1072BA??"#RGBformatprint(ws.sheet_properties.tabColor)我们给工作表命名后,我们就可以把它作为工作簿的key,简化后续代码,例如:ws=wb["shiyanlou"]print(ws)如果想查看本工作簿下的所有工作表,可以使用函数Workbook.sheetname:print(wb.sheetnames)或者迭代打印allworksheetsforsheetinwb:print(sheet.title)我们可以通过Workbook.copy_worksheet()方法在单个工作簿中创建工作表的副本:source=wb.active#获取活动工作表target=wb.copy_worksheet(source)#创建上面获取的工作表的副本print(target)访问工作表单元格及其值我们已经知道如何创建和获取工作簿和工作表,接下来我们将学习修改单元格的内容。以下操作均以shiyanlou.xlsx工作簿中的shiyanlou工作表为准。单元格可以直接作为工作表的key进行访问赋值,value属性用于值访问:c=ws['A4']#将访问A4单元格ws['A4']=4#assignavaluetotheA4cellc.value#获取A4单元格的值,同ws['A4'].value注意:在内存中创建工作表时,不包含任何单元格,单元格自动首次访问时创建。上面的代码也可以用更简单的代码实现:d=ws.cell(row=4,column=2,value=10)#B4赋值ws['B4'].value#获取值cellhasmanyaccesses一个单元格可以使用切片访问A1到C2范围内的所有单元格:cell_range=ws['A1':'C2']cell_range行或列的范围可以类似地得到:#accesscolumncolC=ws['C']col_range=ws['C:D']#访问行row10=ws[10]row_range=ws[5:10]print(col_range,row_range)也可以使用Worksheet.iter_rows()来返回行:forrowinws.iter_rows(min_row=1,max_col=3,max_row=2):forcell_rowinrow:print(cell_row)useWorksheet.iter_cols()returncolumn:forcolinws.iter_cols(min_row=1、max_col=3,max_row=2):forcell_colincol:print(cell_col)如果需要遍历工作表的所有行或列,可以使用Worksheet.rows属性。出于性能原因,此属性在只读模式下不可用:ws['C9']='helloworld'tuple(ws.rows)或使用Worksheet.columns属性。出于性能原因,此属性在只读模式下不可用:tuple(ws.columns)访问值如果您只需要工作表中的值,则可以使用Worksheet.values属性。遍历工作表中的所有行,但只返回单元格值:forrowinws.values:forvalueinrow:print(value)Worksheet.iter_rows()和Worksheet.iter_cols()可以使用values_only参数只返回单元格单元格的值:forrowinws.iter_rows(min_row=1,max_col=3,max_row=2,values_only=True):print(row)保存工作表将我们之前创建的工作簿保存为xlsx文件,如果是已经存在,将被覆盖:wb.save("shiyanlou.xlsx")文渊网,仅供学习,如有侵权,请联系删除。我的公众号【Python圈】汇集了优质的技术文章和经验总结。学习Python的路上肯定会遇到困难,不要慌张,我这里有一套学习资料,包括40+电子书,600+教学视频,涉及Python基础、爬虫、框架、数据分析、机学习等等,别怕学不会!