📄 Word 操作库 · 深度分析

🔹 光庆封装 · 基于 NPOI 2.7.3 📅 2026-06-03 v1.4
.docx 读写 表格支持 段落/ Run 精细控制 查找替换 图片插入 页眉页脚
核心库NPOI 2.7.3
依赖Enums.NET · SharpZipLib · RecyclableMemoryStream
格式DOCX (OOXML)
命名空间godking.word
设计模式链式调用 · 类封装

godking.word 是一个面向 Aardio 环境的 DOCX 操作库, 在 NPOI 基础上封装了 文档、段落、运行块、表格、单元格 等层级,提供直观的链式 API。

✨ 设计哲学: 将复杂的 OOXML 操作转化为易用的对象模型,兼顾 性能、完整性与开发效率。 支持 创建/编辑/保存,并内置 查找替换、图片插入、页眉页脚、表格操作 等高频场景。
🧩 架构 · 类层次
// 核心类结构 (简化) class godking.word { document, filename — setPaperSize, setPageMargin — setHeader, setFooter — addParagraph, getParagraph, deleteParagraph, eachParagraph — addTable, getTable, deleteTable, eachTable — replace(文本替换) } class ClassParagraph { runs, alignment, spacing, indent, font ... } class ClassRun { text, font, color, bold, italic, underline, picture ... } class ClassTable { rows, cells, merge, insert, setCellText ... } class ClassRow { height, cells, merge ... } class ClassCell { paragraphs, text, addParagraph, clear ... }
核心功能与特性
📝 文档 & 页面

创建/打开 DOCX,设置 纸张大小页边距,支持 页眉/页脚 定制(对齐、字体、颜色、下划线)。

A4 默认自定义宽高页眉页脚
✍️ 段落 & Run

精细控制 段落对齐、行距、缩进、段前段后;Run 级别设置 字体、字号、颜色、粗体/斜体/下划线,并可插入 图片换行/分页

链式 addTextaddRun图片嵌入
📊 表格引擎

完整表格操作:添加行/列、合并单元格、设置行高、单元格内容独立设置,支持 按数组/字典填充 数据,并可批量替换文本。

动态行列单元格合并数据填充
🔍 查找与替换

文档级、段落级、表格单元格级 的 文本查找替换,支持正则风格(基于 string.replace)。v1.4 新增,覆盖全文(含表格)。

replace()全文档精准定位
🖼️ 多媒体支持

在 Run 中插入 JPEG 图片,自动缩放(按厘米),支持 文件路径 或 内存数据流,适合动态生成报告。

addPicture自适应宽高内存流
🧹 资源管理

close() 显式释放文档资源,避免内存泄漏;支持 保存 到指定路径,可重复写入。

IDisposable 风格FileStream
📌 版本迭代 · 演进脉络
版本日期核心更新
1.0初步封装,基础段落与 Run 操作
1.1功能扩展:页眉页脚、图片、分页
1.2集成 NPOI 依赖,脱离外部 NPOI 库(内置 .res)
1.3增加 表格操作 全套支持(行、列、单元格、合并)
1.42026-06-03增加 replace() 函数,支持文档/段落/表格全文替换
🌟 亮点与优势
📘 API 典型示例
// 创建/打开文档 var doc = godking.word("report.docx"); doc.setPaperSize(21, 29.7); // A4 doc.setPageMargin(2.54, 2.54, 3.17, 3.17); // 页眉 doc.setHeader(2, "年度报告", "微软雅黑", 14, 0x1A3A5A, true); // 添加段落 var p = doc.addParagraph(2, 1.5, 1, 0, 0, 0.5, "引言", "宋体", 12); p.addText("这是正文内容,", null, null, 0xCC0000, false, false, 1); p.addPicture("logo.png", 4, 3); // 表格操作 var tbl = doc.addTable(3, 3); tbl.setCellText(1, 1, "姓名"); tbl.setCellText(1, 2, "部门"); tbl.mergeCell(1, 1, 1, 2); // 合并第一行前两列 // 全文替换 doc.replace("2025", "2026"); // 保存 & 释放 doc.save("output.docx"); doc.close();
⚙️ 设计考量 & 性能
✅ 内存管理

使用 FileStreamMemoryStream,配合 close() 显式释放,避免大文档内存峰值。

✅ 异常安全

大部分函数对 null / 越界 有防御性检查,返回安全对象或直接返回,减少崩溃风险。

✅ 扩展性

基于 NPOI 原始对象,可随时向下转型获取底层 API,满足高级定制需求。

🎯 典型应用场景
📊 报表自动生成 📋 合同/标书制作 📈 数据导出(表格+图表) 🖨️ 批量文档处理 📝 富文本编辑器后端 🧾 证书/奖状打印
📌

综合评价

godking.word 是一个 成熟、功能完备 的 DOCX 操作封装库。它在 NPOI 的庞杂接口上构建了 人性化的 API 层,兼顾 效率与灵活性。v1.4 加入的 replace() 使其更适用于 模板替换场景。无论是快速生成报告,还是构建复杂的文档流水线,它都能提供清晰、可靠的解决方案。 代码风格统一,链式调用让脚本简洁易读,是 Aardio 生态中处理 Word 文档的优秀选择。

👍 易于上手 👍 功能覆盖全面 👍 持续迭代