开头不讲"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 ...
随机推荐
- Spring自动注入之@Autowired、@Resource、@Inject
相同点: 三者都支持对spring bean的自动注入 不同点: ①Autowired按照类型进行注入( Bean bean = applicationContext.getBean(Bean.cla ...
- echarts 页面对应更改
---legrnd legend: { icon: "circle", orient: 'vertical', right: 10, top: 20, bottom: 20, da ...
- Tutorial: Create a Windows Machine Learning UWP application (C#)
In this tutorial, we'll build a simple Universal Windows Platform application that uses a trained ma ...
- Python TypeError: not all arguments converted during string formatting ——元组tuple(a)和(a,)的区别
今天写程序,想输出一个array的shape,原程序为: print('shape of testUImatrix:%s\nStart to make testUImatrix...'%(testui ...
- [模板] 2-SAT 问题
简介 2-SAT (2-satisfiability) 问题形如: 给定一些变量 \(x_i \in \{true, false\}\); 给定一些一元/二元约束条件, 如 \(x_i \land \ ...
- Docker 命令查询
Docker — 从入门到实践 Docker 命令查询 基本语法 Docker 命令有两大类,客户端命令和服务端命令.前者是主要的操作接口,后者用来启动 Docker Daemon. 客户端命令:基本 ...
- win10 安装docker
看介绍说docker不支持win10家庭版,但是一搜安装教程也有好多在家庭版上安装的,而且也不麻烦,不知道咋回事 1.查看虚拟化状态 一开始我的是没有开启的,从bios开启的 一般是开始按F2,进入b ...
- python3.6使用pygal模块不具交互性,图片不能显示数据
1.版本 个人电脑版本:win10+python3.6 2.安装 2.1 安装过的版本 1. 先使用pip安装pygal1.7,(参考<python从入门到实践>) pyt ...
- MySql自动备份shell
MySql黑屏备份是每个运维工程师必备的技能,以下是MySQL自动备份脚本: #/bin/bash#This is mysql backup shell on 2019/4/28 BAKUP_DIR= ...
- content-type 组件
content-type初识 什么是content-type ContentType是Django的内置的一个应用,可以追踪项目中所有的APP和model的对应关系,并记录在ContentType表中 ...