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

阅读目录

使用模版生成简历

  使用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 = "",//移动电话
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[].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操作

 private static void addTable(Section section)
{
String[] header = { "Name", "Capital", "Continent", "Area", "Population" };
String[][] data =
{
new String[]{"Argentina", "Buenos Aires", "South America", "", ""},
new String[]{"Bolivia", "La Paz", "South America", "", ""},
new String[]{"Brazil", "Brasilia", "South America", "", ""},
new String[]{"Canada", "Ottawa", "North America", "", ""},
new String[]{"Chile", "Santiago", "South America", "", ""},
new String[]{"Colombia", "Bagota", "South America", "", ""},
new String[]{"Cuba", "Havana", "North America", "", ""},
new String[]{"Ecuador", "Quito", "South America", "", ""},
new String[]{"El Salvador", "San Salvador", "North America", "", ""},
new String[]{"Guyana", "Georgetown", "South America", "", ""},
new String[]{"Jamaica", "Kingston", "North America", "", ""},
new String[]{"Mexico", "Mexico City", "North America", "", ""},
new String[]{"Nicaragua", "Managua", "North America", "", ""},
new String[]{"Paraguay", "Asuncion", "South America", "", ""},
new String[]{"Peru", "Lima", "South America", "", ""},
new String[]{"United States of America", "Washington", "North America", "", ""},
new String[]{"Uruguay", "Montevideo", "South America", "", ""},
new String[]{"Venezuela", "Caracas", "South America", "", ""}
};
Spire.Doc.Table table = section.AddTable();
table.ResetCells(data.Length + , header.Length); // ***************** First Row *************************
TableRow row = table.Rows[];
row.IsHeader = true;
row.Height = ; //unit: point, 1point = 0.3528 mm
row.HeightType = TableRowHeightType.Exactly;
row.RowFormat.BackColor = Color.Gray;
for (int i = ; i < header.Length; i++)
{
row.Cells[i].CellFormat.VerticalAlignment = VerticalAlignment.Middle;
Paragraph p = row.Cells[i].AddParagraph();
p.Format.HorizontalAlignment = Spire.Doc.Documents.HorizontalAlignment.Center;
TextRange txtRange = p.AppendText(header[i]);
txtRange.CharacterFormat.Bold = true;
} for (int r = ; r < data.Length; r++)
{
TableRow dataRow = table.Rows[r + ];
dataRow.Height = ;
dataRow.HeightType = TableRowHeightType.Exactly;
dataRow.RowFormat.BackColor = Color.Empty;
for (int c = ; c < data[r].Length; c++)
{
dataRow.Cells[c].CellFormat.VerticalAlignment = VerticalAlignment.Middle;
dataRow.Cells[c].AddParagraph().AppendText(data[r][c]);
}
}
}

总结

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

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

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

本文例子Demo下载地址:SpireDoc_Demo

如果,您认为阅读这篇博客让您有些收获,不妨点击一下右下角的推荐按钮。
如果,您希望更容易地发现我的新博客,不妨点击一下绿色通道的关注我

如果,想给予我更多的鼓励,求打

因为,我的写作热情也离不开您的肯定支持。

感谢您的阅读,如果您对我的博客所讲述的内容有兴趣,请继续关注我的后续博客,我是焰尾迭 。

Spire.Doc组件读取与写入Word的更多相关文章

  1. 使用Spire.Doc组件利用模板导出Word文档

    以前一直是用Office的组件实现Word文档导出,但是让客户在服务器安装Office,涉及到版权:而且Office安装,包括权限配置也是比较麻烦. 现在流行使用第三方组件来实现对Office的操作, ...

  2. 数据字典生成工具之旅(5):DocX组件读取与写入Word

    由于上周工作比较繁忙,所以这篇文章等了这么久才写(预告一下,下一个章节正式进入NVelocity篇,到时会讲解怎么使用NVelocity做一款简易的代码生成器,敬请期待!),好了正式进入本篇内容. 这 ...

  3. DocX组件读取与写入Word

    本文转载:http://www.cnblogs.com/yanweidie/p/3861482.html 由于上周工作比较繁忙,所以这篇文章等了这么久才写(预告一下,下一个章节正式进入NVelocit ...

  4. word模板导出的几种方式:第三种:标签替换(DocX组件读取与写入Word)

    dll文件下载地址:https://files-cdn.cnblogs.com/files/daizhipeng/DocX.rar DocX wordDocumentOld = DocX.Load(S ...

  5. Spire.Doc组件

    使用Spire.Doc组件利用模板导出Word文档 以前一直是用Office的组件实现Word文档导出,但是让客户在服务器安装Office,涉及到版权:而且Office安装,包括权限配置也是比较麻烦. ...

  6. [php]在PHP中读取和写入WORD文档的代码

    测试平台windows 使用的windows的com主键. <? // 建立一个指向新COM组件的索引 $word = new COM("word.application") ...

  7. 【好文翻译】一步一步教你使用Spire.Doc转换Word文档格式

    背景: 年11月,微软宣布作为ECMA国际主要合作伙伴,将其开发的基于XML的文件格式标准化,称之为"Office Open XML" .Open XML的引进使office文档结 ...

  8. Spire.Doc 生成pdf业务运营报告

    需求:每天向全国各运营大区钉钉运营群定时发送pdf业务运营报告: 通过对各Office操作组件对比,选择Spire.Doc.它专门为开发人员进行创建,读取,写入.转换打印 word 文档文件提供便利, ...

  9. 使用Spire.Doc来转换文本

    使用Spire.Doc来转换文本 前段时间,我为不熟悉这个产品的读者们写了一篇关于我对 Spire.Doc的初识印象.Spire.Doc是一个专业的Word .NET库,它是专门为开发人员设计的用来快 ...

随机推荐

  1. Git中文版教程

    1. 起步 1.1 关于版本控制 1.2 Git 简史 1.3 Git 基础 1.4 命令行 1.5 安装 Git 1.6 初次运行 Git 前的配置 1.7 获取帮助 1.8 总结 2. Git 基 ...

  2. Tomcat:使用JMX监管Tomcat的几种方式

    Tomcat使用JMX管理方式,在Tomcat的自带应用manager就是使用了JMX方式来管理Tomcat,以此完成Web应用的动态部署.启动.停止. 然而manager应用是一种本地使用JMX接口 ...

  3. CentOS6 Shell脚本/bin/bash^M: bad interpreter错误解决方法

    在windows下保存了一个脚本文件,用ssh上传到centos,添加权限执行nginx提示没有那个文件或目录.shell脚本放到/etc/init.d/目录下,再执行/etc/init.d/ngin ...

  4. python基础(三)序列

    作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 谢谢thunder424纠错 sequence 序列 sequence(序列)是一 ...

  5. Python基础之set与函数

    set集合 set 是无序,不重复的序列,基本功能包括去重和关系测试,集合中没有插入的方法,只能添加. 集合对象还支持union(联合), intersection(交), difference(差) ...

  6. top:failed tty get 错误

    运行命令,ps -ef | grep test | grep -v test | awk '{ print $2 }' | xargs top -H -p 想看test的实时状态,结果报了错,查了一下 ...

  7. 制作OS X 10.9 Mavericks 安装U盘

    转载:http://www.macx.cn/forum.php?mod=viewthread&tid=2094799 安装win7的话,在mac中使用bootcamp制作一个win7安装盘即可 ...

  8. MMORPG大型游戏设计与开发(构架)

    游戏整体是以经典的武侠世界/天龙八部作为基本的一种设计模式,大致分为以下几个部分. 游戏的简单的一次处理流程如下,不过有些凌乱,还有待完善. 程序设计方面,服务器基本上分为数据处理.日志.网络等模块, ...

  9. Stanford机器学习笔记-6. 学习模型的评估和选择

    6. 学习模型的评估与选择 Content 6. 学习模型的评估与选择 6.1 如何调试学习算法 6.2 评估假设函数(Evaluating a hypothesis) 6.3 模型选择与训练/验证/ ...

  10. StackOverflow发布年度开发者调查报告:JavaScript备受欢迎

    StackOverflow刚刚发布了年度开发者调查报告,访问了来自173个国家的56033名编程人员,发现几乎所有开发者都精通于JavaScript.具体说来就是,超过85%的全栈开发者.超过90%的 ...