python-批量操作excel

  1. 批量新增excel文件

    python 复制代码
    	import os
    	import xlwings  as xw
    	app = xw.App(visible=True,add_book=False)#visible设置为ture的时候会自动打开创建的excel文件,设为为false的时候不会看到excel文件打开了,实际进程占用了....
    	dept_list = ['人事部','财务部','研发部','行政部']
    	path = os.path.abspath(os.path.abspath(os.path.dirname(__file__)))
    	dept_path = os.path.join(path,'excel文件')
    	
    	for dept in dept_list:
    	    workbook = app.books.add()
    	    workbook.save(f'{dept_path}/部门业绩-{dept}.xlsx')
  2. 批量打开excel文件

    python 复制代码
    import os
    import xlwings  as xw
    app = xw.App(visible=True,add_book=False)
    for dir,curdir,files in os.walk(dept_path):
        if files:
           for  file in files:
                file_path = os.path.join(dir,file)
                if file.endswith('.xlsx'):
                    app.books.open(file_path)
  3. 批量修改excel文件工作表名

    复制代码
     import os
     import xlwings  as xw
     app = xw.App(visible=False,add_book=False)
     path = os.path.abspath(os.path.abspath(os.path.dirname(__file__)))
     dept_path = os.path.join(path,'excel文件')
     #批量修改  【部门业绩-行政部.xlsx  】 这个文件的工作表名
     workbook =app.books.open(f'{dept_path}\部门业绩-行政部.xlsx')
     for sheet in workbook.sheets:
         sheet.name = sheet.name.replace('Sheet','部门')
     workbook.save()
     app.quit()

4.合并相似excel文件内容到一个excel(只会合并每个excel第一个sheet页的内容)

python 复制代码
	import pandas as pd
	data_list = []
	for dir,curdir,files in os.walk(dept_path):
	    if files:
	       for  file in files:
	            file_path = os.path.join(dir,file)
	            if file.endswith('.xlsx') and file.startswith('部门业绩-'):
	                data_list.append(pd.read_excel(file_path))
	
	data_all = pd.concat(data_list)
	data_all.to_excel('部门业绩.xlsx')
  1. 合并一个excel文件多个sheet页内容到第一个sheet页中

    python 复制代码
    import pandas as pd
    import xlwings as xw
    file = f'{dept_path}\部门业绩-行政部.xlsx'
    df_list = pd.read_excel(file,sheet_name=None)
    df_all = pd.concat(df_list.values())
    app=xw.App(visible=False,add_book=False)
    workbook = app.books.open(file)
    workbook.sheets.add('汇总表',before=workbook.sheets[0])
    workbook.sheets['汇总表'].range('A1').options(index=False).value=df_all
    workbook.save()
    workbook.close()
    app.quit()
  2. 拆分excel表(按照某个分类拆分成不同的excel表)

    python 复制代码
    import pandas as pd
    file = f'{dept_path}\产品表.xlsx'
    df= pd.read_excel(file)
    products = df['产品类型'].unique()  #去重获取产品类型这一列所有产品
    
    for product in products:
        df_product = df[df['产品类型']==product]
        df_product.to_excel(f'{dept_path}\产品表-{product}.xlsx')
  3. 拆分excel表(按照某个分类拆分成不同的sheet页)

    python 复制代码
    import pandas as pd
    file = f'{dept_path}\采购表.xlsx'
    #读取所有sheet页
    df_list= pd.read_excel(file,sheet_name=None,parse_dates=False)
    #合并成一个大数据表
    df_all = pd.concat(df_list.values())
    
    file2 = f'{dept_path}\采购表-按产品类分.xlsx'
    excel_writer = pd.ExcelWriter(file2,date_format='YYYY-MM-DD')
    for product,df in df_all.groupby('产品类型'):
        df.to_excel(excel_writer,product,index=False)
    excel_writer.save()
  4. 比较2个excel文件内容

    python 复制代码
    import os
    import xlwings  as xw
    
    app = xw.App(visible=False,add_book=False)
    file = f'{dept_path}\产品表.xlsx'
    file_back = f'{dept_path}\产品表-备份.xlsx'
    book = app.books.open(file)
    book_backup = app.books.open(file_back)
    
    for row in book.sheets[0].range('A1').expand():
        for cell in row:
            backup_cell = book_backup.sheets[0].range(cell.address)
            if cell.value != backup_cell.value:
                cell.color = backup_cell.color = (255,0,0)
    book.save()
    book.close()
    book_backup.save()
    book_backup.close()
    app.quit()
相关推荐
heimeiyingwang8 分钟前
【架构实战】Kubernetes网络模型深度解析:从Pod通信到Ingress网关实战
开发语言·架构·php
Code额14 分钟前
Python asyncio 异步编程全套学习文档(零基础完整版)
python·学习·oracle·async·异步·asyncio
钱栈up17 分钟前
Mac 开发机一键发版不用切环境:我这样改造了团队的后端部署脚本
运维·python·mac
luj_17681 小时前
变频技术核心原理揭秘
服务器·c语言·开发语言·经验分享·算法
coder_Eight1 小时前
从 3 天到 8 分钟:我如何把垂直科普内容做成了自动化流水线
python·ai编程
水獭比特1 小时前
MCP SDK v2 迁移别只改依赖:先把 FastMCP 3/4 拆成两条测试线
人工智能·python
l1258651 小时前
# RAG多轮对话检索设计:Query重写如何让“那它呢“变成完整问题
前端·数据库·人工智能·python·算法·fastapi·milvus
dorky-org1 小时前
03-Python基础
python·具身智能
如此这般英俊1 小时前
手搓Claude Code-第十三章 background_tasks
前端·人工智能·chrome·python·算法·语言模型·自然语言处理
君顾12 小时前
智慧场馆解决方案小程序系统开发实战指南
java·开发语言·智慧场馆