[.NET] 开头不讲"Hello Word",读尽诗书也枉然 : Word 操作组件介绍 - Spire.Doc
开头不讲"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.随便写几句代码
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
} private void button1_Click(object sender, EventArgs e)
{
//打开 word 文档
var document = new Document(@"demo1.docx",FileFormat.Docx); //取第一部分
var section = document.Sections[]; //取第一个段落
var paragraph = section.Paragraphs[]; //追加字符串
paragraph.AppendText("Hello World!"); //保存为 .docx 文件
const string fileName = @"demo1-1.docx";
document.SaveToFile(fileName, FileFormat.Docx); //启动该文件
Process.Start(fileName);
}
}

图 2-2 效果图
【备注】别忘了引入命名空间哦: using Spire.Doc;
上面是向一个空的 word 文档加上“Hello World!”,这次换成直接创建一个新的包含“Hello World!”内容的文档。当然效果跟图 2-2 一样。
private void button1_Click(object sender, EventArgs e)
{
//创建 word 文档
var document = new Document(); //创建新的部分
var section = document.AddSection(); //创建新的段落
var paragraph = section.AddParagraph(); //追加字符串
paragraph.AppendText("Hello World!"); //保存为 .doc 文件
const string fileName = @"demo1-1.doc";
document.SaveToFile(fileName, FileFormat.Doc); //启动该文件
Process.Start(fileName);
}
三、文档内容检索与替换
1.内容检索
先在“demo2.docx”中搞了篇《琵琶行》,启动时在文本框中输入“此时无声胜有声”进行检索。
private void button1_Click(object sender, EventArgs e)
{
//加载 demo2.docx
var document = new Document(@"demo2.docx", FileFormat.Docx); //查找所有匹配的字符串
TextSelection[] textSelections = document.FindAllString(this.textBox1.Text, false, false); //修改背景色
foreach (TextSelection selection in textSelections)
{
selection.GetAsOneRange().CharacterFormat.TextBackgroundColor = Color.Gray;
} //保存文件
const string fileName = @"demo2-1.docx";
document.SaveToFile(fileName, FileFormat.Docx); //启动该文件
Process.Start(fileName);
}

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

图3.2-1
四、格式化操作 - 字体、颜色、排版缩进和样式等
1.字体和颜色
新建一个空白的 demo3.docx 文件。
private void button1_Click(object sender, EventArgs e)
{
//加载 docx
var document = new Document(@"demo3.docx", FileFormat.Docx); //获取第一个部分
Section section = document.Sections[]; //创建一个新的段落或者取第一个段落
Paragraph paragraph
= section.Paragraphs.Count > ? section.Paragraphs[] : section.AddParagraph(); //追加文本
const string text = "This paragraph is demo of text font and color. "
+ "The font name of this paragraph is Tahoma. "
+ "The font size of this paragraph is 20. "
+ "The under line style of this paragraph is DotDot. "
+ "The color of this paragraph is Blue. ";
TextRange txtRange = paragraph.AppendText(text); //设置字体
txtRange.CharacterFormat.FontName = "Tahoma"; //设置字体大小
txtRange.CharacterFormat.FontSize = ; //设置下划线
txtRange.CharacterFormat.UnderlineStyle = UnderlineStyle.DotDot; //改变字体颜色
txtRange.CharacterFormat.TextColor = Color.Blue; //保存文件
const string fileName = @"demo3-1.docx";
document.SaveToFile(fileName, FileFormat.Docx); //启动该文件
Process.Start(fileName);

图4.1-1
2.排版缩进
取空白的 docx 文件。
private void button1_Click(object sender, EventArgs e)
{
//加载 docx
var document = new Document(@"demo3.docx", FileFormat.Docx); //获取第一个部分
Section section = document.Sections[]; //创建一个新的段落或者取第一个段落
Paragraph paragraph
= section.Paragraphs.Count > ? section.Paragraphs[] : section.AddParagraph(); //Append Text
paragraph.AppendText("这是缩进排版 Demo。");
paragraph.ApplyStyle(BuiltinStyle.Heading3); var random = new Random();
paragraph = section.AddParagraph();
for (var i = ; i < random.Next(, ); i++)
{
paragraph = section.AddParagraph();
paragraph.AppendText($"I'm {i}"); if (i == )
{
paragraph.ListFormat.ApplyBulletStyle();
}
else
{
paragraph.ListFormat.ContinueListNumbering();
} paragraph.ListFormat.CurrentListLevel.NumberPosition = -;
} //保存文件
const string fileName = @"缩进排版.docx";
document.SaveToFile(fileName, FileFormat.Docx); //启动该文件
Process.Start(fileName);
}

图4.2-1
3.文本样式
private void button1_Click(object sender, EventArgs e)
{
//创建一个新的 word
var document = new Document(); //创建第一部分
var section = document.AddSection(); //创建第一个段落
var paragraph = section.AddParagraph(); //追加字符串
paragraph.AppendText("Builtin Style:"); foreach (BuiltinStyle builtinStyle in Enum.GetValues(typeof(BuiltinStyle)))
{
paragraph = section.AddParagraph(); //增加段落 paragraph.AppendText(builtinStyle.ToString()); //追加文本 paragraph.ApplyStyle(builtinStyle); //应用样式
} const string fileName = "Style.docx";
document.SaveToFile(fileName, FileFormat.Docx); //保存文件 Process.Start(fileName); //启动
}

图4.3-1
小结
以上只是几个小小的 Demo,当然,Spire.Doc 的强大远远不止如此。你使用该组件时所遇到的困难,我们可以共同来探讨哦。
[.NET] 开头不讲"Hello Word",读尽诗书也枉然 : Word 操作组件介绍 - Spire.Doc的更多相关文章
- 开头不讲"Hello Word",读尽诗书也枉然 : Word 操作组件介绍 - Spire.Doc (转)
[原文地址]http://www.cnblogs.com/liqingwen/p/5898368.html 序 本打算过几天简单介绍下组件 Spire.XLS,突然发现园友率先发布了一篇,既然 x ...
- 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 ...
随机推荐
- .NET Core系列 :3 、使用多个项目
通过前面的两篇文章,我们已经知道如何创建新的项目,如何生成并运行我们的应用程序,也知道(大致) project.json 文件中的内容是什么意思.但大多数项目往往也需要多个项目或引用的类库.我们要创建 ...
- Web性能优化:图片优化
程序员都是懒孩子,想直接看自动优化的点:传送门 我自己的Blog:http://cabbit.me/web-image-optimization/ HTTP Archieve有个统计,图片内容已经占到 ...
- 移动先行之谁主沉浮? 带着你的Net飞奔吧!
移动系源码:https://github.com/dunitian/Windows10 移动系文档:https://github.com/dunitian/LoTDotNet/tree/master/ ...
- Unity 序列化
Script Serialization http://docs.unity3d.com/Manual/script-Serialization.html 自定义序列化及例子: http://docs ...
- Android 获取系统相册中的所有图片
Android 提供了API可获取到系统相册中的一些信息,主要还是通过ContentProvider 来获取想要的内容. 代码很简单,只要熟悉ContentProvider 就可以了. public ...
- 在 SAE 上部署 ThinkPHP 5.0 RC4
缘起 SAE 和其他的平台有些不同,不能在服务器上运行 Composer 来安装各种包,必须把源码都提交上去.一般的做法,可能是直接把源码的所有文件复制到目录中,添加到版本库.不过,这样就失去了与上游 ...
- Android -- 真正的 高仿微信 打开网页的进度条效果
(本博客为原创,http://www.cnblogs.com/linguanh/) 目录: 一,为什么说是真正的高仿? 二,为什么要搞缓慢效果? 三,我的实现思路 四,代码,内含注释 五,使用方法与截 ...
- Kafka副本管理—— 为何去掉replica.lag.max.messages参数
今天查看Kafka 0.10.0的官方文档,发现了这样一句话:Configuration parameter replica.lag.max.messages was removed. Partiti ...
- the Zen of Python---转载版
摘自译文学习区 http://article.yeeyan.org/view/legendsland/154430 The Zen of Python Python 之禅 Beautiful is b ...
- Linux C语言解析并显示.bmp格式图片
/************************* *bmp.h文件 *************************/ #ifndef __BMP_H__ #define __BMP_H__ # ...