展开菜单
首页 精品内容 本月促销 装机必备 Windows PDF教程 macOS软件 IOS软件 Android AI 专题
全部分类

当前位置:

首页 > 编程开发 > Python批量实现更改Excel中多个工作簿的数据格式

Python批量实现更改Excel中多个工作簿的数据格式

Python批量处理多个Excel工作簿,自动统一日期、金额、百分比等数据格式,通过xlwings动态识别数据末行并设置number_format,实现报表格式标准化,显著减少人工校对成本,提升数据处理效率。

本文目录

    1. 问题背景:为什么要批量更改多个工作簿的数据格式

    先说说本文要解决的问题:批量更改多个工作簿的数据格式。这类需求在真实办公场景里太常见了——多个部门、多个区域、多个项目分别提交 Excel 报表时,数据内容通常是对的,但显示格式五花八门。

    举个例子:日期列里有的显示为 2026/1/1,有的显示为 2026-01-01,还有的显示为 1 Jan 2026;金额列里有的没有千分位,有的保留一位小数,有的带货币符号;百分比列里有的显示为 0.1234,有的显示为 12.34%。单看一个文件问题不大,但几十个工作簿堆在一起,后续汇总、审核和展示都会变得非常头疼。

    合理的做法是:把这种“格式规则明确、文件数量多、人工统一成本高”的工作交给 Python 批量处理。人负责定好格式标准,脚本负责逐个打开工作簿、定位数据区域、设置显示格式、保存结果。

    Python批量实现更改Excel中多个工作簿的数据格式

    上图展示了本文的整体目标:用 Python + Excel 自动化,将多个工作簿中的日期、金额、百分比等数据格式一次性统一。

    2. 应用场景:哪些格式问题适合用 Python 批量处理

    这个案例主要处理三类典型问题:日期格式统一、金额格式统一、百分比格式统一。只要这些列的位置相对固定,或者能通过表头定位,就可以用脚本批量设置显示格式。

    在公司报表里,数据格式不统一通常不是因为员工不会填,而是来源系统不同、复制粘贴习惯不同、Excel 自动识别规则不同。最终结果就是:表面上都是“日期”“金额”“百分比”,实际展示出来却很混乱。

    需要先明确一个边界:number_format 主要控制的是 Excel 的显示格式,它不等于数据清洗。也就是说,如果一个单元格本质上是文本,单纯设置 number_format 不一定能把它变成真正的日期或数字。

    Python批量实现更改Excel中多个工作簿的数据格式

    上图展示了批量统一数据格式的典型场景。比如把 2026/1/1 统一显示为 2026-01-01,把 1234567 统一显示为 1,234,567.00,把 0.1234 统一显示为 12.34%。这些处理能明显提升报表规范性,同时减少人工校对成本。

    3. 核心原理:动态找末行,再设置 number_format

    这一节的核心不是“给某个单元格设置格式”,而是对多个工作簿中的指定数据区域批量设置格式。所以代码要解决两个关键问题:第一,怎么找到每个文件的数据区域;第二,怎么给不同列设置不同的显示格式。

    核心思路可以拆成四步:先遍历目标文件夹,找到所有需要处理的 Excel 文件;再打开每个工作簿并定位目标工作表;然后通过 current_region.last_cell.row 动态获取数据末行;最后对日期列、金额列、百分比列分别设置 number_format 并保存。

    Python批量实现更改Excel中多个工作簿的数据格式

    从流程上看,最关键的一步是动态获取末行。如果把范围写死为 A2:A10000,短表会处理多余空白,长表又可能漏数据。用动态末行可以让脚本适应不同工作簿的数据量。

    4. 实现代码:批量更改日期、金额、百分比格式

    下面这份代码假设第 1 行是表头,A 列是日期,B 列是金额,C 列是百分比。脚本会从目标文件夹中遍历所有 Excel 文件,并批量设置这三列的数据格式。

    import os
    import xlwings as xw
    
    # ====== 需要根据实际情况修改的参数 ======
    folder_path = r"e:filetarget"   # 多个 Excel 文件所在文件夹
    sheet_name = "Sheet1"             # 需要处理的工作表名称
    # ======================================
    
    app = xw.App(visible=False, add_book=False)
    
    try:
        for file in os.listdir(folder_path):
    
            # 跳过 Excel 临时文件
            if file.startswith("~$"):
                continue
    
            # 只处理 Excel 文件
            if not file.lower().endswith((".xlsx", ".xls", ".xlsm")):
                continue
    
            full_path = os.path.join(folder_path, file)
            wb = None
    
            try:
                wb = app.books.open(full_path)
    
                # 如果目标工作表不存在,则跳过当前文件
                sheet_names = [s.name for s in wb.sheets]
                if sheet_name not in sheet_names:
                    print(f"跳过:{file},不存在工作表:{sheet_name}")
                    continue
    
                sht = wb.sheets[sheet_name]
    
                # 动态获取末行:以 A1 为起点识别连续数据区域
                last_row = sht.range("A1").current_region.last_cell.row
    
                # 如果只有表头,没有数据,则跳过
                if last_row < 2:
                    print(f"跳过:{file},没有有效数据")
                    continue
    
                # 构造动态区域
                rng_date = sht.range(f"A2:A{last_row}")
                rng_amount = sht.range(f"B2:B{last_row}")
                rng_rate = sht.range(f"C2:C{last_row}")
    
                # 设置显示格式
                rng_date.number_format = "yyyy-mm-dd"
                rng_amount.number_format = "#,##0.00"
                rng_rate.number_format = "0.00%"
    
                wb.sa ve()
                print(f"已更改数据格式:{file},末行:{last_row}")
    
            finally:
                if wb is not None:
                    wb.close()
    
    finally:
        app.quit()
    

    这份脚本比最简版本多了几个保护动作:跳过 ~$ 临时文件、判断工作表是否存在、判断是否有有效数据、用 try/finally 确保工作簿关闭。这些细节看起来不显眼,但对批量处理至关重要。

    如果是正式处理业务文件,建议先复制一份测试目录,再运行脚本。格式类操作虽然一般不会删除数据,但一旦批量改错,返工也很麻烦。

    5. 关键代码逻辑:current_region、last_row 与 number_format

    这段代码最核心的不是 for 循环,而是下面这句:

    last_row = sht.range("A1").current_region.last_cell.row
    

    它的含义是:从 A1 出发,识别当前连续数据区域,然后取这个区域最后一个单元格所在的行号。这样就能得到当前工作表的实际数据末行。

    有了 last_row 之后,就能动态构造区域:

    rng_date = sht.range(f"A2:A{last_row}")
    rng_amount = sht.range(f"B2:B{last_row}")
    rng_rate = sht.range(f"C2:C{last_row}")
    

    最后再分别设置显示格式:

    rng_date.number_format = "yyyy-mm-dd"
    rng_amount.number_format = "#,##0.00"
    rng_rate.number_format = "0.00%"
    

    Python批量实现更改Excel中多个工作簿的数据格式

    从图中可以看出,number_format 的价值在于统一显示规则。日期列显示为 yyyy-mm-dd,金额列显示为 #,##0.00,百分比列显示为 0.00%。但必须记住:number_format 不是万能的数据转换工具,它主要控制显示格式,不负责把文本彻底清洗成真实日期或真实数字。

    6. 操作步骤:先小范围验证,再批量执行

    这类脚本不要一上来就直接跑正式目录。更稳妥的做法是先准备 2 到 3 个测试工作簿,确认格式效果正确,再扩大到完整文件夹。

    第一步,确认目标文件夹。把需要处理的 Excel 文件放在同一个目录中,避免混入无关文件。对于 Excel 自动生成的临时文件,脚本中已经用 file.startswith("~$") 跳过。

    第二步,确认目标工作表名称。示例代码里使用的是 Sheet1,实际工作中可能是 销售明细、数据表、报表。名称不一致时,脚本会跳过该文件。

    第三步,确认列规则。示例中默认 A 列是日期、B 列是金额、C 列是百分比。如果你的表结构不同,必须修改对应列区域,不能机械照抄。

    第四步,小范围运行并检查结果。重点看日期、金额、百分比是否显示正确,是否存在文本无法格式化的问题。

    我的建议是:批量处理前先打印文件名和末行,确认脚本识别的目标范围是否符合预期。

    print(f"当前文件:{file}")
    print(f"识别到的数据末行:{last_row}")
    

    日志越清楚,排错越省时间。尤其是处理多个工作簿时,一旦某个文件结构异常,日志可以快速告诉你问题发生在哪一个文件。

    7. 知识延伸:批量设置外观格式

    数据格式统一只是第一步。很多公司报表还要求表头加粗、居中、底色统一、正文自动换行、边框规范。对于这类外观格式,xlwings 也可以通过 .api 调用 Excel 的底层属性。

    # 假设已经获取 sht 和 last_row
    
    # 1. 设置表头格式
    header_rng = sht.range("A1:C1")
    header_rng.api.Font.Bold = True
    header_rng.api.HorizontalAlignment = -4108   # 居中
    header_rng.api.VerticalAlignment = -4108     # 垂直居中
    header_rng.color = (217, 217, 217)           # 浅灰色底色
    
    # 2. 设置正文格式
    body_rng = sht.range(f"A2:C{last_row}")
    body_rng.api.Font.Name = "微软雅黑"
    body_rng.api.Font.Size = 10
    body_rng.api.HorizontalAlignment = -4131     # 左对齐
    body_rng.api.WrapText = True                 # 自动换行
    
    # 3. 设置边框
    body_rng.api.Borders.Weight = 2
    

    .api 的作用可以理解为:直接调用 Excel COM 对象的能力。它比普通属性更底层,也更接近 Excel 原生功能,适合处理字体、边框、对齐、颜色这类外观细节。

    但要注意:外观格式越复杂,脚本越容易和不同电脑上的 Excel 环境、字体环境、区域设置产生差异。正式批量处理前,最好先在几台典型电脑上验证效果。

    8. 常见问题:批量改格式前后必须检查

    批量改格式最容易让人误判。很多时候脚本没有报错,但结果并不一定符合预期。尤其是 current_region、文本日期、文本数字这些问题,如果不提前理解,后面会踩坑。

    Python批量实现更改Excel中多个工作簿的数据格式

    从图中可以看出,~$ 开头的 Excel 临时文件要跳过;如果数据区域中间有整行空行,current_region 可能提前结束;如果日期和数字本质上是文本,单纯设置 number_format 可能只改变显示规则,不能完成真实数据类型转换。

    最危险的误区是:看到单元格“长得像日期”或者“长得像数字”,就以为它已经是真实日期或真实数字。Excel 里显示像,不代表类型对。后续如果要参与公式计算或汇总统计,就必须进一步确认数据类型。

    如果怀疑某一列是文本数字,可以先通过 Excel 现象判断:单元格左上角是否有绿色提示,求和结果是否异常,排序是否按文本顺序排列。也可以在脚本里加入更严格的数据清洗逻辑,但那已经超出单纯 number_format 的范围。

    9. 效果验证:用脚本检查格式是否生效

    批量处理之后,建议至少抽查几个文件。更稳一点的做法,是写一个验证脚本,把目标区域的 number_format 打印出来,确认格式是否真的写入。

    import os
    import xlwings as xw
    
    folder_path = r"e:filetarget"
    sheet_name = "Sheet1"
    
    app = xw.App(visible=False, add_book=False)
    
    try:
        for file in os.listdir(folder_path):
    
            if file.startswith("~$"):
                continue
    
            if not file.lower().endswith((".xlsx", ".xls", ".xlsm")):
                continue
    
            full_path = os.path.join(folder_path, file)
            wb = None
    
            try:
                wb = app.books.open(full_path)
    
                if sheet_name not in [s.name for s in wb.sheets]:
                    print(f"跳过:{file},不存在工作表:{sheet_name}")
                    continue
    
                sht = wb.sheets[sheet_name]
    
                print(f"文件:{file}")
                print("A2 日期格式:", sht.range("A2").number_format)
                print("B2 金额格式:", sht.range("B2").number_format)
                print("C2 百分比格式:", sht.range("C2").number_format)
                print("-" * 40)
    
            finally:
                if wb is not None:
                    wb.close()
    
    finally:
        app.quit()
    

    这个验证脚本不修改文件,只读取格式结果。对于批量处理任务来说,验证脚本和处理脚本一样重要。只会批量执行,不会验证结果,自动化就还不够可靠。

    10. 总结提升:格式统一背后是报表标准化能力

    这一节表面上是在学习 number_format,实际是在训练一种很重要的办公自动化能力:批量统一多个工作簿的报表标准。这类能力在真实办公里很有用,因为很多报表问题不是数据本身错,而是格式混乱导致阅读、汇总和审核成本变高。

    这一节需要重点掌握四个点:用 os.listdir() 遍历文件夹;用 current_region.last_cell.row 动态获取末行;用 number_format 设置日期、金额、百分比显示格式;最后通过验证脚本检查格式是否真正生效。

    不要把“格式统一”看成简单美化。在正式报表里,格式规范就是数据质量的一部分。日期格式不统一、金额显示不规范、百分比小数位混乱,都会影响别人对报表专业度的判断。

    用一句话总结:Python 做 Excel 自动化,不只是为了少点几下鼠标,更重要的是把报表处理规则固化下来。只要规则稳定,脚本就能重复执行;只要脚本可验证,这套流程就能沉淀成真正可复用的办公工具。

    本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系bd@zhengruan.com
    作者最新文章
    编程开发 Python
    相关文章 更多
    精品专题 更多
    装机必备

    正软商城装机必备专区,精选办公、浏览器、安全防护、影音播放、压缩解压、设计创作和系统工具等电脑常用正版软件,帮助用户快速完成新电脑软件配置。

    Windows

    正软商城Windows软件专区,汇集适用于Windows电脑的办公、设计、安全防护、影音播放、开发工具和系统优化软件,提供软件介绍、系统要求、正版授权及购买下载服务。

    PDF教程

    正软商城PDF教程频道提供PDF编辑、转换、合并、拆分、压缩及格式处理方法,同时介绍常用PDF软件和工具的使用技巧。

    macOS软件

    正软商城macOS软件专区,精选适用于Mac电脑的办公、设计、影音、效率、开发和系统工具,提供软件功能介绍、macOS兼容版本、正版授权及购买下载服务。

    IOS软件

    正软商城iOS软件专区,精选适用于iPhone和iPad的办公、学习、影音、设计、效率及AI应用,提供功能介绍、适用设备、系统要求和正版获取方式等信息。

    AI

    正软商城AI软件专区,汇集AI写作、AI绘画、AI视频、AI办公、AI编程、AI翻译、智能客服和数据分析等人工智能工具,提供功能介绍、适用平台、收费方式及正版购买信息。

    Mac软件 更多
    Postman macOS版
    Postman macOS版

    Postman是一套面向API全生命周期的开发与测试平台,可在Mac上发送和调试多种协议请求,管理集合、环境及认证信息,并完成脚本测试、模拟服务、监控、文档发布和团队协作。它适合开发、测试及运维人员使用,提供个人免费方案。

    Docker Desktop macOS版
    Docker Desktop macOS版

    Docker Desktop 是 Docker 官方为 Mac 提供的容器开发环境,集成 Docker Engine、命令行工具、Compose、Build、Kubernetes 与图形化管理界面。

    Android Studio macOS版
    Android Studio macOS版

    Android Studio 是 Google 面向安卓应用开发提供的官方集成开发环境,基于 IntelliJ IDEA 构建。它整合智能代码编辑、Gradle 构建、界面预览、设备模拟、性能分析、调试测试及 APK 分析等工具。

    Xcode macOS版
    Xcode macOS版

    Xcode 是苹果面向 Mac 提供的官方集成开发环境,将代码编辑、项目构建、SwiftUI 实时预览、设备模拟、自动化测试、断点调试、性能分析和应用分发整合在同一套工作流中,适合开发与维护 iPhone、iPad、Mac、Apple Wa

    JetBrains WebStorm macOS版
    JetBrains WebStorm macOS版

    JetBrains WebStorm 是面向 JavaScript、TypeScript 和现代 Web 技术的专业集成开发环境,可智能理解项目结构,提供代码补全、重构、错误检查、运行调试、测试及 Git 工具。

    PhpStorm macOS版
    PhpStorm macOS版

    PhpStorm 是 JetBrains 推出的专业 PHP 集成开发环境,可在 Mac 上完成代码编写、智能检查、重构、调试、测试和数据库管理。它支持主流 PHP 框架、Composer、Git、Docker 与远程解释器。

    JetBrains PyCharm macOS版
    JetBrains PyCharm macOS版

    JetBrains PyCharm 是面向 Python 开发者的集成开发环境,提供智能补全、代码检查、重构、调试、测试、版本控制及虚拟环境管理功能。Mac 版兼容 Intel 与 Apple 芯片,核心功能可免费使用。

    JetBrains IntelliJ IDEA macOS版
    JetBrains IntelliJ IDEA macOS版

    IntelliJ IDEA 是 JetBrains 推出的专业集成开发环境,重点服务于 Java、Kotlin 与 JVM 项目开发。软件集成代码补全、静态检查、重构、调试、测试、版本控制及构建工具,并可借助插件扩展语言和框架支持。

    Visual Studio Code macOS版
    Visual Studio Code macOS版

    Visual Studio Code 是微软提供的免费代码编辑器,支持 macOS,并为 Intel 与 Apple 芯片 Mac 提供适配版本。软件集代码编辑、调试、Git 源代码管理、集成终端和扩展市场于一体。

    REAPER macOS版
    REAPER macOS版

    REAPER是Cockos开发的数字音频工作站,提供多轨音频与MIDI录制、剪辑、处理、混音和母带制作工具。Mac版兼容Intel与Apple芯片,支持AU、VST、VST3、CLAP等插件格式,并提供高度可定制的工作流程。

    Adobe Audition macOS版
    Adobe Audition macOS版

    Adobe Audition 是面向播客、影视后期、音乐制作及内容创作者的专业音频工作站,提供波形精修、多轨录制与混音、频谱编辑、降噪修复、响度匹配和效果处理工具,并可与 Adobe Premiere 协同完成视频声音制作。

    Pro Tools macOS版
    Pro Tools macOS版

    Pro Tools 是 Avid 推出的专业数字音频工作站,覆盖多轨录音、无损剪辑、MIDI 编曲、插件处理、自动化混音及声音与画面同步等工作。它拥有 Intro、Artist、Studio 和 Ultimate 等方案。

    WINDOWS 更多
    PixPix 网页版
    PixPix 网页版

    PixPix 是面向品牌、卖家和内容团队的在线 AI 图片视频创作平台,提供图视频 Agent、无限画布、图片生成、视频生成、自然语言编辑及商品套图、产品精修和带货视频等电商工具。

    Postman Windows版
    Postman Windows版

    Postman 是面向 API 全生命周期的开发与协作平台。Windows 桌面版可用于构建和发送 HTTP、GraphQL、gRPC、WebSocket、MQTT 等请求,并提供环境变量、集合、脚本测试、模拟服务、监控、文档及团队工作区等

    Docker Desktop Windows版
    Docker Desktop Windows版

    Docker Desktop 为 Windows 开发者提供集成式容器环境,内置 Docker Engine、命令行工具、Compose、Build 与 Kubernetes 等组件,可在本机完成镜像构建、容器运行、日志查看和资源管理。

    Android Studio Windows版
    Android Studio Windows版

    Android Studio 是 Google 面向 Android 应用开发提供的官方集成开发环境,以 IntelliJ IDEA 为基础,集成智能代码编辑、Gradle 构建、设备模拟、界面预览、调试测试及性能分析工具,

    JetBrains WebStorm Windows版
    JetBrains WebStorm Windows版

    WebStorm 是 JetBrains 面向 JavaScript、TypeScript 和现代 Web 技术打造的集成开发环境。它提供项目级代码分析、智能补全、安全重构、导航搜索,并集成调试、测试、终端、Git 与常用前端工具,

    JetBrains PhpStorm Windows版
    JetBrains PhpStorm Windows版

    PhpStorm 是 JetBrains 面向 PHP 与现代 Web 开发打造的专业集成开发环境,提供代码补全、静态检查、重构、调试、测试、数据库、版本控制及前端语言支持。Windows 用户可直接下载安装程序,

    JetBrains PyCharm Windows版
    JetBrains PyCharm Windows版

    PyCharm 是 JetBrains 推出的 Python 集成开发环境,提供智能代码补全、错误检查、重构、调试、测试、Git、终端及 Jupyter Notebook 支持。统一版安装后可体验 30 天 Pro 功能,

    JetBrains IntelliJ IDEA Windows版
    JetBrains IntelliJ IDEA Windows版

    JetBrains IntelliJ IDEA 是以 Java、Kotlin 和 JVM 项目为核心的专业集成开发环境,提供智能补全、代码检查、安全重构、调试、测试、版本控制及构建工具集成。统一发行版的核心功能可免费用于商业和非商业项目,

    Visual Studio Code Windows版
    Visual Studio Code Windows版

    Visual Studio Code 是微软推出的免费代码编辑器,Windows 版集成智能补全、代码导航、调试、终端和版本控制,并可通过扩展添加语言、格式化及远程开发能力。它启动较快、配置灵活,

    REAPER Windows版
    REAPER Windows版

    REAPER 是 Cockos 推出的数字音频工作站,适用于录音、MIDI 编曲、音频编辑、混音、母带制作及声音设计。软件安装包小巧,支持多轨录制、灵活路由、自动化、第三方插件和脚本扩展,并提供完整功能的 60 天免费评估期。

    Adobe Audition Windows版
    Adobe Audition Windows版

    Adobe Audition 是面向播客、影视后期、广播与音乐制作的专业音频工作站,提供波形编辑、多轨混音、频谱分析、录音、降噪修复和效果处理等功能。Windows 版通过 Adobe Creative Cloud 安装和管理,

    Pro Tools Windows版
    Pro Tools Windows版

    Pro Tools 是 Avid 推出的专业数字音频工作站,提供多轨录音、音频剪辑、MIDI编曲、插件处理、自动化混音及影视声音制作能力。它适合音乐人、录音师、制作人和音频后期团队使用,并提供免费入门版、订阅方案及永久授权选择。