【原文地址】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 ...
随机推荐
-
VS 插件ReSharper10 破解注册方法(转)
ReSharper 10.0.0.1 Ultimate 完美破解补丁使用方法,本资源来自互联网,感谢吾乐吧软件站的分享. ReSharper是一款由jetbrains开发的针对C#, VB.NET, ...
-
如何读取Access里的OLE类型的图片
身份证一类读卡器读取的照片信息,保存在Access数据库中一般为OLE型字段,图片为BMP格式,因为是用其读卡器写入的,其数据类型为常二进制数据. 再用报表或EXCEL读取这些图片时,如果将该图片字段 ...
-
Web应用安全十大主动安全措施
这几天有空参加了360主办的第一届互联网安全大会(ISC 2013),除了现场看到FREEBUF现场微博号发的众多妹子之外,也听到了很多有趣的议题,比如TK分享的通过网络运营商缓存服务器偷渡,只需一台 ...
-
TP框架自带的正则验证的规则(转载)
thinkphp框架里面自带有很多自动验证的规则,下面是框架自带的正则验证的规则,官方的说明文档里面没有这么多,所以记下来,以备使用. view sourceprint?01static $regex ...
-
java 中的断言assert的使用
一.assertion的意义和用法 J2SE 1.4在语言上提供了一个新特性,就是assertion功能,它是该版本在Java语言方面最大的革新. 从理论上来说,通过 assertion方式可以证明程 ...
-
Libevent源码分析—event, event_base
event和event_base是libevent的两个核心结构体,分别是反应堆模式中的Event和Reactor.源码分别位于event.h和event-internal.h中 1.event: s ...
-
【java】控制台实现贪吃蛇小游戏-LinkedList、Scanner
package com.myproj.snake; public class Node { private int i,j; public Node(){} public Node(int i, in ...
-
面试中linux常见的20个命令
1.查找文件 find / -name filename.txt 根据名称查找/目录下的filename.txt文件. 2.查看一个程序是否运行 ps –ef|grep tomcat 查看所有有关to ...
-
layer is not defined
项目中使用layui中,引入新旧版本出现的一个问题. 使用console.log(layer) 打印出来的,显示使用的版本是1.8.0 但是页面中引入的layui有好几个.就是不使用最新的. /*这里 ...
-
delphi 控件的名称怎么不显示了
选择菜单 Tools--Environment在打开的对话框中选择 Designer 页,选 其中的 Options 选项勾选 Show component captions ,点击 OK即可