跳到主要内容
版本:3.0.0

OpenXml 文档编辑(Aegis.Documents.Editing.OpenXml)

Aegis.Documents.Editing.OpenXml 负责编辑 Word 文档本身。它更适合做模板填充、表格增删和批量编辑,而不是直接生成 PDF。

组件概览

字段说明
组件名称OpenXml 文档编辑
真实类库Aegis.Documents.Editing.OpenXml
组件定位Word 文档内容编辑与模板填充
默认接入方式通过 文档处理(Aegis.Documents) 一起装配
主要接口IWordDocumentEditor
主要用途占位符填充、表格行增删、批量编辑
常见配套LibreOffice 文档转换

什么时候重点看这页

适合场景:

  • 你要先填充 Word 模板,再让用户下载 .docx
  • 你要按业务数据增删 Word 表格行
  • 你要先编辑 Word,再继续转 PDF

最小使用示例

填充占位符模板

public async Task<byte[]> BuildVisitSummaryAsync(
Stream templateStream,
IWordDocumentEditor editor)
{
return await editor.FillTemplateAsync(templateStream, new Dictionary<string, string>
{
["PatientName"] = "张三",
["VisitNo"] = "ZY20260318001",
["DoctorName"] = "李医生"
});
}

往表格里追加一行

var newDocumentBytes = await _editor.AddTableRowAsync(
documentStream,
tableIndex: 0,
cellValues: new[] { "药品A", "2", "20.00" });

删除表格中的某一行

var newDocumentBytes = await _editor.DeleteTableRowAsync(
documentStream,
tableIndex: 0,
rowIndex: 3);

最常见的组合用法

OpenXml 最常见的实际链路不是单独使用,而是:

  1. 先用 IWordDocumentEditor 生成或修改 .docx
  2. 再用 IWordToPdfConverter 转成 PDF
var wordBytes = await _wordDocumentEditor.FillTemplateAsync(templateStream, placeholders);

await using var wordStream = new MemoryStream(wordBytes);
var pdfBytes = await _wordToPdfConverter.ConvertAsync(wordStream, DocFormat.Docx);

接入后怎么确认生效

通常用下面几项验收:

  • IWordDocumentEditor 可以正常注入
  • 占位符文本能被正确替换
  • 表格行增删后,生成的 .docx 可以被 Word 正常打开
  • 接着转 PDF 时,编辑后的内容仍然存在

常见问题

占位符没有被替换

先检查两点:

  • 占位符字典里的键是否和模板里一致
  • 传入的是否是实际模板流,而不是已经被读空的流

这页是否等同于“Word 转 PDF”

不是。OpenXml 负责编辑 Word 文档内容;真正做 Word 转 PDF 的是 LibreOffice 文档转换