如果按照常规思路,先打开一个Excel表格,然后添加表格最后一列对应的表名,如果只是一个只有一行内容的表格,可以这样写,就大功告成了。但是如果遇到很多表,一个一个去处理的话,会很累。不过,这里给大家介绍一种用Python实现自动化办公的方法,帮你解决问题,保证不出差错。战斗可以在大约几秒钟内完成。实现方法是用Python程序实现的,效率有很大的不同。下面直接看代码吧!1.Code1#coding:utf-8#在excel的每个sheet中添加一列,值为excel.xlsxfrompathlib的名称importPathimportpandasaspdpath=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=[]对于名称,excel_list中的数据:print(name)print(data)data['tablename']=namedata_list.append(data)result=pd.concat(data_list,ignore_index=True)result.to_excel(path.joinpath('foreachAddacolumntothesheetinexcel,valueisexcelname.xlsx'),index=False,encoding='utf-8')print('Addandmergecompleted!')i.stem表示得到文件名,不包括父节点和后缀,例如D:/Desktop/test.txt,i.stem就是test!2.Code2#编码: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=[]对于名称,excel_list中的数据:print(name)print(data)data['tablename']=namedata.reset_index(level=0,inplace=True)#重置level_0索引data_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!')这段代码和代码一其实几乎一样,就是列名略有不同,因为例子中三个excel中的sheet名是一样的,所以都加上表名作为前缀,表名-sheet名代码运行后,在代码目录下会自动生成对应的Excel文件,如下图所示。之后,在每个Excel表格中,也有相应的表名对应的列名,也实现了所有表格的合并功能,如下图所示。对Excel合并的知识感兴趣的可以去学习一下~这里只总结两种方法。如果大家有更好的解决办法,可以在评论区讨论哦~
