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

发布时间:2026/7/10 1:24: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打开工具配置映射选择 Excel 文件和 Word 模板选择工作表 → 自动检测列点击检测 Word 书签 → 自动生成映射行手动调整映射关系如有需要Step 4设置文件名规则使用字段按钮快速插入占位符如更正调查_{新权利人}_{宗地代码}会自动生成更正调查_张三三_440281004014JC00264.docxStep 5开始生成点击开始生成按钮工具将以异步方式逐行处理进度条和日志区域实时反馈。九、总结这个项目虽然功能不算复杂但涵盖了 .NET WPF 桌面应用开发的多个关键知识点技术点应用OpenXml Word 书签替换精准定位和替换复杂文档结构中的内容ClosedXML Excel 读取多工作表支持、表头自动识别配置持久化JSON 序列化 导入导出全局异常处理三级异常捕获 日志落盘如果你也有类似的Excel Word 模板 → 批量生成文档的需求可以参考本文的思路来实现。未来下一步希望能够做到word复杂表格的批量插入生成以及翻页如界址点成果表家庭成员表地块调查表等做到可以自定义配置。如果本文对你有帮助欢迎点赞、收藏、关注有问题可以在评论区交流。