【原文地址】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 的强大远远不止如此。你使用该组件时所遇到的困难,我们可以共同来探讨哦。

最新文章

  1. Activity、Task、应用和进程
  2. CF719C. Efim and Strange Grade[DP]
  3. poj 1273 最大流
  4. 寻找房间中心zz
  5. c++中两种常量方法的比较
  6. 低噪声APD偏置电路
  7. Careercup - Google面试题 - 4557716425015296
  8. 基于TCP的NAT子网穿透实验
  9. Linux企业级项目实践之网络爬虫(9)——通过URL抓取网页内容
  10. 思科ASA5520防火墙telnet、SSH及DHCP设置
  11. Flask Markup 上下文,request
  12. OVF文件考究
  13. Linux Shell编程参考大全
  14. 从 0 开始手写一个 Mybatis 框架,三步搞定!
  15. 牛客练习赛42(A,B)
  16. Shell 函数定义与调用
  17. 一个项目中既有移动端,同时也有PC端的代码,并且 他们的代码分开写的,那么如何实现在手机跳转手机页面,pc点击跳转pc页面
  18. es6笔记(5)Map数据结构
  19. SOC 与 ARM
  20. [Err] 1111 - Invalid use of group function

热门文章

  1. TIA Portal V13 WinCC中创建多语言项目
  2. springboot整合Quartz实现定时任务
  3. C#中的PropertyGrid绑定对象,通过改变某一值而动态设置部分属性的特性
  4. Tutorial 02_熟悉常用的HDFS操作
  5. Java 常见数据交换格式——xml、json、yaml
  6. LR IP欺骗
  7. JS学习笔记:(一)浏览器页面渲染机制
  8. Java 学习(1)----- java 学习的总体感觉
  9. mysql-windows版及优化
  10. What is the difference between __str__ and __repr__ in Python