iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Python自动化之批量处理工作簿和工作表
  • 898
分享到

Python自动化之批量处理工作簿和工作表

2024-04-02 19:04:59 898人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

目录一、批量新建并保存工作簿二、批量打开一个文件夹下的所有工作簿三、批量重命名一个工作簿中所有工作表四、批量重命名工作簿五、在多个工作簿中批量新增/删除工作表六、批量打印工作簿七、将

一、批量新建并保存工作簿


import xlwings as xw     # 导入库
# 启动excel程序,但不新建工作簿
app = xw.App(visible = True, add_book = False)
 
for i in range(6):
    workbook = app.books.add()   # 新建工作簿
    workbook.save(f'e:\\file\\test{i}.xlsx')    # 保存新建的多个工作簿
    workbook.close()     # 关闭当前工作簿
app.quit()     # 退出Excel程序

二、批量打开一个文件夹下的所有工作簿

1.批量打开一个文件夹下的所有工作簿


import os
import xlwings as xw
 
file_path = 'e:\\table'     # 给出工作簿所在的文件夹路径
file_list = os.listdir(file_path)     # 列出路径下所有文件和子文件夹的名称
app = xw.App(visible = True, add_book = False)    # 启动Excel程序
for i in file_list:
    if os.path.splitext(i)[1] == '.xlsx':       # 判断文件夹下文件的扩展名是否为“.xlsx”
        app.books.open(file_path + '\\' + i)    # 打开工作簿

2.列出文件夹下所有文件和子文件夹的名称


import os
file_path = 'table'
file_list = os.listdir(file_path)
for i in file_list:
    print(i)

三、批量重命名一个工作簿中所有工作表

1.批量重命名一个工作簿中的所有工作表


import xlwings as xw
app = xw.App(visible = False, add_book = False)
workbook = app.books.open('e:\\table\\统计表.xlsx')
worksheets = workbook.sheets     # 获取工作簿中所有的工作表
 
for i in range(len(worksheets)):   # 遍历获取到的工作表
    worksheets[i].name = worksheets[i].name.replace('销售', '')     # 重命名工作表
workbook.save('e:\\table\\统计表1.xlsx')       # 另存重命名工作表后的工作簿
app.quit()

2.批量重命名一个工作簿中的部分工作表


import xlwings as xw
app = xw.App(visible = False, add_book = False)
workbook = app.books.open('e:\\table\\统计表.xlsx')
worksheets = workbook.sheets    # 获取工作簿中所有的工作表
 
for i in range(len(worksheets))[:5]:   # 通过切片来选中部分工作表
    worksheets[i].name = worksheets[i].name.replace('销售', '')   # 重命名工作表
workbook.save('e:\\table\\统计表1.xlsx')    # 另存重命名工作表后的工作簿
app.quit()

四、批量重命名工作簿

1.批量重命名多个工作簿


import os    # 导入库
 
file_path = 'e:\\table\\产品销售表'   # 给出待重命名工作簿所在文件夹的路径
file_list = os.listdir(file_path)    # 列出文件夹下所有文件和子文件夹的名称
 
old_book_name = '销售表'           # 给出工作簿名中需要替换的旧关键字
new_book_name = '分部产品销售表'    # 给出工作簿名中要替换的新关键字
 
for i in file_list:
    if i.startswith('~$'):   # 判断是否有文件夹名以“~$”开头的临时文件
        continue     # 如果有,则跳过这种类型的文件
        
    new_file = i.replace(old_book_name, new_book_name)    # 执行查找和替换,生成新的工作簿名
    old_file_path = os.path.join(file_path, i)            # 构造需要重命名工作簿的完整路径
    new_file_path = os.path.join(file_path, new_file)     # 构造重命名后工作簿的完整路径
    os.rename(old_file_path, new_file_path)     # 执行重命名

2.批量重命名多个工作簿中的同名工作表


import os
import xlwings as xw
 
file_path = 'e:\\table\\信息表'
file_list = os.listdir(file_path)
 
old_sheet_name = 'Sheet1'    # 给出需要修改的工作表名
new_sheet_name = '员工信息'   # 列出修改后的工作表名
 
app = xw.App(visible = False, add_book = False)
 
for i in file_list:
    if i.startswith('~$'):
        continue
 
    old_file_path = os.path.join(file_path, i)
    workbook = app.books.open(old_file_path)
 
    for j in workbook.sheets:
        if j.name == old_sheet_name:    # 判断工作表名是否为“sheet1”
            j.name = new_sheet_name     # 如果是,则重命名工作表
            
    workbook.save()
app.quit()

五、在多个工作簿中批量新增/删除工作表

1.批量新增工作表


import os
import xlwings as xw
 
file_path = 'e:\\table\\销售表'
file_list = os.listdir(file_path)
 
sheet_name = '产品销售区域'    # 给出新增的工作表名称
app = xw.App(visible = False, add_book = False)
 
for i in file_list:
    if i.startswith('~$'):
        continue
        
    file_paths = os.path.join(file_path, i)
    workbook = app.books.open(file_paths)
    sheet_names = [j.name for j in workbook.sheets]
    if sheet_name not in sheet_names:
        workbook.sheets.add(sheet_name)
        workbook.save()
app.quit()

2.批量删除工作表


import os
import xlwings as xw
 
file_path = 'e:\\table\\销售表1'
file_list = os.listdir(file_path)
 
sheet_name = '产品销售区域'   # 给出要删除的工作表名称
app = xw.App(visible = False, add_book = False)
 
for i in file_list:
    if i.startswith('~$'):
        continue
        
    file_paths = os.path.join(file_path, i)
    workbook = app.books.open(file_paths)
    for j in workbook.sheets:
        if j.name == sheet_name:
            j.delete()
            break
    workbook.save()
app.quit()

六、批量打印工作簿

1.批量打印工作簿


import os
import xlwings as xw
 
file_path = 'e:\\table\\公司'
file_list = os.listdir(file_path)
app = xw.App(visible = False, add_book = False)
 
for i in file_list:
    if i.startswith('~$'):
        continue
        
    file_paths = os.path.join(file_path, i)   # 获取需要打印的工作簿的文件路径
    workbook = app.books.open(file_paths)    # 打开要打印的工作簿
    
    workbook.api.PrintOut()   # 打印工作簿
app.quit()

2.批量打印多个工作簿中的指定工作表


import os
import xlwings as xw
 
file_path = 'e:\\table\\公司1'
file_list = os.listdir(file_path)
 
sheet_name = '产品分类表'     # 给出要打印的工作表的名称
app = xw.App(visible = False, add_book = False)
 
for i in file_list:
    if i.startswith('~$'):
        continue
        
    file_paths = os.path.join(file_path, i)
    workbook = app.books.open(file_paths)
    
    for j in workbook.sheets:
        if j.name == sheet_name:     # 判断工作簿中是否存在名为“产品分类表”的工作表
            j.api.PrintOut()    # 如果存在,则打印该表
            break
app.quit()   # 退出Excel程序

七、将一个工作簿的所有工作表批量赋值到其他工作簿

1.将一个工作簿的所有工作表批量赋值到其他工作簿


import os
import xlwings as xw
 
app = xw.App(visible = False, add_book = False) 
file_path = 'e:\\table\\销售表'   
file_list = os.listdir(file_path)  
 
workbook = app.books.open('e:\\table\\信息表.xlsx')  
worksheet = workbook.sheets
 
for i in file_list:  
    if os.path.splitext(i)[1] == '.xlsx':      # 判断文件是否有工作簿
        workbooks = app.books.open(file_path + '\\' + i)     # 如果是工作簿则将其打开
        
        for j in worksheet:    
            contents = j.range('A1').expand('table').value     # 读取来源工作簿中要赋值的工作表数据
            name = j.name        # 获取来源工作簿中的工作表名称
            workbooks.sheets.add(name = name, after = len(workbooks.sheets))     # 在目标工作簿中新增同名工作表
            workbooks.sheets[name].range('A1').value = contents      # 将从来源工作簿中读取的工作表数据写入新增工作表
        workbooks.save()        # 保存目标工作簿
app.quit()

2.将指定工作表的数据批量复制到其他工作簿的指定工作表中


import os
import xlwings as xw
app = xw.App(visible = False, add_book = False)
 
file_path = 'e:\\table\\销售表1'  
file_list = os.listdir(file_path)  
 
workbook = app.books.open('e:\\table\\新增产品表.xlsx')  
worksheet = workbook.sheets['新增产品']           # 选中工作表“新增产品”
value = worksheet.range('A1').expand('table')   # 读取工作表“新增产品”中的所有数据
start_cell = (2, 1)                             # 给出要复制数据的单元格区域的起始单元格
end_cell = (value.shape[0], value.shape[1])    # 给出要复制数据的单元格区域的结束单元格
cell_area = worksheet.range(start_cell, end_cell).value   # 根据前面设定的单元格区域选取要复制的数据
 
for i in file_list:  
    if os.path.splitext(i)[1] == '.xlsx': 
        try:
            workbooks = xw.Book(file_path + '\\' + i)  
            sheet = workbooks.sheets['产品分类表']       # 选中要粘贴数据的工作表“产品分类表”
            scope = sheet.range('A1').expand()          # 选中要粘贴数据的单元格区域
            sheet.range(scope.shape[0] + 1, 1).value = cell_area     # 粘贴数据
            workbooks.save()     # 保存目标工作簿
            
        finally:
            workbooks.close()     # 关闭目标工作簿
workbook.close()                  # 关闭来源工作簿
app.quit()

八、按条件将一个工作表批量赋值到其他工作簿

1.将多个工作表拆分为多个工作簿


import xlwings as xw
workbook_name = 'e:\\table\\产品销售表.xlsx'        # 指定要拆分的来源工作簿
app = xw.App(visible = False, add_book = False)
 
header = None    
all_data = []  
workbook = app.books.open(workbook_name)
 
for i in workbook.sheets:                 # 遍历来源工作簿中的工作表
    workbook_split = app.books.add()      # 新建一个目标工作簿
    sheet_split = workbook_split.sheets[0]     # 选择目标工作簿中的第一个工作表
    i.api.Copy(Before = sheet_split.api)       # 将来源工作簿中的当前工作表复制到目标工作簿的第一个工作表之前
    workbook_split.save('{}'.fORMat(i.name))   # 以当前工作表的名称作为文件名保存目标工作簿
app.quit()

2.按条件将一个工作表拆分为多个工作表


import xlwings as xw
import pandas as pd
app = xw.App(visible = True, add_book = False)
 
workbook = app.books.open('e:\\table\\产品统计表.xlsx')
worksheet = workbook.sheets['统计表']
# 读取要拆分的工作表数据
value = worksheet.range('A1').options(pd.DataFrame, header = 1, index = False, expand = 'table').value 
data = value.groupby('产品名称')    # 将数据按照“产品名称”分组
 
for idx, group in data: 
    new_worksheet = workbook.sheets.add(idx)      # 在工作簿中新增工作表并命名为当前的产品名称
    new_worksheet['A1'].options(index = False).value = group      # 将数据添加到新增的工作表
workbook.save()
workbook.close()
app.quit()

3.按条件将一个工作表拆分为多个工作簿


import xlwings as xw
 
file_path = 'e:\\table\\产品统计表.xlsx'
sheet_name = '统计表'
app = xw.App(visible = True, add_book = False)
 
workbook = app.books.open(file_path)
worksheet = workbook.sheets[sheet_name]
value = worksheet.range('A2').expand('table').value
data = dict()
 
for i in range(len(value)):
    product_name = value[i][1]
    if product_name not in data:
        data[product_name] = []
    data[product_name].append(value[i])
 
for key,value in data.items():
    new_workbook = xw.books.add()
    new_worksheet = new_workbook.sheets.add(key)
    new_worksheet['A1'].value = worksheet['A1:H1'].value
    new_worksheet['A2'].value = value
    new_workbook.save('{}.xlsx'.format(key))
app.quit()

九、批量合并多个工作簿中的同名工作表

1.批量合并多个工作簿中的同名工作表


import os
import xlwings as xw
 
file_path = 'e:\\table\\销售统计'
file_list = os.listdir(file_path)
sheet_name = '产品销售统计'
app = xw.App(visible = False, add_book = False)
header = None
all_data = []
for i in file_list:
    if i.startswith('~$'):
        continue   
    file_paths = os.path.join(file_path, i)
    workbook = app.books.open(file_paths)
    for j in workbook.sheets:
        if j.name == sheet_name:
            if header == None:
                header = j['A1:I1'].value
            values = j['A2'].expand('table').value
            all_data = all_data + values
new_workbook = xw.Book()
new_worksheet = new_workbook.sheets.add(sheet_name)   
new_worksheet['A1'].value = header
new_worksheet['A2'].value = all_data
new_worksheet.autofit()
new_workbook.save('e:\\table\\上半年产品销售统计表.xlsx')
app.quit()

2.将工作簿中名称有规律的工作表合并到一个工作表


import os
import xlwings as xw
workbook_name = 'e:\\table\\采购表.xlsx'
sheet_names = [str(sheet)+'月' for sheet in range(1,7)]
new_sheet_name = '上半年统计表'
app = xw.App(visible = False, add_book = False)
header = None
all_data = []
workbook = app.books.open(workbook_name)
for i in workbook.sheets:
    if new_sheet_name in i.name: 
        i.delete()
new_worksheet = workbook.sheets.add(new_sheet_name)
title_copyed = False
for j in workbook.sheets:
    if j.name in sheet_names:
        if title_copyed == False:
            j['A1'].api.EntireRow.Copy(Destination = new_worksheet["A1"].api)
            title_copyed = True
        row_num = new_worksheet['A1'].current_region.last_cell.row
        j['A1'].current_region.offset(1, 0).api.Copy(Destination = new_worksheet["A{}".format(row_num + 1)].api)
new_worksheet.autofit()
workbook.save()
app.quit()

到此这篇关于python自动化之批量处理工作簿和工作表的文章就介绍到这了,更多相关Python处理工作簿和工作表内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Python自动化之批量处理工作簿和工作表

本文链接: https://www.lsjlt.com/news/127526.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Python自动化之批量处理工作簿和工作表
    目录一、批量新建并保存工作簿二、批量打开一个文件夹下的所有工作簿三、批量重命名一个工作簿中所有工作表四、批量重命名工作簿五、在多个工作簿中批量新增/删除工作表六、批量打印工作簿七、将...
    99+
    2024-04-02
  • Python自动化之批量处理工作簿和工作表的示例分析
    这篇文章主要介绍Python自动化之批量处理工作簿和工作表的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一、批量新建并保存工作簿import xlwings as xw&nbs...
    99+
    2023-06-15
  • Python批量处理工作簿和工作表的实现示例
    目录批量新建并保存工作簿批量打开一个文件夹中的打开工作簿批量重命名一个工作簿的所有工作表批量重命名多个工作簿批量重命名多个工作簿中的同名工作表将一个工作簿的所有工作表批量复制到其他工...
    99+
    2024-04-02
  • Python 实现多表和工作簿合并及一表按列拆分
    目录一、相关知识点讲解1.1 需要使用的相关库1.2 os.walk(pwd)1.3 os.path.join(path1,path2…)1.4 案例解析1.5 如何在...
    99+
    2024-04-02
  • Python怎么实现多表和工作簿合并及一表按列拆分
    今天小编给大家分享一下Python怎么实现多表和工作簿合并及一表按列拆分的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。一、相...
    99+
    2023-06-30
  • Python办公自动化PPT批量转换操作
    目录python-pptx 模块的安装读取 PPT写入 PPT添加一张幻灯片为幻灯片添加内容获取幻灯片中的形状:添加自动形状占位符访问占位符将内容插入占位符如果要插入表格:如果要插入...
    99+
    2024-04-02
  • 自动化控制系统工作原理有哪些
    自动化控制系统工作原理主要包括以下几个方面:1. 传感器:传感器用于感知和采集被控对象的信息,如温度、压力、速度等。传感器将这些信息...
    99+
    2023-09-22
    系统
  • Python编程的简易版自动化工具ADB的工作原理以及用法
    本篇文章为大家展示了Python编程的简易版自动化工具ADB的工作原理以及用法,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。前言ADB,中文名安卓调试桥,它是一种功能多样的命令行工具,可用于执行各种...
    99+
    2023-06-15
  • Windows 批处理的应用小结(ProtoBuf编译自动化工具)
    Windows批处理的应用(ProtoBuf编译自动化工具) 参考文章:https://www.jb51.net/article/261993.htm 批处理概述 批处理,顾名思义就...
    99+
    2024-04-02
  • Python命令行定时任务自动化工作流程
    目录1.使用场景2.库3.运行脚本4.脚本5.python常用的定时任务6.四种方法用python调用命令行1.使用场景 定时执行jmeter脚本,通过python定时器隔一段时间执...
    99+
    2023-05-17
    Python命令行定时任务 Python定时任务行
  • Python小工具:五分钟处理完一天的工作量,真香
    简介FFmpeg 是一套强大的音视频处理程序,也是很多音视频软件的基础,事实上,FFmpeg 已经成为业界音视频处理的标准了。但命令行使用 FFmpeg 是有一定学习成本的,而 ffmpeg-python 库则很好的解决了这个问题。通过 p...
    99+
    2023-05-23
    工具 Python
  • Python办公自动化Word转Excel文件批量处理
    目录前言首先使用Python将Word文件导入row和cell解析所需内容内层解析循环前言 大家好,今天有一个公务员的小伙伴委托我给他帮个忙,大概是有这样一份Word(由于...
    99+
    2024-04-02
  • PHP 表单处理的工具和库:增强你的工作流程
    内置函数 PHP 本身提供了几种内置函数用于处理表单数据: $_GET 和 $_POST:存储通过 GET 和 POST 方法提交的表单数据。 filter_var:过滤和验证表单输入,防止恶意代码和无效数据。 htmlspecialc...
    99+
    2024-03-14
    表单处理
  • Atlas是否支持自动化任务调度和工作流程管理
    是的,Atlas支持自动化任务调度和工作流程管理。用户可以使用Atlas的Scheduled Tasks功能来创建和调度定期运行的任...
    99+
    2024-04-02
  • 如何使用 Bash 和 PHP 构建自动化工作流程?
    Bash 是一种流行的 Unix shell 和命令语言,而 PHP 是一种广泛用于 Web 开发的动态编程语言。它们都是强大的工具,可以帮助我们自动化许多重复的任务,提高生产力。本文将介绍如何使用 Bash 和 PHP 构建自动化工作流程...
    99+
    2023-06-14
    numpy laravel bash
  • Python办公自动化批量处理文件实现示例
    目录引言需求分析Python实现结束语引言 要说在工作中最让人头疼的就是用同样的方式处理一堆文件夹中文件,这并不难,但就是繁。所以在遇到机械式的操作时一定要记得使用Python来合理...
    99+
    2024-04-02
  • 分享十个Python提高工作效率的自动化脚本
    目录01、解析和提取 HTML02、二维码扫描仪03、截图04、创建有声读物05、PDF 编辑器06、迷你 Stackoverflow07、自动化手机08、监控 CPU/GPU 温度...
    99+
    2024-04-02
  • 如何实现网管专用自动更改IP\机器名\工作组的批处理
    小编给大家分享一下如何实现网管专用自动更改IP\机器名\工作组的批处理,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!本人负责的部门有上百台机器,重装完后需要恢复原有配置,我曾使用过很多方法: 1:手工更改,这条就不要说了 ...
    99+
    2023-06-08
  • 实时操作系统:工业自动化和控制的栋梁
    可靠性 RTOS 旨在确保系统在面对不可预见的事件或故障时仍能稳定运行。它通过实现优先级调度、内存保护和错误处理机制来实现这一目标。优先级调度确保最重要的任务优先执行,而内存保护防止一个任务意外访问另一个任务的内存,从而提高稳定性。 确定...
    99+
    2024-04-02
  • java编程之AC自动机工作原理的示例分析
    这篇文章将为大家详细讲解有关java编程之AC自动机工作原理的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。1.应用场景—多模字符串匹配我们现在考虑这样一个问题,在一个文本串text中,我们想找出...
    99+
    2023-05-30
    java
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作