发布时间:2026/7/17 16:02:40
批量读取并合并数据
我记录自动化办公踩坑实录帮客户把报表耗时从48小时压到2小时前不久接了个内部提效的活儿客户是一家做跨境电商的中大型公司财务和运营团队每个月底都要对着十几份Excel表手动核对数据、拼接报表。说实话他们之前全靠人工搬运光导数据加排版就得耗上两天一旦哪个单元格格式错了整张表就得重做。我接手的时候看着他们堆成山的原始文件心里直打鼓但既然答应了下来就只能硬着头皮上。这项目不算大主要是跑批和清洗但数据源杂乱模板还经常变稍微不留神就会翻车。方案选型与核心逻辑刚拿到需求的时候我第一反应是用openpyxl直接读写单元格毕竟它支持样式保留模板套用起来最省事。试了一圈发现这方案在处理五万行以上的数据时内存占用直接飙升电脑风扇转得跟直升机似的。当时有方案A和方案B我选了pandas负责数据清洗openpyxl只负责最后的样式填充因为pandas的底层是C语言写的向量化操作跑数快得多而openpyxl只要避开大数据量读取只做模板渲染就稳了。说实话代码写起来并不复杂。我把所有原始表格统一清洗成宽表然后按客户提供的固定模板进行字段映射。核心逻辑大概就是这样pythonimport pandas as pdfrom openpyxl import load_workbookimport os批量读取并合并数据dfs []for file in os.listdir(./raw_data):df pd.read_excel(f./raw_data/{file}, dtype{订单号: str})dfs.append(df)merged_df pd.concat(dfs, ignore_indexTrue)核心统计逻辑summary merged_df.groupby([平台, 店铺]).agg({销售额: sum,退款额: sum,订单量: count}).reset_index()填充模板wb load_workbook(template.xlsx)ws wb.activefor idx, row in summary.iterrows():target_row idx 2ws.cell(rowtarget_row, column2, valuerow[平台])ws.cell(rowtarget_row, column3, valuerow[店铺])ws.cell(rowtarget_row, column4, valuerow[销售额])ws.cell(rowtarget_row, column5, valuerow[退款额])ws.cell(rowtarget_row, column6, valuerow[订单量])wb.save(report_output.xlsx)当时我觉得直接套模板就行结果发现完全错了。我排查了半天发现是pd.concat在数据量大的时候会创建巨大的中间对象而且iterrows()逐行写入单元格在数据突破两万行后IO阻塞直接让进程假死。后来我改了思路不用一次性读入所有文件而是分批次写入一个临时数据库或者直接按条件过滤后再聚合内存瞬间就下来了。有意思的是客户给的模板里有很多合并单元格和下拉验证这部分只能用openpyxl去解析XML结构或者用iter_rows()逐个赋值虽然慢点但保住了格式不崩。我干脆写了个辅助函数把模板的冻结窗格和条件格式单独抽离出来跑完数据再批量应用总算把性能拉回了正常水平。踩坑与排雷记录坑死了的其实是日期格式和动态行数的问题。Excel里的日期是个玄学存进去是文本读出来可能是浮点数pandas默认又把它转成datetime对象。一开始我没注意直接往模板里塞数据结果单元格里全变成了2024-05-12 00:00:00客户一眼就看出不对劲。我试了一圈才发现必须在写入前强制转成字符串并且用strftime指定格式或者在openpyxl里设置单元格类型为date并绑定显示格式。还有个头疼的地方是报表需要按“平台”自动分页生成多个Sheet。客户原话是“每个平台一个独立工作表表头固定下面数据跟着走”。我当时觉得直接循环写入就行结果运行后发现后一个Sheet会把前面的覆盖掉。排查日志才发现wb.create_sheet()虽然能新建但我没正确处理单元格偏移量导致数据直接写到了第1行把表头全挤没了。后来我加了个偏移计数器每次写入新Sheet前重置索引才把数据对齐到正确的起始行。我还顺手把异常捕获做了加强万一某个平台的源文件缺列脚本不会直接崩盘而是记录错误日志继续跑下一个表这样财务那边就算遇到脏数据也不用半夜打电话叫我。说实话这种纯机械重复的活儿真正考验的不是算法多牛逼而是对边界条件的死磕。客户那边最后验收的时候看到两小时跑完以前两天的量直接给我发了个红包。我没收就说顺手的事儿。毕竟帮他们省下的时间够财务多睡会儿懒觉了。自动化这东西前期搭框架费脑后期维护反而省心。本文基于实际项目经验整理欢迎在评论区交流技术问题。

相关新闻

深入解析VTube Studio API:打造智能虚拟主播互动系统的核心技术
2026/7/17 16:02:40

深入解析VTube Studio API:打造智能虚拟主播互动系统的核心技术

深入解析VTube Studio API:打造智能虚拟主播互动系统的核心技术 【免费下载链接】VTubeStudio VTube Studio API Development Page 项目地址: https://gitcode.com/gh_mirrors/vt/VTubeStudio 开篇引入:当虚拟形象需要与观众实时互动时 想象一下…

阅读更多
终极指南:在Windows和Linux上使用Ryujinx模拟器畅玩Switch游戏
2026/7/17 16:02:40

终极指南:在Windows和Linux上使用Ryujinx模拟器畅玩Switch游戏

终极指南:在Windows和Linux上使用Ryujinx模拟器畅玩Switch游戏 【免费下载链接】Ryujinx 用 C# 编写的实验性 Nintendo Switch 模拟器 项目地址: https://gitcode.com/GitHub_Trending/ry/Ryujinx 想要在个人电脑上体验任天堂Switch游戏的魅力吗?…

阅读更多
实战指南:如何用MateCloud构建高效微服务架构的5大秘诀
2026/7/17 16:02:40

实战指南:如何用MateCloud构建高效微服务架构的5大秘诀

实战指南:如何用MateCloud构建高效微服务架构的5大秘诀 【免费下载链接】matecloud 🔥MateCloud是一款基于Spring Cloud Alibaba的微服务架构。目前已经整合Spring Boot 4.0.7、 SpringCloud 2025、Spring Cloud Alibaba 2025、Spring Security Oauth2、…

阅读更多
3分钟掌握QRemeshify:让Blender三角网格秒变规整四边形
2026/7/17 17:02:41

3分钟掌握QRemeshify:让Blender三角网格秒变规整四边形

3分钟掌握QRemeshify:让Blender三角网格秒变规整四边形 【免费下载链接】QRemeshify A Blender extension for an easy-to-use remesher that outputs good-quality quad topology 项目地址: https://gitcode.com/gh_mirrors/qr/QRemeshify 你是否曾为Blende…

阅读更多
从Google原版到MLX社区版:diffusiongemma-26B-A4B-it模型转换全解析
2026/7/17 17:02:41

从Google原版到MLX社区版:diffusiongemma-26B-A4B-it模型转换全解析

从Google原版到MLX社区版:diffusiongemma-26B-A4B-it模型转换全解析 【免费下载链接】diffusiongemma-26B-A4B-it-bf16 项目地址: https://ai.gitcode.com/hf_mirrors/mlx-community/diffusiongemma-26B-A4B-it-bf16 diffusiongemma-26B-A4B-it-bf16是由MLX…

阅读更多
CANN/asc-devkit圆柱贝塞尔函数
2026/7/17 17:02:40

CANN/asc-devkit圆柱贝塞尔函数

cyl_bessel_i1f 【免费下载链接】asc-devkit 本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言,原生支持C和C标准规范,主要由类库和语言扩展层构成,提供多层级API,满足多维场景算子开发诉求。 项目地址: https://gitcode…

阅读更多
Java 中 POJO、Entity、DTO、VO、Param 等对象区别是什么?
2026/7/17 17:02:40

Java 中 POJO、Entity、DTO、VO、Param 等对象区别是什么?

目录 一.概述 二. POJO的含义 三. entity(实体) 四. model(模型) 五. domain(域) 六. view(视图) 七. DTO(数据传输对象) 八. VO(真正视图层) 九. Param(参数) 十. 总结 一.概述 在日常开发的过程中,如果我们接手一个新的项目之后,通常会有各…

阅读更多
微信聊天记录批量导出完整指南:WeChatMsg命令行工具终极教程
2026/7/17 17:02:40

微信聊天记录批量导出完整指南:WeChatMsg命令行工具终极教程

微信聊天记录批量导出完整指南:WeChatMsg命令行工具终极教程 【免费下载链接】WeChatMsg 提取微信聊天记录,将其导出成HTML、Word、CSV文档永久保存,对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com/GitHub_Trending/we…

阅读更多
如何将现有Rust项目迁移到error-chain:7步完整迁移指南
2026/7/17 16:02:40

如何将现有Rust项目迁移到error-chain:7步完整迁移指南

如何将现有Rust项目迁移到error-chain:7步完整迁移指南 【免费下载链接】error-chain Error boilerplate for Rust 项目地址: https://gitcode.com/gh_mirrors/er/error-chain 想要为你的Rust项目提供一致且强大的错误处理体验吗?error-chain库正…

阅读更多
智慧树刷课插件:5分钟实现自动化学习的智能助手
2026/7/16 21:32:43

智慧树刷课插件:5分钟实现自动化学习的智能助手

智慧树刷课插件:5分钟实现自动化学习的智能助手 【免费下载链接】zhihuishu 智慧树刷课插件,自动播放下一集、1.5倍速度、无声 项目地址: https://gitcode.com/gh_mirrors/zh/zhihuishu 智慧树刷课插件是一款专为智慧树在线教育平台设计的Chrome浏…

阅读更多
Steam创意工坊下载器WorkshopDL:跨平台游戏模组获取的终极解决方案
2026/7/16 15:03:34

Steam创意工坊下载器WorkshopDL:跨平台游戏模组获取的终极解决方案

Steam创意工坊下载器WorkshopDL:跨平台游戏模组获取的终极解决方案 【免费下载链接】WorkshopDL WorkshopDL - The Best Steam Workshop Downloader 项目地址: https://gitcode.com/gh_mirrors/wo/WorkshopDL 你是否在GOG或Epic Games Store购买了心仪的游戏…

阅读更多
办公自动化实战:5个免费工具构建合同处理流水线
2026/7/16 22:47:50

办公自动化实战:5个免费工具构建合同处理流水线

1. 这不是“又一个工具包”,而是一套经过237次真实场景验证的效率组合拳“2026.04.28实用教程工具分享”这个标题乍看平平无奇,像极了你邮箱里被自动归入“促销/订阅”文件夹的那类通知——但如果你真把它当普通更新忽略,接下来半年里&#x…

阅读更多
2026全国外贸独立站搭建公司推荐排行,含零代码SAAS、AI编程、源码定制
2026/7/17 0:02:36

2026全国外贸独立站搭建公司推荐排行,含零代码SAAS、AI编程、源码定制

2026全国外贸独立站搭建公司推荐排行 外贸工厂、工贸企业建设官网,核心需求与普通展示型网站并不相同。除了页面整洁、多语言适配和海外访问体验,企业还要重点考虑数据能否导出、站点能否迁移、源码是否可控、后续费用是否透明,以及更换服务…

阅读更多
HarmonyOS 应用开发《掌上英语》第18篇:Grid 布局实战——从功能 5 宫格到练习 2×2 模式
2026/7/17 0:02:36

HarmonyOS 应用开发《掌上英语》第18篇:Grid 布局实战——从功能 5 宫格到练习 2×2 模式

Grid 布局实战——从功能 5 宫格到练习 22 模式引言 Grid 布局是 ArkTS 中最强大的布局容器之一,它通过行列模板系统实现灵活的多列多行布局。在本英语学习 App 中,Grid 布局贯穿了首页的多个核心模块:功能栏 5 宫格、练习模式 22 卡片、以及…

阅读更多
HarmonyOS 应用开发《掌上英语》第19篇:3D 翻转动画实现——ArkTS 动画系统全解析
2026/7/17 0:02:36

HarmonyOS 应用开发《掌上英语》第19篇:3D 翻转动画实现——ArkTS 动画系统全解析

3D 翻转动画实现——ArkTS 动画系统全解析引言 在移动应用中,卡片翻转动画是最受欢迎的交互动效之一,它能给用户带来直观的"物理世界"操作感。在我们的英语学习 App 的单词学习页面(CourseHomePage.ets)中,就…

阅读更多
基于Dify与DeepSeek构建私有知识库问答系统实战指南
2026/7/17 5:10:40

基于Dify与DeepSeek构建私有知识库问答系统实战指南

在业务中快速构建一个能理解私有文档、准确回答专业问题的智能助手,是很多开发团队面临的共同挑战。传统方案往往需要从零开始搭建复杂的 RAG(检索增强生成)系统,涉及文档解析、向量化、检索、大模型调用等多个环节,整…

阅读更多
FAE放射组学分析工具:医学影像特征探索的完整解决方案
2026/7/17 5:34:11

FAE放射组学分析工具:医学影像特征探索的完整解决方案

FAE放射组学分析工具:医学影像特征探索的完整解决方案 【免费下载链接】FAE FeAture Explorer 项目地址: https://gitcode.com/gh_mirrors/fae/FAE 你是否曾经面对海量医学影像数据感到无从下手?想要从CT、MRI等影像中提取有价值的定量特征&#…

阅读更多
DesktopNaotu:你的终极离线思维导图解决方案,告别网络依赖!
2026/7/17 7:48:38

DesktopNaotu:你的终极离线思维导图解决方案,告别网络依赖!

DesktopNaotu:你的终极离线思维导图解决方案,告别网络依赖! 【免费下载链接】DesktopNaotu 桌面版脑图 (百度脑图离线版,思维导图) 跨平台支持 Windows/Linux/Mac OS. (A cross-platform multilingual Mind Map Tool) 项目地址:…

阅读更多