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

作品介绍

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

开发环境: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.mfbz.cn/a/747601.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

玩机进阶教程----MTK芯片使用Maui META修复基带 改写参数详细教程步骤解析

目前mtk芯片与高通芯片在主流机型 上使用比较普遍。但有时候版本更新或者误檫除分区等等原因会导致手机基带和串码丢失的故障。mtk芯片区别与高通。在早期mtk芯片中可以使用工具SN_Writer_Tool读写参数。但一些新版本机型兼容性不太好。今天使用另外一款工具来演示mtk芯片改写参…

打破数据分析壁垒:SPSS复习必备(十)

Means过程 统计学上的定义和计算公式 定义:Means过程是SPSS计算各种基本描述统计量的过程,其实就是按照用户指定条件,对样本进行分组计算均数和标准差,如按性别计算各组的均数和标准差。 用户可以指定一个或多个变量作为分组变…

上古世纪台服注册账号+下载客户端全方位图文教程

又一款新的MMRPG游戏即将上线啦,游戏名称叫做《上古世纪》游戏采用传统MMO类型游戏的玩法,但是开发商采用了先进的游戏引擎,让玩家们可以享受到极致的视觉体验。同时游戏的背景是建立在大陆分崩离析的基础上。各个部落因为领地的原因纷纷开战…

【大数据】—量化交易实战案例双均线策略(移动平均线)

声明:股市有风险,投资需谨慎!本人没有系统学过金融知识,对股票有敬畏之心没有踏入其大门,今天用另外一种方法模拟炒股,后面的模拟的实战全部用同样的数据,最后比较哪种方法赚的钱多。 量化交易…

解决问题:浏览器中使用必应时提示“cn.bing.com将您的重定向的次数过多“

目录 一、问题分析二、关闭代理三、更新配置文件 一、问题分析 专业问题分析见其它博主的博文:重定向次数过多。 看了其它博文有一定启发,我自己尝试后发现两种解决办法。 二、关闭代理 我自己用的梯子是Clash,参考其他博主的分析&#x…

亚马逊运营专词(二)

1. A页面:亚马逊A页面即图文版商品详情页面,可以通过A页面使用不同的方式来描述商品特征,例如在页面中添加品牌故事、产品图片、产品文字介绍等,进一步完善页面。但目前A页面只对在亚马逊上注册了品牌的商家开放。 2. 跟卖&#x…

【PWN · TcachebinAttack | UAF】[2024CISCN · 华中赛区] note

一道简单的tcache劫持 一、题目 二、思路 存在UAF,libc版本2.31,经典菜单题 1.通过unsorted-bin-attack来leak-libc 2.通过uaf打tcache-bin-attack劫持__free_hook实现getshell 三、EXP from pwn import * context(archamd64,log_leveldebug)ioproce…

阿里提出MS-Diffusion:一键合成你喜爱的所有图像元素,个性化生成新思路!

文本到图像生成模型的最新进展极大地增强了从文本提示生成照片级逼真图像的能力,从而增加了人们对个性化文本到图像应用的兴趣,尤其是在多主题场景中。然而,这些进步受到两个主要挑战的阻碍: 需要根据文本描述准确维护每个参考主题…

ElasticSearch8.X查询DSL语法案例进阶实战

什么是Query DSL Query DSL主要由两部分组成:查询和过滤。 查询部分:用于指定搜索条件和匹配规则。例如,可以使用match查询进行全文检索,term查询进行精确匹配,range查询进行范围匹配等。过滤部分:用于对查…

怎么使用python进行整除取余求幂

怎么使用python进行整除取余求幂? 整除法是//,称为地板除,两个整数的除法仍然是整数。 10//33 3 求模运算是%,相当于mod,也就是计算除法的余数。 5%2 1 求幂运算使用两个连续的*,幂运算符比取反的优先级高…

一码多址与同义词解决方案

随着地址库中的数据不断的丰富,地址库中一码多址和同义词的数据也会越来越多,一码多址和同义词在统一地址管理平台中的概念并不相同。 一码多址指的是多个地址编码相同,例如通过民政地址找到编码,再通过编码找到房产地址描述。 本…

meizu M10 魅蓝 10 mblu10 root 解锁 安装LSPosed框架 紫光展锐改串 AT命令 一键新机 改机软件 硬改 改参数

meizu M10 魅蓝 10 mblu10 root 解锁 安装LSPosed框架 紫光展锐改串 AT命令 一键新机 改机软件 硬改 改参数 ro.system.build.version.release11 ro.system.build.version.release_or_codename11 ro.system.build.version.sdk30 ro.system.custom.versionAndroid_M01 ro.prod…

苹果Mac安装adobe软件报错“installer file may be damaged”解决方案

最近Mac电脑系统的有小伙伴在安装PS、AI、AE、PR等软件,出现了一个错误,让人头疼不已,苦苦找寻,也找不到完美的解决方法。让我们来一起看看吧! 很多小伙伴都喜欢苹果电脑,但是在安装外来软件时,…

AI Agent实战:智能检索在Kingbase数据库管理中的优势应用

前言 在信息技术飞速发展的今天,数据库管理已成为IT专业人员日常工作中不可或缺的一部分。然而,面对复杂的SQL问题,传统的web搜索往往难以提供精准的答案,尤其是在针对特定数据库系统,如金仓数据库时,这种…

eventbus和vuex

EventBus和Vuex EventBus 工作原理 创建一个vue实例,然后通过空的vue实例作为组件之间的桥梁,进行通信,利用到的设计模式有发布订阅模式 Vuex 工作原理 维护了一个state树,是独立的状态树,有明显的层级关系。不论…

数据资产与云计算深度融合:借助云计算技术,优化数据存储、高效处理并创新应用,驱动企业数字化转型

目录 一、引言 二、数据资产与云计算深度融合的必要性 1、数据资产的重要性 2、云计算技术的优势 三、云计算技术在数据资产管理中的应用 1、数据存储的优化 2、数据处理的高效性 3、数据应用的创新 四、云计算驱动企业数字化转型的实践案例 案例一:金融行…

YCSB基准测试

1、Redis: 下载成功后,加载数据,运行 启动redis: /usr/local/redis/bin/redis-server ./bin/ycsb load redis -P workloads/workloade -p redis.hostlocalhost -p redis.port6379 -p recordcount10000 -p operationcount10000 -threads 32 ./bin/y…

【数据库】Oracle安装报错(口令设置问题)

目录 一、问题场景: 二、问题描述 三、原因分析: 四、解决方案: 方法一: 方法二: 一、问题场景: Oracle安装 二、问题描述 Oracle安装意外中断导致【口令管理】用户没有取消勾选/修改密码 三、原因…

【React】ref

概述 使用 ref 引用值 – React 中文文档 希望组件“记住”某些信息,但又不想让这些信息更新时 触发新的渲染 时,可以使用 ref 。 也就是说 ref 对象 包裹的值 React 追踪不到的,他像是用来存储组件信息的秘密“口袋”。 与 state 相同的是…

web前端——javaScript

目录 一、javaScript概述 1.javaScript历史 2.JavaScript与html,css关系 二、基本语法 ①放在head中 ②放在 body中 ③写在外部的.js文件中 1.变量 2.数据类型 3.算术运算符 4.逻辑运算符 5.赋值运算 6.逻辑运算符 7.条件运算符 8.控制语句 三、函数 1…