# 批量创建Excelimportxlwings# add_book=True(默认)启动 Excel 应用程序后,会自动创建一个名为“工作簿1”(或 “Book1”)的新空白工作簿。# add_book=False 只启动 Excel 应用程序,但不自动创建任何工作簿。此时 app.books 是空的,# 你需要手动添加工作簿(app.books.add())或打开已有的文件(app.books.open('文件.xlsx'))# xw.App(visible=True,add_book=True) 会打开Excel,且不会自动关闭# xw.App(visible=false,add_book=True) 会打开Excel,但一晃就自动关闭了app=xlwings.App(visible=True,add_book=False)forlanguagein['Java','Python','C#','Vue',"JavaScript"]:workbook=app.books.add()workbook.save(f"./畅销开发语言--{language}.xlsx")# 批量打开Excelimportosimportxlwingsasxw app=xw.App(visible=True,add_book=False)# os.listdir(path) 列出指定目录下的内容forfileinos.listdir("."):iffile.endswith('.xlsx')orfile.endswith('.xlsx'):app.books.open(file)# 批量重命名工作表importxlwingsasxw app=xw.App(visible=False,add_book=False)workbook=app.books.open("畅销开发语言--Python.xlsx")forsheetinworkbook.sheets:sheet.name=sheet.name.replace('Sheet','ZEN')workbook.save()app.quit()# 合并Excel文件importpandasaspdimportos data_list=[]forfilenameinos.listdir('.'):iffilename.startswith('畅销开发语言--')andfilename.endswith('.xlsx'):# pd.read_excel("xx.xlsx", sheet_name=None)# sheet_name 默认值0 ,也就是默认打开Excel表中第一个工作簿data_list.append(pd.read_excel(filename))data_all=pd.concat(data_list)data_all.to_excel("合并表.xlsx",index=False)# 把一个Excel的所有工作表合并,且结果插入第一个位置# 只是把其它sheet表复制到首个,并没有汇总。importpandasaspdimportosimportxlwingsasxw# pd.read_excel("xx.xlsx", sheet_name=None)# sheet_name 默认值0 ,也就是默认打开Excel表中第一个工作簿# sheet_name=None 打开所有sheet 工作簿data_list=pd.read_excel("xxx.xlsx",sheet_name=None)print(data_list)data_all=pd.concat(data_list.values())app=xw.App(visible=False,add_book=False)workbook=app.books.open("xxx.xlsx")workbook.sheets.add("汇总表",before=workbook.sheets[0])workbook.sheets["汇总表"].range("A1").options(index=False).value=data_all workbook.save()workbook.close()app.quit()# 把Excel 工作表 拆分多个Excel文件 按course 列拆分# Excel 列 course Totalimportpandasaspd data_list=pd.read_excel("xxx.xlsx",sheet_name=0)courses=data_list["course"].unique()forcourseincourses:data_single=data_list[data_list["course"]==course]data_single.to_excel(f"拆分数据-{course}.xlsx")# 批量合并拆分Excelimportpandasaspd# 读取excel所有工作表# 此处的Excel工作表有 采购日期 采购物品 采购数量 采购金额data_list=pd.read_excel("A.xlsx",sheet_name=None,parse_dates=False)# print(data_list.keys())# 把多个工作表合并在一起# 注意是 values(),只合并sheet里面信息, 如果不加,也会有sheet的名称data_all=pd.concat(data_list.values())excel_writer=pd.ExcelWriter('采购表-按采购物品.xlsx',date_format="YYYY_MM_DD")forproduct,data_allindata_all.groupby("采购物品"):data_all.to_excel(excel_writer,product,index=False)excel_writer.close()顺序不变,是可以的如果李四和王五两行换一下,就不对了,importxlwingsasxw app=xw.App(visible=True,add_book=False)data=app.books.open("A.xlsx")data_back=app.books.open("A - 副本.xlsx")forcellindata.sheets[0].range("A1").expand():# cell.address 就是Excel A1,B1 单元格地址back_cell=data_back.sheets[0].range(cell.address)ifcell.value!=back_cell.value:cell.color=back_cell.color=(255,0,0)data.save()data.close()data_back.save()data_back.close()app.quit()# 把文件AA下面所有Excel文件,规格表中规格列拆分三列,同时删除规格列importxlwingsasxwimportpandasaspdimportos app=xw.App(visible=False,add_book=False)forfnameinos.listdir('AA'):iffname.endswith('.xlsx'):workbook=app.books.open(os.path.join('AA',fname))worksheet=workbook.sheets["规格表"]df=worksheet.range("A1").options(pd.DataFrame,expand='table').value worksheet.range("A1").options(pd.DataFrame)split_columns=df["规格"].str.split("*",expand=True)df["长"]=split_columns[0]df["宽"]=split_columns[1]df["高"]=split_columns[2]# inplace 原地df.drop("规格",inplace=True)worksheet.range("A1").value=df workbook.save()app.quit()# 把A.xlsx的所有sheet中物品名称列,获取,并写入另外一个Excel中importpandasaspd df_list=pd.read_excel("A.xlsx",sheet_name=None)df_all=pd.concat(df_list.values())df_names=pd.DataFrame(data={"物品名称:":list(df_all["物品名称"].unique())})df_names.to_excel("Result.xlsx",index=False)# 批量分类统计importpandasaspdimportxlwingsasxwimportos app=xw.App(visible=False,add_book=False)forfileinos.listdir("List"):iffile.endswith(".xlsx")andnotfile.startswith("~$"):workbook=app.books.open(f"List/{file}")# 第一个sheet表worksheet=workbook.sheets[0]# 将A1转换DataFrame对象df=worksheet.range("A1").options(pd.DataFrame,expand='table').value# 把GDP数据类型设置Floatdf["GDP"]=df["GDP"].astype(float)df_agg=df.groupby("城市")["GDP"].sum()# 默认是按行worksheet.range("F1").value=df_agg workbook.save()workbook.close()app.quit()