有位🇦]的粉丝在Python交流群里问了一个关于Python办公自动化的问题。乍一看似乎很简单,但实际上确实很难。问题如下图所示。2、解决方法如果按照常规思路,先打开一个Excel表格,然后在表格的最后一列加上相应的表名。如果只是一个表格,只有一行内容,你可以这么干,就大功告成了。.但是如果遇到很多表,一个一个去处理的话,会很累。不过,这里给大家介绍一种用Python实现自动化办公的方法,帮你解决问题,保证不出差错。战斗可以在大约几秒钟内完成。事实上[🇼🇺🇱🇦]我也尝试过用Python来解决,但是遇到了一些问题。虽然创建了Excel文件,但是后面的列名写入失败,最后他还需要合并Excel表格,所以这里其实有两个需求。3.解决方案这是[🌑提供的代码(这里是月亮的背面]老大],大体思路其实差不多,但是实现方法是用Python程序实现的,同样效率很低。我们直接看代码吧!1.代码1#coding:utf-8#给excel中的每个sheet添加一列,值为excel.xlsxfrompathlibimportPathimportpandasasspdpath=Path(r'E:\PythonCrawler\python_crawler-master\MergeExcelSheet\file\777')excel_list=[(i.stem,pd.concat(pd.read_excel(i,sheet_name=None)))foriinpath.glob("*.xls*")]data_list=[]forname,datainexcel_list:print(name)print(data)data['表名']=namedata_list.append(data)result=pd.concat(data_list,ignore_index=True)result.to_excel(path.joinpath('在excel的每个sheet中添加一列,值isexcelname.xlsx'),index=False,encoding='utf-8')print('Addandmergecompleted!')i.stem表示获取文件名,不包括父节点和Suffix,exampleD:/Desktop/test.txt,i.stem是test!2.代码2#coding:utf-8#给excel中的每个sheet添加一列,值为excelname-sheetname.xlsxfrompathlibimportPathimportpandasaspdpath=Path(r'E:\PythonCrawler\python_crawler-master\MergeExcelSheet\file\777')excel_list=[(i.stem,pd.concat(pd.read_excel(i,sheet_name=None)))foriinpath.glob("*.xls*")]data_list=[]forname,datainexcel_list:print(name)print(data)data['表名']=namedata.reset_index(level=0,inplace=True)#resetlevel_0indexdata_list.append(data)result=pd.concat(data_list,ignore_index=True)result['表名']=result['表名']+'-'+result['level_0']#改变列值delresult['level_0']#删除多余的列result.to_excel(path.joinpath('在excel中的每个sheet中添加一列,值为excelname-sheetname.xlsx'),index=False,encoding='utf-8')print('Addandmergecompleted!')这段代码其实和代码1类似,只是列名略有不同,因为example中的三个sheetexcel中的名称相同,因此使用表名作为前缀。以表名-表名运行代码后,会在代码目录下自动生成对应的Excel文件,如下图所示。之后,在每个Excel表格中,也有对应的表名对应的列名,也实现了所有表格的合并功能,如下图所示。如果你对Excel合并的知识感兴趣,可以戳这篇文章学习:盘点4种使用Python批量合并同一文件夹所有子文件夹下Excel文件中所有Sheet数据的方法,干货满满!4.总结一下我是Python进阶。本文针对爱好者们对Python自动化办公的疑问,给出了使用Python基础+pandas文件处理的解决方案,充分满足了爱好者们的需求,为大家节省了大量的时间。
