news 2026/7/10 1:24:03

【办公应用3】基于 Word 书签 + Excel 数据源批量生成文档工具

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【办公应用3】基于 Word 书签 + Excel 数据源批量生成文档工具

实战:基于 Word 书签 + Excel 数据源批量生成文档工具

若该文为原创文章,转载请注明原文出处
本文章博客地址:https://zcmxbwcx.blog.csdn.net/article/details/162740041

一、项目背景

在工作中,经常会遇到Excel表记录的信息需要批量输出为word文件材料。当涉及的行数和不同的Excel表较多时,手动逐份填写 Word 文档不仅效率低下,而且容易出错。

为了解决这个痛点,我开发了一款Word 文档批量生成工具,它能够根据 Excel 数据表 + Word 模板(书签),可以读取不同的Excel表格和不同的Word文档模板(已经插入书签);一键批量生成Word 文档,大幅提升工作效率,无需逐个设置word邮件。


二、功能概览

功能模块说明
📂文件设置选择 Excel 数据源、Word 模板、工作表、输出目录
🔗字段映射Word 书签名 ↔ Excel 列名 的灵活映射配置
💾配置管理保存/加载/导入/导出映射配置(JSON 格式)
📝文件命名自定义输出文件名模板,支持{列名}{行号}占位符,自定义文字
🚀批量生成异步逐行生成,进度条 + 日志实时反馈

软件界面预览


三、核心实现

4.1 Excel 数据读取

使用ClosedXML读取 Excel,支持多工作表、自动识别表头列名,每行数据转为Dictionary<列名, 值>供后续替换使用。

4.2 Word 书签替换

Word 书签替换是核心难点。使用DocumentFormat.OpenXml遍历文档中的BookmarkStart,定位到对应的BookmarkEnd,替换范围内的Text元素内容。

坑点提醒:Word 的书签结构在 OpenXml 中并不总是简单的BookmarkStart → Text → BookmarkEnd。有时书签和文本处于不同层级,甚至书签可能在Run内部与Text平级。上面代码中texts.Count == 0的分支就是为了处理这种情况:需要向上查找 Run,在 Run 的 Children 中定位书签之后的 Text 元素

五、配置文件管理

每次手动输入 Excel 列和 Word 书签的映射关系非常繁琐。我设计了配置文件的保存/加载/导出/导入功能:

  • 配置以JSON 格式存储在程序目录的Configs/文件夹
  • 支持导出到任意路径、从任意路径导入配置
  • 方便团队共享映射方案、多台电脑迁移

八、使用教程

Step 1:准备 Excel 数据文件

Excel 第一行为表头(列名),从第二行开始为数据。确保所有必要字段都有对应的列:

旧权利人姓名旧证件号码新权利人姓名新证件号码不动产权证号宗地代码
张三440281…张三三440281…粤(2023)…440281…
李四440281…李四四440281…粤(2023)…440281…

Step 2:准备 Word 模板

在 Word 文档中需要替换的位置插入书签(插入 → 书签),书签名与 Excel 列名对应即可(也可以不同,在工具中灵活映射)。

Step 3:打开工具,配置映射

  1. 选择 Excel 文件和 Word 模板
  2. 选择工作表 → 自动检测列
  3. 点击"检测 Word 书签" → 自动生成映射行
  4. 手动调整映射关系(如有需要)

Step 4:设置文件名规则

使用字段按钮快速插入占位符,如:

更正调查_{新权利人}_{宗地代码}

会自动生成:更正调查_张三三_440281004014JC00264.docx

Step 5:开始生成

点击"开始生成"按钮,工具将以异步方式逐行处理,进度条和日志区域实时反馈。


九、总结

这个项目虽然功能不算复杂,但涵盖了 .NET WPF 桌面应用开发的多个关键知识点:

技术点应用
OpenXml Word 书签替换精准定位和替换复杂文档结构中的内容
ClosedXML Excel 读取多工作表支持、表头自动识别
配置持久化JSON 序列化 + 导入导出
全局异常处理三级异常捕获 + 日志落盘

如果你也有类似的"Excel + Word 模板 → 批量生成文档"的需求,可以参考本文的思路来实现。
未来下一步希望能够做到word复杂表格的批量插入生成;以及翻页,如界址点成果表,家庭成员表,地块调查表等做到可以自定义配置。


如果本文对你有帮助,欢迎点赞、收藏、关注!有问题可以在评论区交流。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/10 1:23:47

江科大OLED驱动改造:为STM32桌宠添加6种动态表情的显示方案

江科大OLED驱动改造&#xff1a;为STM32桌宠添加6种动态表情的显示方案在嵌入式开发领域&#xff0c;人机交互的视觉表现往往决定了产品的用户体验。对于STM32开发者而言&#xff0c;江科大标准OLED驱动库因其简洁高效而广受欢迎。本文将深入探讨如何基于这一经典驱动库&#x…

作者头像 李华
网站建设 2026/7/10 1:23:36

PostgreSQL开了 Memoize 就万事大吉?我被它坑了四次

注&#xff1a;本文为安丫科技刘峰原创。 转载请注明出处&#xff0c;严禁抄袭。 ⚠️ 风险提示&#xff1a; 文中代码仅供测试环境学习。 生产环境复杂&#xff0c;严禁盲目套用&#xff0c;后果自负。 如遇紧急故障或需兜底支持&#xff0c;请联系安丫专家团队。 导****…

作者头像 李华
网站建设 2026/7/10 1:21:12

六十四卦编码方案:从二进制到 Unicode,不同的表达不同的代价

六十四卦编码方案&#xff1a;从二进制到 Unicode&#xff0c;不同的表达不同的代价 一、同一个卦象&#xff0c;四种编码方式占用的内存差 100 倍 在做一个传统文化数据项目时&#xff0c;遇到了一个最基本但却被忽略的问题&#xff1a;怎么在计算机中表示一个卦&#xff1f…

作者头像 李华
网站建设 2026/7/10 1:18:02

硬件 CRC 翻车实录:你以为的 CRC-32,其实是错的

一句话结论&#xff1a;MCU 硬件 CRC 外设算出来的"CRC-32"&#xff0c;几乎从来不等于标准 ZLIB/PKZIP 的 CRC-32。 把它当成标准 CRC 用&#xff0c;对端校验时必然翻车。一次真实的翻车现场 某个 OTA 升级项目&#xff0c;链路是这样的&#xff1a; PC 打包工具 (…

作者头像 李华