Spire.Doc Word文档模板数据替换

该文章介绍了如何利用Spire.Doc组件在.NET环境中实现Word文档的模板文字替换、插入附件、电子签名、创建复选框、去除空白节以及动态添加表格数据等功能,用于医疗机构证件审核的OA项目文档归档。

目录

项目背景介绍

关于Spire.Doc

功能实现

模板文字替换方法

 文档插入附件

指定位置插入电子签名、电子公章等

创建复选框

去除word空白节

table 表格动态添加行并填充数据

模板归档生成效果示例


项目背景介绍

最近做了一个关于医疗机构证件审核的小型OA项目,项目中需要实现对医疗机构相关资料的文件归档功能,包含相关的文字信息、图片信息、表格信息以及pdf附件等文件的处理

关于Spire.Doc

详情参见 Spire.Doc

也可参见文档 .NET office开发组件_蓝晶之心的博客-CSDN博客查看简单介绍 

功能实现

Nuget中安装 FreeSpire.Doc、FreeSpire.PDF、iTextSharp.LGPLv2.Core

创建Spire.Doc 帮助类SpireDocHelper.cs

模板文字替换方法

        /// <summary>
        /// word 模板替换
        /// </summary>
        /// <typeparam name="T"></typeparam> 
        /// <param name="etity"></param>
        /// <param name="doc"></param>
        private static void ReplaceKey<T>(T etity, Spire.Doc.Document doc)
        {
            Type entityType = typeof(T);
            PropertyInfo[] properties = entityType.GetProperties();
            string entityName = entityType.Name;//实体类名称
            foreach (var p in properties)
            {
                string propteryName = "{$" + p.Name + "}";//Word模板中设定的需要替换的标签
                object value = p.GetValue(etity);
                if (value == null)
                {
                    value = "";
                }
                doc.Replace(propteryName, value.ToString(), true, true);
            }
        }

调用示例:

               //Entity 数据信息
                PublicNoticeView viewData = new PublicNoticeView();
                viewData.OrgName = orgInfo.DeptName;
                viewData.PersonName = legalPerson.PersonName;
                viewData.OrgType = orgInfo.DeptType;
                viewData.OrgAddress = orgProfile.OrgAddress;
                viewData.ServiceTarget = orgProfile.ServiceTarget;
                viewData.BedNum = (orgProfile.BedNum ?? 0).ToString();
                viewData.ToothChairNum= (orgProfile.ToothChairNum ?? 0).ToString();
                viewData.DiagnosisItems = diagnosisInfoTxt.ToString().TrimEnd('、');
                viewData.OperationNature = orgProfile.OperationNature;
                //加载文档
                Spire.Doc.Document doc = new Spire.Doc.Document();
                doc.LoadFromFile(@"D:\templete.docx");//加载模板文件路径
                ReplaceKey(viewData, doc);
                //保存替换后的模板文件
                string savePath = @"D:\"+ "newTemplete.docx";
                if (File.Exists(savePath))
                {
                    File.Delete(savePath);//删除原文件
                }
                doc.SaveToFile(savePath, FileFormat.Docx);
                doc.Close();

 文档插入附件

       /// <summary>
        /// 文档插入附件
        /// </summary>
        /// <param name="doc"></param>
        /// <param name="filePath">附件路径</param>
        /// <param name="docRootPath">文件根目录</param>
        private void InsertFile(Spire.Doc.Document doc, string filePath, string docRootPath)
        {
            string fullPath = docRootPath + filePath;
            if (File.Exists(fullPath))
            {
                try
                {
                    string extension = Path.GetExtension(fullPath).ToLower();//获取文件名后缀
                    //图片
                    if (extension == ".png" || extension == ".jpg" || extension == ".jpeg" || extension == ".bmp")
                    {
                        InsertImg(doc, fullPath);
                    }
                    else if (exte
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值