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

Word处理控件Spire.Doc系列教程:C# 通过模板创建 Word 文档

在企业应用中,无论是生成报告、合同还是个性化信函,程序化创建 Word 文档都是常见需求E-iceblue旗下Spire系列产品是国产文档处理领域的优秀产品,支持国产化,帮助企业高效构建文档处理的应用程序。Spire.Doc for .NET 提供了无需依赖 Microsoft Office 的 C# Word 文档处理解决方案。

本文将探讨两种基于模板生成文档的有效方法:

  • 通过替换文本占位符创建Word文档
  • 通过替换书签内容创建Word文档

.NET Word文档生成类库

Spire.Doc for .NET 是一款专业的 Word 文档处理 API,可帮助开发者实现多样化的文档操作功能。主要特性包括:

  • 创建、读取、编辑和转换Word文档
  • 支持DOC、DOCX、RTF等格式
  • 基于模板的文档生成
  • 邮件合并功能
  • 保留原始格式

该库特别适用于需要保证一致性和效率的企业级文档自动化生成场景。

开始前,请从我们的官方网站下载 Spire.Doc for .NET,或通过 NuGet 包管理器使用以下命令进行安装:

PM> Install-Package Spire.Doc

通过替换文本占位符创建 Word 文档

Spire.Doc 库中的 Document.Replace 方法可用于查找替换 Word 文档中的特定文本,实现基于模板的动态文档生成。

通过替换文本生成Word文档的步骤如下:

  • 1.文档初始化:创建 Document 对象并加载模板文件
  • 2.占位符定义:使用字典映射占位符(如#name#)到替换值
  • 3.文本替换:Document.Replace 方法执行区分大小写的全字匹配替换
  • 4.图像处理:自定义 ReplaceTextWithImage 方法将文本占位符替换为图像
  • 5.文档保存:将修改后的文档另存为新文件
using Spire.Doc;
using Spire.Doc.Documents;
using Spire.Doc.Fields;
using System.Drawing;namespace CreateWordByReplacingPlaceholders
{class Program{static void Main(string[] args){// 初始化一个新的 Document 对象Document document = new Document();// 加载模板 Word 文件document.LoadFromFile("C:\\Users\\Administrator\\Desktop\\template.docx");// 字典用于保存占位符及其替换内容Dictionary replaceDict = new Dictionary{{ "#name#", "张三" },{ "#gender#", "男" },{ "#birthdate#", "1990年3月20日" },{ "#address#", "金盆岭街道" },{ "#city#", "长沙" },{ "#province#", "湖南" },{ "#postal#", "410000" },{ "#country#", "中国" }};// 用相应的值替换文档中的占位符foreach (KeyValuePair kvp in replaceDict){document.Replace(kvp.Key, kvp.Value, true, true);}// 图像文件的路径String imagePath = "C:\\Users\\Administrator\\Desktop\\portrait.png";// 用图像替换照片占位符ReplaceTextWithImage(document, "#photo#", imagePath);// 保存修改后的文档document.SaveToFile("ReplacePlaceholders.docx", FileFormat.Docx);// 释放资源document.Dispose();}// 方法用于用图像替换文档中的占位符static void ReplaceTextWithImage(Document document, String stringToReplace, String imagePath){// 从指定路径加载图像Image image = Image.FromFile(imagePath);DocPicture pic = new DocPicture(document);pic.LoadImage(image);// 在文档中查找占位符TextSelection selection = document.FindString(stringToReplace, false, true);// 获取找到的文本范围TextRange range = selection.GetAsOneRange();int index = range.OwnerParagraph.ChildObjects.IndexOf(range);// 插入图像并移除占位符文本range.OwnerParagraph.ChildObjects.Insert(index, pic);range.OwnerParagraph.ChildObjects.Remove(range);}}
}

替换模板中的文本生成 Word

通过替换书签内容创建Word文档

Spire.Doc中的 BookmarksNavigator 类专门用于管理 Word 文档中的书签,该类提供了定位书签和替换书签内容的方法。

通过替换书签内容生成Word文档的步骤如下:

  • 1.文档初始化:创建 Document 对象并加载模板文件
  • 2.书签内容定义:创建书签名与替换内容的映射字典
  • 3.书签导航:BookmarksNavigator 类精确定位书签位置
  • 4.内容替换:ReplaceBookmarkContent 方法在更新内容时保留书签
  • 5.文档保存:将修改后的文档另存为新文件
using Spire.Doc;
using Spire.Doc.Documents;namespace CreateWordByReplacingBookmarkContent
{class Program{static void Main(string[] args){// 初始化一个 Document 对象并加载模板Document document = new Document();document.LoadFromFile("C:\\Users\\Administrator\\Desktop\\template.docx");// 定义书签名称及其替换值Dictionary replaceDict = new Dictionary{{ "name", "Tech Innovations Inc." },{ "year", "2015" },{ "headquarter", "美国,纽约" },{ "history", "Tech Innovations Inc. 由一群工程师和企业家创立,他们的愿景是彻底改变技术行业。" +"公司最初专注于软件开发,后来将业务范围扩展到人工智能和云计算解决方案。" }};// 创建一个 BookmarksNavigator 来管理文档中的书签BookmarksNavigator bookmarkNavigator = new BookmarksNavigator(document);// 用相应的值替换每个书签的内容foreach (KeyValuePair kvp in replaceDict){bookmarkNavigator.MoveToBookmark(kvp.Key); // 导航到书签bookmarkNavigator.ReplaceBookmarkContent(kvp.Value, true); // 替换内容}// 保存修改后的文档document.SaveToFile("ReplaceBookmarkContent.docx", FileFormat.Docx2013);// 释放资源document.Dispose();}}
}

替换书签内容生成Word文档

结论

两种方法都提供了有效的从模板生成Word文档的方式,但有重要差异:

1.文本替换法:

  • 永久移除占位符
  • 适合一次性文档生成
  • 更适合文本到图像的替换

2.书签替换法:

  • 保留书签以便后续更新
  • 适合需要定期更新的模板

此外,Spire.Doc for .NET 还支持邮件合并功能,这为从模板动态生成文档提供了另一种强大的方式。该功能特别适用于批量创建个性化文档,例如套用信函或报告,这些文档的数据通常来自数据库或其他结构化数据源。

相关文章:

  • leetcode0175. 组合两个表-easy
  • AXPM60631: 用于AMOLED显示屏的200mA双路DC-DC电源管理芯片
  • body Param Query 三个 不同的入参 分别是什么意思 在前端 要怎么传 这三种不同的参数
  • git回退commit
  • Flink维表深度解析
  • python 里有冒泡排序吗
  • 【MQ篇】RabbitMQ之消费失败重试!
  • Python3:Jupyter Notebook 安装和配置
  • 基于大模型的急性化脓性阑尾炎全程诊疗预测与方案研究
  • 物联网相关
  • Golang | 搜索表达式
  • 巧记英语四级单词 Unit6-上【晓艳老师版】
  • Dijkstra 算法代码步骤[leetcode.743网络延迟时间]
  • Milvus如何实现关键词过滤和向量检索的混合检索
  • 信竞中的数学(一):质数
  • 典籍查询界面增加我的收藏查询功能
  • 极狐GitLab 议题权重有什么作用?
  • 【漫话机器学习系列】227.信息检索与数据挖掘中的常用加权技术(TF-IDF)
  • 论文检索相关网站
  • 制作一款打飞机游戏26:精灵编辑器
  • 从“网点适老化”到“社区嵌入式”,“金融为老上海模式”如何探索?
  • 张译、惠英红分获第二十届中国电影华表奖优秀男、女演员奖
  • 中国航天员乘组完成在轨交接,神十九乘组将于29日返回地球
  • 没有雷军的车展:老外扎堆,萌车、机器狗谁更抢镜?| 湃客Talk
  • 最高法知产庭年度报告:民事案件二审发回重审率持续下降
  • 最高法知识产权法庭:6年来新收涉外案件年均增长23.2%