python自动化系列:自动将工作簿下的所有工作表合并到新工作表

news2024/11/15 11:45:50

作品介绍

作品名称:自动将工作簿下的所有工作表合并到新工作表

开发环境:PyCharm 2023.3.4 + python3.7

用到的库:os、xlwings

作品简介:该实例使用xlwings库来操作Excel文件,其主要功能是将一个工作簿中所有工作表的数据合并到一个新的工作表中。

注意:运行之前,最好先备份文件,避免偶发性的异常导致文件损坏。

实现过程

一、代码设计

以下是代码的详细说明:

  1. 导入模块:
  • os:用于操作文件和目录。

  • xlwings:用于与Excel交互的库。

  1. 定义summary函数:
  • 参数src:要处理的Excel文件的路径。

  • 参数name:新工作表的名称,用于存放合并后的数据。

  1. 文件存在性检查:
  • 使用os.path.exists(src)检查源文件是否存在,如果不存在则打印错误信息并返回。
  1. 打开Excel工作簿:
  • 使用xw.Book(src)打开指定路径的Excel文件。
  1. 检查并创建新工作表:
  • 检查name是否已存在于工作簿的工作表中,如果存在则删除旧的工作表。

  • 使用wb.sheets.add(name=name)添加一个新的工作表。

  1. 合并数据:
  • 遍历工作簿中的所有工作表。

  • 如果工作表名称不是name,则将数据复制到新工作表。

  • 首先复制标题行(如果title_copyFalse),然后复制其余数据。

  • 使用current_region获取当前工作表的活动区域,并使用offset方法来确定复制数据的目的地。

  1. 自动调整列宽:
  • 调用new_sheet.autofit()自动调整新工作表的列宽以适应内容。
  1. 保存和退出:
  • 保存工作簿,但未指定保存路径,这意味着它将覆盖原始文件。

  • 关闭Excel应用程序。

  1. 打印完成信息:
  • 打印一条消息,告知用户合并操作已完成。
  1. 设置源文件路径和新工作表名称:
  • src_path:设置为'./采购表/采购表.xlsx',这是要处理的Excel文件的路径。

  • new_name:设置为'汇总表',这是新工作表的名称。

  1. 调用函数:
  • 调用summary(src_path, new_name)执行合并操作。

import os
import xlwings as xw


def summary(src, name):
    """
    将工作簿的所有工作表合并到一个工作表
    :param src: 要处理的Excel文件路径
    :param name: 新工作表名
    """
    if not os.path.exists(src):
        print('文件路径不正确,请检查')
        return
    # 打开Excel应用和工作簿,新建一个工作簿对象
    wb = xw.Book(src)

    # 创建一个新的工作表来存放合并后的数据
    if name in [sheet.name for sheet in wb.sheets]:
        # 如果新工作表名已存在,则先删除旧的同名工作表
        wb.sheets[name].delete()
    new_sheet = wb.sheets.add(name=name)
    title_copy = False  # 是否复制标题栏
    # 合并所有工作表的数据到新的工作表
    for sheet in wb.sheets:
        # 跳过合并的目标工作表,避免重复数据
        if sheet.name == name:
            continue
        if not title_copy:
            sheet['A1'].api.EntireRow.Copy(Destination=new_sheet["A1"].api)
            title_copy = True
        row_num = new_sheet['A1'].current_region.last_cell.row
        sheet['A1'].current_region.offset(1, 0).api.Copy(Destination=new_sheet["A{}".format(row_num + 1)].api)

    new_sheet.autofit()
    # 保存工作簿
    wb.save()
    wb.app.quit()

    print("合并完成,数据已保存到新工作表中!")


src_path = './采购表/采购表.xlsx'
new_name = '汇总表'
summary(src_path, new_name)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1868819.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

CesiumJS【Basic】- #018 加载czml文件

文章目录 加载czml文件1 目标2 代码实现3 资源文件加载czml文件 1 目标 czml文件的使用 2 代码实现 import * as Cesium from "cesium";const viewer = new Cesium.Viewer("cesiumContainer",

【知识图谱系列】一步步指导:安装与配置JDK和Neo4j的完美搭配

本文将提供详细的步骤,介绍如何下载、安装和配置Java开发工具包(JDK)以及流行的图形数据库Neo4j。将从选择合适的JDK版本开始,然后是下载和配置环境变量,接着以同样的方式处理Neo4j。最后,会通过一些检查步…

【数据分享】《中国保险年鉴》1981-2022

而今天要免费分享的数据就是1981-2022 年间出版的《中国保险年鉴》并以多格式提供免费下载。(无需分享朋友圈即可获取) 数据介绍 《中国保险年鉴》自1981年首版发行以来,已连续出版了四十余年,见证了中国保险业从萌芽到繁荣的全…

SSM教务管理系统-计算机毕业设计源码06482

ssm教务管理系统的设计与实现 摘 要 科技进步的飞速发展引起人们日常生活的巨大变化,电子信息技术的飞速发展使得电子信息技术的各个领域的应用水平得到普及和应用。信息时代的到来已成为不可阻挡的时尚潮流,人类发展的历史正进入一个新时代。在现实运…

性能测试4【搬代码】

性能测试4与性能测试3最后的 三、性能瓶颈分析和性能调优 (1)基准测试 (2)负载测试 (3)压力测试 (4)浪涌测试 (5)容量测试 有关,需要结合看 性能瓶颈分析和性能调优 (1)基准测试 一般是单接口(单交易):使用一个用持续压测1min以…

【日记】软考居然一次过了(620 字)

正文 早上空闲的时候,上 QQ 看了一下,许久不见动静的系统架构设计师群有人说出分了。我想高级都出分了,中级应该也出来了,于是用手机查了一下。看到分数几乎快要泪从中来。为什么软考能一次过,银行从业资格证考了两三…

智慧园区多维可视化管理平台

通过图扑可视化技术,智慧园区实现设施与环境的实时监控和高效管理,提升运营效率与用户体验,推动园区智能化进程。

3D模型优化10个最佳实践

对于许多在建模、渲染和动画方面经验丰富的 3D 建模者来说,3D 优化可能是一个令人畏惧的过程 - 特别是当你正在优化实时应用程序的 3D 模型时! 在 Google 上快速搜索“如何优化 3D 文件”将会出现一些建议,例如减少多边形数和消除多余的顶点。…

头歌——机器学习——支持向量机案例

第1关:基于支持向量机模型的应用案例 任务描述 本关任务:编写一个基于支持向量机模型的应用案例。 相关知识 在本应用案例中,我们借助一个具体的实际问题,来完整地实现基于支持向量机模型的开发应用。在此训练中,我…

数据结构与算法笔记:高级篇 - 向量空间:如何实现一个简单的音乐推荐系统?

概述 很多人喜都喜爱听歌,以前我们用 MP3 听歌,现在直接通过音乐 App 在线就能听歌。而且,各种音乐 App 的功能越来越强大,不仅可以自己选歌听,还可以根据你听歌的喜好,给你推荐你可能会喜好的音乐&#x…

Polyplus转染试剂的优点,你知道吗?

Polyplus专注于为生命科学研究、体内转染、生物制品制造以及细胞和基因治疗的客户,提供创新的核酸递送解决方案。其深耕转染领域,产品力强劲。在科研领域,其产品转染效果以及价格都优于lipo系列。无论是在基础科学研究中,还是在临…

数字AI化银行数字化转型实战手册银行数字化转型大客户营销销售讲师培训师唐兴通谈存量客户理财金融科技与场景化

推动银行数字化转型的五个关键因素 推动银行数字化转型的五个关键因素: 客户体验。为客户提供便利和个性化是数字化转型的关键因素。银行应开发和实施创新的数字渠道,例如移动应用程序、网上银行、聊天机器人等,以方便获取金融服务并提高客户…

【哈尔滨等保测评二级多久需要测试一次?】

哈尔滨二级等级保护测评一般为两年一次。 在确定周期时,应综合考虑多种因素。 首先,公司的大小与复杂性是影响公司发展的主要原因。大型企业在进行等保评估时,往往会花费较长的时间,因为他们的信息系统比较庞大、复杂。同时&…

国标GB/T 28181详解:国标GBT28181-2022的目录通知流程

目录 一、定义 二、作用 1、实时同步设备目录状态 2、优化资源管理和调度 3、增强系统的可扩展性和灵活性 4、提高系统的可靠性和稳定性 5、支持多级级联和分布式部署 6、便于用户管理和监控 三、基本要求 1、目录通知满足以下基本要求 2、关键要素 (1…

探索AIGC治愈系创作:Stable Diffusion 带你轻松复刻某书爆款动漫卡通文案!

hello,大家好我是安琪! 情感治愈类一直是受众群体很高非常火爆的赛道,安琪也关注到在某书平台上,漫画治愈类风格的内容也是非常的受欢迎。先来看看以下一些案例 看看这几个账号内容的质量就可以看出该部分内容是很受欢迎的&#x…

Oracle 19C19.3 rac安装并RU升级到19.14

19C支持RU补丁安装。 下载好19.14的RU补丁 [rootrac1 soft]# ll total 9830404 -rw-r--r-- 1 grid oinstall 3059705302 Jun 18 15:26 LINUX.X64_193000_db_home.zip -rw-r--r-- 1 grid oinstall 2889184573 Jun 18 15:27 LINUX.X64_193000_grid_home.zip -rw-r--r-- 1 grid …

java设计模式(七)适配器模式(Adapter Pattern)

1、模式介绍: 适配器模式(Adapter Pattern)是一种结构型设计模式,它允许将一个类的接口转换成客户希望的另外一个接口。适配器模式通常用于需要复用现有的类,但是接口与客户端的要求不完全匹配的情况。它包括两种形式&…

通过CDS View读取HANA View

HANA View在HANA 数据库层,CDS View在​ABAP层。那我们可以用CDS view直接读取HANA View​。在CDS View里还可以加些​逻辑。 ​具体怎么做呢? 首先你有了一个HANA的calculation view。这个calculation view, 它是可以被HANA SQL访问的&#…

【新闻】技术工种魅力大增,美国Z世代职场新出路

美国需要更多水管工,Z世代正在响应这一号召。 长期受到劳动力短缺困扰的技工行业,如今对美国最年轻的就业群体产生新的吸引力,他们中许多人正选择放弃读大学。随着从焊接到机械加工等领域出现技术迭代,薪资正在上涨,这…

DV SSL证书如何升级到OV SSL 证书

随着互联网的发展和用户对数据安全性的关注,越来越多的网站开始采用SSL证书来保护用户的隐私和数据。在选择SSL证书时,有些网站可能会首先选择经济实惠的DV(域名验证)证书,但随着业务的发展和用户需求的增加&#xff0…