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()
相关推荐
一点媛艺1 小时前
Kotlin函数由易到难
开发语言·python·kotlin
姑苏风1 小时前
《Kotlin实战》-附录
android·开发语言·kotlin
奋斗的小花生2 小时前
c++ 多态性
开发语言·c++
魔道不误砍柴功2 小时前
Java 中如何巧妙应用 Function 让方法复用性更强
java·开发语言·python
闲晨2 小时前
C++ 继承:代码传承的魔法棒,开启奇幻编程之旅
java·c语言·开发语言·c++·经验分享
_.Switch2 小时前
高级Python自动化运维:容器安全与网络策略的深度解析
运维·网络·python·安全·自动化·devops
老猿讲编程2 小时前
一个例子来说明Ada语言的实时性支持
开发语言·ada
Chrikk3 小时前
Go-性能调优实战案例
开发语言·后端·golang
幼儿园老大*3 小时前
Go的环境搭建以及GoLand安装教程
开发语言·经验分享·后端·golang·go
canyuemanyue3 小时前
go语言连续监控事件并回调处理
开发语言·后端·golang