当前位置: 首页 > 科技观察

超级库存!5个让Excel高效的Python库

时间:2023-03-22 14:21:37 科技观察

Excel,作为Office的数据处理软件,我们几乎每天都在使用。虽然使用方便,但是在输入和处理大量数据的时候效率有点低。所以很多学过Python的同学都会使用Python的第三方库来批量操作Excel来提高效率。Python有很多支持Excel操作的第三方库。今天推荐的5个库,看看它们是如何让Excel高效起来的!XlwingsXlwings是一个非常强大的处理Excel的库,无论是Windows还是Mac,Excel还是WPS,都可以使用。功能齐全,可以轻松创建、打开、修改、保存Excel。它可以与matplotlib、numpy和pandas无缝连接。支持读写numpy、pandas数据类型,将matplotlib可视化图表导入excel。另外,也可以在Excel文件中调用VBA编写的程序,或者让VBA调用Python编写的程序。importxlwingsasxw#导入库app=xw.App(visible=True,add_book=False)wb=app.books.add()#打开Excel程序wb=xw.Book('example.xlsx')#打开现有工作簿wb.save('example.xlsx')#保存工作簿wb.close()#退出工作簿(可省略)app.quit()#退出Excelsht=wb.sheets[0]#引用工作表,括号内是firstAsheetnamerng=sht.range('a1')#rng=sht['a1']#引用单元格,第一行第一列为a1rng=sht.range('a1:a5')#ReferenceAreasht.range('a1').value='Hello'#A1单元格,写入字符串'Hello'sht.range('a1').value=[1,2,3,4]#默认按行插入:A1:D4分别写1,2,3,4sht.range('a2').options(transpose=True).value=[5,6,7,8]#Insertbycolumnsht.range('a6').expand('table').value=[['a','b','c'],['d','e','f'],['g','h','i']]#多行输入print(sht.range('a1:d4').value)#读取A1:D4rng=sht.range('a1').expand('table')nrows=rng.rows.counta=sht.range(f'a1:a{nrows}').value#读取Excel第一列ncols=rng.columns.countfst_col=sht[0,:ncols].value#读取Excel第一行sht.range('A1').column#获取单元格列标签sht.range('A1').row#获取行标签sht.range('A1').column_width#获取列宽sht.range('A1').row_height#获取行高print(sht.range('A1').column,sht.range('A1').row,sht.range('A1').column_width,sht.range('A1').row_height)sht.range('A1').rows.autofit()#行高自适应sht.range('A1').columns.autofit()#列宽自适应sht.range('A1').color=(34,156,65)#给A1单元格背景色sht.range('A1').color#返回单元格颜色的RGB值print(sht.range('A1').color)sht.range('A1').color=None#clearcellcolorprint(sht.range('A1').color)sht.range('A1').formula='=SUM(B6:B7)'#输入公式,对应单元格的执行结果sht.range('A1').formula_array#获取单元格公式sht.range('A1').value=[['a1','a2','a3'],[1,2,3]]#写入批次信息到指定单元格位置sht.range('A1').expand().value#使用expand()方法读取表格中的批次数据打印(sht.range('A1').expand().value)importnumpyasnpnp_data=np.array((1,2,3))sht.range('F1').value=np_data#writenumpyarray数据类型importpandasassspddf=pd.DataFrame([[1,2],[3,4]],columns=['a','b'])sht.range('A5').value=df#将pandasDataFrame数据类型写入excelsht。range('A5').options(pd.DataFrame,expand='table').value#读取数据,输出类型为DataFrameimportmatplotlib.pyplotasplt%matplotlibinlinefig=plt.figure()plt.plot([1,2,3,4,5])sht.pictures.add(fig,name='MyPlot',update=True)#将matplotlib图表写入excel表格xlrdxlrd主要是读取Excel,支持xlsx和xls格式的excel表格,可以读取指定表格、指定行列、指定单元格importxlrd#导入库data=xlrd.open_workbook(filename)#文件名和路径,如果路径或文件名有中文,在前面的原字符前加一个r#获取书本中的工作表table=data.sheets()[0]#按索引取表order=data.sheet_by_index(sheet_indx))#按索引取表order=data.sheet_by_name(sheet_name)#按名称取表=data.sheet_names()#返回所有工作表的名称data.sheet_loaded(sheet_nameorindx)#检查sheet是否被导入nrows=table.nrows#获取sheet有效行数table.row(rowx)#返回行表中所有单元格对象的列表。row_slice(rowx)#返回列中所有单元格对象的列表table.row_types(rowx,start_colx=0,end_colx=None)#返回行中所有单元格的数据类型列表table.row_values(rowx,start_colx=0,end_colx=None)#返回由该行所有单元格的数据组成的列表table.row_len(rowx)#返回该列的有效单元格长度ncols=table.ncols#获取第e列表中的有效列数table.col(colx,start_rowx=0,end_rowx=None)#returns列中所有单元格对象的列表table.col_slice(colx,start_rowx=0,end_rowx=None)#returnsallthecellsinthecolumnAlistofcellobjectstable.col_types(colx,start_rowx=0,end_rowx=None)#返回列中所有单元格的数据类型列表table.col_values(colx,start_rowx=0,end_rowx=None)#return列中所有单元格的数据组成的列表table.cell(rowx,colx)#返回单元格对象table.cell_type(rowx,colx)#返回单元格中的数据类型table.cell_value(rowx,colx)#返回单元格中的数据xlwtxlwt主要是写入Excel,可以实现指定表格指定单元格的写入,但是保存的格式只支持xls格式importxlwt#导入模块workbook=xlwt.Workbook(encoding='utf-8')#创建工作簿对象worksheet=workbook.add_sheet('sheet1')#创建工作表sheetworksheet.write(0,0,'hello')#去写表格中的内容,第一个参数行,第二个参数列,第三个参数内容content='utf-8')worksheet=workbook.add_sheet('sheet1')#设置字体样式font=xlwt.Font()font.name='TimeNewRoman'#fontfont.bold=True#Boldfont.underline=True#Underlinefont.italic=True#Italicstyle=xlwt.XFStyle()style.font=font#创建styleworksheet.write(0,1,'world',style)workbook.save('students.xls')#根据样式创建工作簿#合并单元格workbook=xlwt.Workbook(encoding='utf-8')worksheet=workbook.add_sheet('sheet1')#通过worksheet调用merge()创建合并单元格#第一个和第二个参数Mergesingletablerows,合并第三个和第四个参数columns,#合并第0列到第2列的单元格worksheet.write_merge(0,0,0,2,'firstmerge')#合并第一列第2行单元格worksheet.write_merge(0,1,0,0,'firstmerge')workbook.save('students.xls')#设置单元格的对齐方式workbook=xlwt.Workbook(encoding='utf-8')worksheet=workbook.add_sheet('sheet1')alignment=xlwt.Alignment()alignment.horz=xlwt.Alignment.HORZ_CENTER#水平居中alignment.vert=xlwt.Alignment.VERT_CENTER#垂直居中style=xlwt.XFStyle()style.alignment=alignmentworksheet.col(0).width=6666#设置单元格宽度worksheet.row(0).height_mismatch=Trueworksheet.row(0).height=1000#设置单元格高度worksheet.write(0,0,'helloworld',style)workbook.save('center.xls')#设置单元格边框workbook=xlwt.Workbook(encoding='utf-8')worksheet=workbook.add_sheet('sheet1')border=xlwt.Borders()#DASHED虚线#NO_LINEno#THIN实线border.left=xlwt.Borders.THINborder.right=xlwt.Borders.THINborder.top=xlwt.Borders.THINborder.bottom=xlwt.Borders.THINstyle=xlwt.XFStyle()style.borders=borderworksheet.write(1,1,'love',style)workbook.save('dashed.xls')#设置单元格背景颜色SOLID_PATTERNpattern.pattern_fore_colour=3style=xlwt.XFStyle()style.pattern=patternworksheet.write(1,1,'shit',style)workbook.save('shit.xls')#设置字体颜色workbook=xlwt.Workbook(encoding='utf-8')worksheet=workbook.add_sheet('sheet1')font=xlwt.Font()#设置字体为红色font.colour_index=xlwt.Style.colour_map['red']style=xlwt.XFStyle()style.font=fontworksheet.write(0,1,'world',style)workbook.save('students.xls')XlsxWriterXlsxWriter可以用来写文字,数字,公式,支持单元格格式化,图片,图表,文档配置、自动筛选等功能,但缺点也很明显,不能用来读取和修改Excel文件importxlsxwriter#导入库work_book=xlsxwriter.Workbook('myfirst.xlsx')#创建名为“myfirst.xlsx”的excel文件sheetnametomyexcel.xlsxwork_sheet3=work_book.add_worksheet()#不带参数,默认添加sheet3#write_number:写数字#write_blank:写空格#write_formula:写公式#write_datetime:写时间格式#write_boolean:写逻辑数据#write_url:写入链接地址work_sheet2.write_string(0,0,'thisiswritestring!')work_sheet2.write_number('A2',123456)work_sheet2.write_blank('A3',None)work_sheet2.write_number('B1',12)work_sheet2.write_number('B2',24)work_sheet2.write_number('B3',35)work_sheet2.write_formula('B7','=sum(b1:b5)')work_sheet2.write_datetime(0,3,datetime.datetime.strptime('2019-04-18','%Y-%m-%d'),work_book.add_format({'num_format':'yyyy-mm-dd'}))work_sheet1.write_boolean(0,0,True)work_sheet1。write_url('A2','http://www.toutiao.com')openpyxlopenpyxl是比较流行的操作excel表格的Python库,03版本以后才支持xlsx。#创建一个工作簿WorkbookfromopenpyxlimportWorkbookworkbook=Workbook()#创建一个工作簿对象workbook.save('test.xlsx')#保存这个工作簿并命名为test#打开一个已有的工作簿fromopenpyxlimportload_workbookworkbook=load_workbook('test.xlsx')##Open当前路径下的测试表单#创建表#方法一:插入到最后(默认)ws1=wb.create_sheet("Mysheet")#方法二:插入到最开始位置ws2=wb.create_sheet("Mysheet"",0)#Selectanexistingtablefromopenpyxlimportload_workbookworkbook=load_workbook('test.xlsx')#打开当前路径下的测试表单sheet=workbook['first_sheet']#选择名为first_sheet的表页#删除表fromopenpyxlimportload_workbookworkbook=load_workbook('test.xlsx')#打开当前路径下的测试表格sheet=workbook['first_sheet']#选择名为first_sheet的表格页workbook.remove(sheet)#删除这个表格#访问cell#方法1cell1=sheet['A1']#方法2cell2=sheet.cell(row=1,column=2)cell1.value='123456'#设置单元格sheet的值.merge_cells('A1:A2')#合并A1和A2单元格今天暂时推荐到这里,需要的同学赶紧收藏吧~~