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()
相关推荐
Humbunklung5 分钟前
Rust Floem UI 框架使用简介
开发语言·ui·rust
Yxh1813778455440 分钟前
抖去推--短视频矩阵系统源码开发
人工智能·python·矩阵
网安INF42 分钟前
RSA加密算法:非对称密码学的基石
java·开发语言·密码学
明月*清风43 分钟前
c++ —— 内存管理
开发语言·c++
蔡蓝1 小时前
设计模式-观察着模式
java·开发语言·设计模式
Humbunklung1 小时前
PySide6 GUI 学习笔记——常用类及控件使用方法(多行文本控件QTextEdit)
笔记·python·学习·pyqt
火车叼位2 小时前
使用 uv 工具在 Windows 系统快速下载安装与切换 Python
python
西北大程序猿2 小时前
单例模式与锁(死锁)
linux·开发语言·c++·单例模式
你不是我我2 小时前
【Java开发日记】说一说 SpringBoot 中 CommandLineRunner
java·开发语言·spring boot
心扬2 小时前
python网络编程
开发语言·网络·python·tcp/ip