Spire.Doc组件读取与写入Word

    xiaoxiao2021-03-25  82

    Spire.Doc组件读取与写入Word

    原文地址:http://www.cnblogs.com/yanweidie/archive/2015/10/19/4888199.html

      之前写了一篇开源组件DocX读写word的文章,当时时间比较匆忙选了这个组件,使用过程中还是有些不便,不能提前定义好模版,插入Form表单域进行替换。最近无意中发现Spire.Doc组件功能很强大,目前来看基本上符合我的所有使用场景。本篇将挑选几个重要的应用场景进行介绍。

    阅读目录

    使用模版生成简历格式转换Table操作总结 回到顶部

    使用模版生成简历

      使用word的FormField预先插入占位符,然后在代码中获取所有FormField,进行替换。这种场景特别适用于,模版固定动态更改内容。看看最终效果

        表单域制作步骤

        1.打开word中的开发工具选项,对于导航栏中没有这一项的,可以通过 文件->选项->自定义功能区->开发工具 进行打开

        

       2.插入TextField, 属性->设置书签名称

       

     

      模版制作完成后,来看看实现代码

     

    class Program { private static BindingFlags s_flag = BindingFlags.Instance | BindingFlags.Public; static void Main(string[] args) { Console.WriteLine("\nRunning Examples"); Resume personResume = new Resume { Name = "Spire.Doc",//姓名 Marriage = "未婚",//婚姻 Birth = "2010-09-19",//出生年月 Political = "团员",//政治面貌 Sex = "",//性别 Nation = "汉族",//民族 Degree = "大学本科",//学位 Mobile = "13567890987",//移动电话 Professional = "软件工程",//专业 Email = "2345678@qq.com",//邮箱 Adress = "故宫", //地址 MajorCourse = "数据结构,C语言,算法,C++",//主修课程 PersonalAbility = "熟练掌握DocX操作Word,SQL能力强悍",//个人能力 ComputerAbility = "高级软件工程师",//计算机能力 LanguageLevel = "CET-4,CET-6",//外语水平 Awards = "1999年几月 曾获优秀班干部,3等奖学金1999年几月 曾获校优秀干部,学生会先进集体,2等奖学金20**年几月 曾获优秀学习委员,网络技术协会负责人,……………………",//奖励情况 SelfEvaluation = "本人性格开朗、稳重、有活力,待人热情、真诚;工作认真负责,积极主动,能吃苦耐劳,用于承受压力,勇于创新;有很强的组织能力和团队协作精神,具有较强的适应能力;纪律性强,工作积极配合;意志坚强,具有较强的无私奉献精神"//自我评价 }; CreateResume(personResume); Console.WriteLine("\nPress any key to exit."); Console.ReadKey(); } private static void CreateResume(Resume personResume) { Document doc = new Document(@"ResumeTemplate.docx"); //清除表单域阴影 doc.Properties.FormFieldShading=false; try { Type type = typeof(Resume); PropertyInfo[] properties = type.GetProperties(s_flag); int length = properties.Length; Dictionary<string, PropertyInfo> dict = new Dictionary<string, PropertyInfo>(length, StringComparer.OrdinalIgnoreCase); foreach (PropertyInfo prop in properties) { dict[prop.Name] = prop; } object value = null; foreach (FormField field in doc.Sections[0].Body.FormFields) {             //field.name对应设置模版文本域名称 PropertyInfo prop = dict[field.Name]; if (prop != null) { value = prop.GetValue(personResume, null); if (value != null && value != DBNull.Value) { switch (field.Type) { case FieldType.FieldFormTextInput: field.Text = value.ToString(); break; default: break; } } } } doc.SaveToFile(@"DocXResume.docx", FileFormat.Docx); } catch (Exception ex) { Console.WriteLine(ex.Message); } } }

     

    public class Resume { public string Name { get; set; } public string Marriage { get; set; } public string Birth { get; set; } public string Political { get; set; } public string Sex { get; set; } public string Nation { get; set; } public string Degree { get; set; } public string Mobile { get; set; } public string Professional { get; set; } public string Email { get; set; } public string Adress { get; set; } public string MajorCourse { get; set; } public string PersonalAbility { get; set; } public string ComputerAbility { get; set; } public string LanguageLevel { get; set; } public string Awards { get; set; } public string SelfEvaluation { get; set; } }

      重点关注上面标红的代码,可以看到通过简单的代码即可完成一份简历文档 

    回到顶部

    格式转换

      使用Spire.Doc可以很方便的将word转换成HTML,RTF,PDF,TXT,WPS...等格式

    Document doc = new Document(@"SpireDocResume.docx"); //Save doc file. doc.SaveToFile("SpireDocResume.html", FileFormat.Html);

     

        效果和直接打开word是一样的,有了这功能就能实现在线word预览,之前的一篇 在线文档预览方案也可以参考一下。其它格式的转换也是一样的代码,改一下FileFormat枚举值即可。 回到顶部

    Table操作

    View Code 回到顶部

    总结

       通过上面三个简单的例子,粗略的了解了Spire.Doc。下面就我个人对DocX和Spire.Doc使用,列出两种优缺点。

     Spire.DocDocXAPI介绍简单无API介绍Demo提供了很多Demo方便学习demo少收费收费开源免费功能对比1.支持FormField模版替换 2.Table读写功能强大1.对自定义属性读写存在BUG兼容性兼容word各版本支持2007即以上版本依赖性不依赖于office,即使服务器未装office也能正常操作

        实际开发中可以根据自己需要来选择使用Sprie.Doc或者DocX。

        本文例子Demo下载地址:SpireDoc_Demo

    转载请注明原文地址: https://ju.6miu.com/read-50061.html

    最新回复(0)