当前位置: 首页 > news >正文

[特殊字符] Python 实战 | 从 Excel 提取数据 → 生成美观 Word 收货记录表格(含合并单元格 + 总计功能)

本教程通过 Python 实现“Excel 数据提取 → Word 写入 → Word 表格合并单元格 + 数量自动汇总”的全流程自动化,是办公中常见的表格处理场景。适合采购、仓储、报表自动化需求,一键生成规范美观的收货报告。


① 📥 从 Excel 中提取数据

使用 openpyxl 模块,读取 Excel 表格中第二行起的数据,包含:序号、供应商、物料编码、型号、描述、数量、日期。

from openpyxl import load_workbookwb = load_workbook("收货数据.xlsx")
ws = wb.active
data = []for row in range(2, ws.max_row + 1):seq, supplier, material_pn, material_model, desp, qty = [ws[f"{col}{row}"].value for col in ["A","B","C","D","E","F"]]date = ws[f"G{row}"].value.date()data.append([seq, supplier, material_pn, material_model, desp, qty, date])
  • value.date() 用于格式化 datetime 对象;

  • 最终 data 是一个嵌套列表,方便后续处理。


② 🔢 数量汇总函数

定义 Sum_list() 函数用于累加数量列数据,方便后续写入 Word 总计行:

def Sum_list(lst):s = 0for num in lst:s += numreturn sqty_list = [item[5] for item in data]
sum_qty = Sum_list(qty_list)

③ 🔗 合并 Word 表格中连续相同单元格

使用 python-docx,定义一个通用函数 Merge_cells(),用于合并表格中某列的连续相同内容(如供应商或物料编码)。

def Merge_cells(table, target_list, start_row, col):start = end = 0reference = target_list[0]for i in range(len(target_list)):if target_list[i] != reference or i == len(target_list) - 1:end = i - 1 if target_list[i] != reference else itable.cell(start + start_row, col).merge(table.cell(end + start_row, col))reference = target_list[i]start = end + 1
  • start_row 为数据起始行索引;

  • col 为目标列索引(0 起始);

  • 使用 Cell.merge() 合并单元格。


④ 📝 生成 Word 收货记录表格(从 Excel 数据写入)

将数据写入 Word 模板表格中,逐行填充,并自动合并列及添加数量总计行:

from docx import Documentdoc = Document("收货记录模板.docx")
table = doc.tables[0]supplier = [item[1] for item in data]
pn = [item[2] for item in data]# 增加新行以容纳所有记录
for _ in supplier:table.add_row()Merge_cells(table, supplier, start_row=1, col=1)
Merge_cells(table, pn, start_row=1, col=2)# 填写数据信息
for idx, row_idx in enumerate(range(1, len(supplier) + 1)):for col_idx in range(len(data[0])):table.cell(row_idx, col_idx).text = str(data[idx][col_idx])# 添加“总数”合并单元格并写入汇总
max_row = len(table.rows)
qty_row = max_row - 1
table.cell(qty_row, 4).text = '总数:'
table.cell(qty_row, 5).text = str(sum_qty)doc.save("收货记录.docx")

📸 结果展示区

 


✅ 总结与提示

  更多实用案例,代码,素材如下:

自取链接:https://pan.quark.cn/s/a46f30accea2

  • 自动化流程有效减轻手动操作:Excel 提取 + Word 写入 + 单元格合并 + 总计都可一键完成;

  • 支持任意列合并、高度复用,可用于各种表格自动生成场景(如报销单、发票汇总、项目记录);

  • 可扩展功能示例:

    • 样式统一:代码自动设置字体大小、粗细;

    • 动态模板识别:根据关键字识别目标表格;

    • 拆分:添加跨文档或跨列拆分功能。

如果你觉得这篇内容实用,欢迎点赞、收藏、评论!也可以告诉我你希望的扩展方向或下一个办公自动化案例,我可以继续帮你做成系列教程 🔧

http://www.lqws.cn/news/576163.html

相关文章:

  • 力扣面试150(7/150)
  • 【MySQL】JDBC编程
  • 什么是集装箱残损识别系统?它如何提升港口效率?
  • 【AI时代速通QT】第四节:Windows下Qt Creator调试指南
  • nifi1.28.1集群部署详细记录
  • 【51单片机用数码管显示流水灯的种类是按钮控制数码管加一和流水灯】2022-6-14
  • JavaEE初阶第五期:解锁多线程,从 “单车道” 到 “高速公路” 的编程升级(三)
  • vue-32(部署一个 Nuxt.js 应用程序)
  • 多线程环境下的线程安全资源与缓存池设计:ThreadSafeObject 与 CachePool 实例解析
  • 类图+案例+代码详解:软件设计模式----简单工厂方法、工厂方法、抽象工厂方法
  • 腾讯云实名资质 “待补充后提交” 解决方法
  • 蓝桥杯51单片机设计
  • 青少年编程与数学 02-022 专业应用软件简介 04 矢量图形设计软件:CorelDRAW
  • 华为云Flexus+DeepSeek征文 | Word办公软件接入华为云ModelArts Studio大模型,实现AI智能办公
  • 【Unity】MiniGame编辑器小游戏(七)贪吃蛇【Snake】
  • Rust C++ OpenCV kafka-rs实践
  • 【Wireshark】高级过滤技巧精讲
  • 【c/c++3】类和对象,vector容器,类继承和多态,systemd,stdboost
  • 【c/c++1】数据类型/指针/结构体,static/extern/makefile/文件
  • 利用deepseek学术搜索
  • HTTP中常见的Content-Type
  • [Android]ANR的线程
  • Redis Cluster Gossip 协议
  • C++高效结合主流工具:现代系统底层动力
  • 机电一体化论文写作实战指南:从创新设计到工程验证的完整路径
  • 面试复盘6.0
  • mybatis-plus从入门到入土(一):快速开始
  • Windows安装虚拟机、ROS2
  • 实战四:基于PyTorch实现猫狗分类的web应用【2/3】
  • springboot校园新闻网站