开头不讲"Hello Word",读尽诗书也枉然 : Word 操作组件介绍 - Spire.Doc (转)
【原文地址】http://www.cnblogs.com/liqingwen/p/5898368.html
序
本打算过几天简单介绍下组件 Spire.XLS,突然发现园友率先发布了一篇,既然 xls 已经出现,为避免打上抄袭嫌疑,博主只能抢先一步使用 Spire.Doc 简单介绍 Doc 操作,下面是通过 WinForm 程序执行代码完成介绍的。
本机环境:Win10 x64、VS 2015、MS Office 2016。
目录
介绍
这是 E-iceblue 公司开发的其中一个组件 Spire.Doc,它专门为开发人员进行创建,读取,写入、转换打印 word 文档文件提供便利,并且,它不需要你安装 MS Office,就可以对 word 进行操作。这里使用的是免费版进行演示。

图1 官方截图

图2 版本间的功能的差异
一、NuGet 包安装 Dll 引用文件

图1-1 打开 NuGet 包管理器

图1-2 安装完后会多 3 个引用文件
二、开头不讲“Hello World”,读尽诗书也枉然
1.先创建个空白的“demo1.docx”文件
图2-1
2.随便写几句代码

1 public partial class Form1 : Form
2 {
3 public Form1()
4 {
5 InitializeComponent();
6 }
7
8 private void button1_Click(object sender, EventArgs e)
9 {
10 //打开 word 文档
11 var document = new Document(@"demo1.docx",FileFormat.Docx);
12
13 //取第一部分
14 var section = document.Sections[0];
15
16 //取第一个段落
17 var paragraph = section.Paragraphs[0];
18
19 //追加字符串
20 paragraph.AppendText("Hello World!");
21
22 //保存为 .docx 文件
23 const string fileName = @"demo1-1.docx";
24 document.SaveToFile(fileName, FileFormat.Docx);
25
26 //启动该文件
27 Process.Start(fileName);
28 }
29 }


图 2-2 效果图
【备注】别忘了引入命名空间哦: using Spire.Doc;
上面是向一个空的 word 文档加上“Hello World!”,这次换成直接创建一个新的包含“Hello World!”内容的文档。当然效果跟图 2-2 一样。

1 private void button1_Click(object sender, EventArgs e)
2 {
3 //创建 word 文档
4 var document = new Document();
5
6 //创建新的部分
7 var section = document.AddSection();
8
9 //创建新的段落
10 var paragraph = section.AddParagraph();
11
12 //追加字符串
13 paragraph.AppendText("Hello World!");
14
15 //保存为 .doc 文件
16 const string fileName = @"demo1-1.doc";
17 document.SaveToFile(fileName, FileFormat.Doc);
18
19 //启动该文件
20 Process.Start(fileName);
21 }

三、文档内容检索与替换
1.内容检索
先在“demo2.docx”中搞了篇《琵琶行》,启动时在文本框中输入“此时无声胜有声”进行检索。

1 private void button1_Click(object sender, EventArgs e)
2 {
3 //加载 demo2.docx
4 var document = new Document(@"demo2.docx", FileFormat.Docx);
5
6 //查找所有匹配的字符串
7 TextSelection[] textSelections = document.FindAllString(this.textBox1.Text, false, false);
8
9 //修改背景色
10 foreach (TextSelection selection in textSelections)
11 {
12 selection.GetAsOneRange().CharacterFormat.TextBackgroundColor = Color.Gray;
13 }
14
15 //保存文件
16 const string fileName = @"demo2-1.docx";
17 document.SaveToFile(fileName, FileFormat.Docx);
18
19 //启动该文件
20 Process.Start(fileName);
21 }


图 3.1-1
2.内容替换
大家尝试在三的基础上简单修改下代码即可。
1 document.Replace(this.textBox1.Text, this.textBox2.Text,false,false);

图3.2-1
四、格式化操作 - 字体、颜色、排版缩进和样式等
1.字体和颜色
新建一个空白的 demo3.docx 文件。

1 private void button1_Click(object sender, EventArgs e)
2 {
3 //加载 docx
4 var document = new Document(@"demo3.docx", FileFormat.Docx);
5
6 //获取第一个部分
7 Section section = document.Sections[0];
8
9 //创建一个新的段落或者取第一个段落
10 Paragraph paragraph
11 = section.Paragraphs.Count > 0 ? section.Paragraphs[0] : section.AddParagraph();
12
13 //追加文本
14 const string text = "This paragraph is demo of text font and color. "
15 + "The font name of this paragraph is Tahoma. "
16 + "The font size of this paragraph is 20. "
17 + "The under line style of this paragraph is DotDot. "
18 + "The color of this paragraph is Blue. ";
19 TextRange txtRange = paragraph.AppendText(text);
20
21 //设置字体
22 txtRange.CharacterFormat.FontName = "Tahoma";
23
24 //设置字体大小
25 txtRange.CharacterFormat.FontSize = 20;
26
27 //设置下划线
28 txtRange.CharacterFormat.UnderlineStyle = UnderlineStyle.DotDot;
29
30 //改变字体颜色
31 txtRange.CharacterFormat.TextColor = Color.Blue;
32
33 //保存文件
34 const string fileName = @"demo3-1.docx";
35 document.SaveToFile(fileName, FileFormat.Docx);
36
37 //启动该文件
38 Process.Start(fileName);
39


图4.1-1
2.排版缩进
取空白的 docx 文件。

1 private void button1_Click(object sender, EventArgs e)
2 {
3 //加载 docx
4 var document = new Document(@"demo3.docx", FileFormat.Docx);
5
6 //获取第一个部分
7 Section section = document.Sections[0];
8
9 //创建一个新的段落或者取第一个段落
10 Paragraph paragraph
11 = section.Paragraphs.Count > 0 ? section.Paragraphs[0] : section.AddParagraph();
12
13 //Append Text
14 paragraph.AppendText("这是缩进排版 Demo。");
15 paragraph.ApplyStyle(BuiltinStyle.Heading3);
16
17 var random = new Random();
18 paragraph = section.AddParagraph();
19 for (var i = 0; i < random.Next(0, 10); i++)
20 {
21 paragraph = section.AddParagraph();
22 paragraph.AppendText($"I'm {i}");
23
24 if (i == 0)
25 {
26 paragraph.ListFormat.ApplyBulletStyle();
27 }
28 else
29 {
30 paragraph.ListFormat.ContinueListNumbering();
31 }
32
33 paragraph.ListFormat.CurrentListLevel.NumberPosition = -10;
34 }
35
36 //保存文件
37 const string fileName = @"缩进排版.docx";
38 document.SaveToFile(fileName, FileFormat.Docx);
39
40 //启动该文件
41 Process.Start(fileName);
42 }


图4.2-1
3.文本样式

1 private void button1_Click(object sender, EventArgs e)
2 {
3 //创建一个新的 word
4 var document = new Document();
5
6 //创建第一部分
7 var section = document.AddSection();
8
9 //创建第一个段落
10 var paragraph = section.AddParagraph();
11
12 //追加字符串
13 paragraph.AppendText("Builtin Style:");
14
15 foreach (BuiltinStyle builtinStyle in Enum.GetValues(typeof(BuiltinStyle)))
16 {
17 paragraph = section.AddParagraph(); //增加段落
18
19 paragraph.AppendText(builtinStyle.ToString()); //追加文本
20
21 paragraph.ApplyStyle(builtinStyle); //应用样式
22 }
23
24 const string fileName = "Style.docx";
25 document.SaveToFile(fileName, FileFormat.Docx); //保存文件
26
27 Process.Start(fileName); //启动
28 }


图4.3-1
小结
以上只是几个小小的 Demo,当然,Spire.Doc 的强大远远不止如此。你使用该组件时所遇到的困难,我们可以共同来探讨哦。
开头不讲"Hello Word",读尽诗书也枉然 : Word 操作组件介绍 - Spire.Doc (转)的更多相关文章
- [.NET] 开头不讲"Hello Word",读尽诗书也枉然 : Word 操作组件介绍 - Spire.Doc
开头不讲"Hello Word",读尽诗书也枉然 : Word 操作组件介绍 - Spire.Doc [博主]反骨仔 [原文地址]http://www.cnblogs.com/li ...
- Word 操作组件介绍 - Spire.Doc
http://www.cnblogs.com/liqingwen/p/5898368.html
- 【好文翻译】一步一步教你使用Spire.Doc转换Word文档格式
背景: 年11月,微软宣布作为ECMA国际主要合作伙伴,将其开发的基于XML的文件格式标准化,称之为"Office Open XML" .Open XML的引进使office文档结 ...
- 读Zepto源码之样式操作
这篇依然是跟 dom 相关的方法,侧重点是操作样式的方法. 读Zepto源码系列文章已经放到了github上,欢迎star: reading-zepto 源码版本 本文阅读的源码为 zepto1.2. ...
- 读Zepto源码之属性操作
这篇依然是跟 dom 相关的方法,侧重点是操作属性的方法. 读Zepto源码系列文章已经放到了github上,欢迎star: reading-zepto 源码版本 本文阅读的源码为 zepto1.2. ...
- 在C#中使用Spire.doc对word的操作总结
在C#中使用Spire.doc对word的操作总结 在最近的工程中我们要处理一些word文档.通过在网上的大量搜索,我发现大多数软件功能不是不完整就是有重复.极少数可以完全实现的word组件又要收费. ...
- 使用FreePic2Pdf导出书签至Word建立层级目录——快速初始化Word笔记本目录
使用FreePic2Pdf导出书签至Word建立层级目录 --快速初始化Word笔记本目录 文:安徽师范大学2014级计算机科学与技术 王昊 (Get Contact:441301158@qq.com ...
- Spire.Doc组件读取与写入Word
之前写了一篇开源组件DocX读写word的文章,当时时间比较匆忙选了这个组件,使用过程中还是有些不便,不能提前定义好模版,插入Form表单域进行替换.最近无意中发现Spire.Doc组件功能很强大,目 ...
- Word转图片(使用Spire.doc)
Spire.Doc for .NET是一款由E-iceblue公司开发的专业的Word .NET类库.支持.net,WPF,Silverlight, 下载地址:http://www.e-iceblue ...
随机推荐
- 说说我心中的Linux系统
我不知道在阅读此篇文章的你,是一个什么样的人,或许你只是偶然看到此篇文章的路人,或许是对linux有兴趣但没接触过linux的圈外人,或许是已经入行没多久的菜鸟,或许是喜欢linux却学习不下去预备放 ...
- Smart Indenter for VBE(64bits smart indent addin for VBA Editor),VBA开发必备的智能排版工具。
原始出处:www.cnblogs.com/Charltsing/p/SmartIndenter64.html 作者QQ: 564955427 最近更换电脑,改用64位office做开发.VBA代码美化 ...
- MongoDB系列:五、MongoDB Driver使用正确的姿势连接复制集
MongoDB复制集(Replica Set)通过存储多份数据副本来保证数据的高可靠,通过自动的主备切换机制来保证服务的高可用.但需要注意的时,连接副本集的姿势如果不对,服务高可用将不复存在. 使用复 ...
- Ubuntu 16.04 RabbitMq 安装与运行(安装篇)
Ubuntu 16.04 RabbitMq 安装与运行(安装篇) 2018年08月15日 15:05:24 我跟吴彦祖四六开 阅读数:1966 前言 目前公司用阿里云 + redis 的方式实现的 ...
- 消息队列与Kafka
2019-04-09 关键词: 消息队列.为什么使用消息队列.消息队列的好处.消息队列的意义.Kafka是什么 本篇文章系本人就当前所掌握的知识关于 消息队列 与 kafka 知识点的一些简要介绍,不 ...
- JSON.stringify的三个参数(转载)
前段时间勾股有提到stringify是支持三个参数,刷新的了我的认知,后来查到文档才发现还真的是支持三个参数的. 参考资料: stringify stringify方法顾名思义,就是把JSON序列换, ...
- chrome主页篡改解决方法
网上有一个超级细致的小白教学连接,但是发现很难找到,分享一下:https://arlenluo.github.io./2017/03/12/DefeatYourBrowser 还有一种情况是要打开 & ...
- Day053--MySQL
MySQL安装和基本管理https://www.cnblogs.com/majj/p/9160383.html 管理员模式运行cmd 打开终端,输入mysqld,打开服务端. 打开终端,输入mysql ...
- cucumber学习笔记
来源于cucumber官网 学习完了之后全部整理一遍
- prometheus 基于DNS的目标发现
prometheus 基于DNS的目标发现 DNS服务发现依赖于查询A.AAAA或SRV DNS记录. 1.基于 SRV 记录发现 scrape_configs: - job_name: 'webap ...