[.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 ...
随机推荐
- nodejs创建http服务器
之前有简单介绍nodejs的一篇文章(http://www.cnblogs.com/fangsmile/p/6226044.html) HTTP服务器 Node内建有一个模块,利用它可以很容易创建基本 ...
- MVC通过路由实现URL重写
public static class WebApiConfig { public static void Register(HttpConfiguration config) { config.Ro ...
- 年度巨献-WPF项目开发过程中WPF小知识点汇总(原创+摘抄)
WPF中Style的使用 Styel在英文中解释为”样式“,在Web开发中,css为层叠样式表,自从.net3.0推出WPF以来,WPF也有样式一说,通过设置样式,使其WPF控件外观更加美化同时减少了 ...
- 【开源毕设】一款精美的家校互动APP分享——爱吖校推 [你关注的,我们才推](持续开源更新3)附高效动态压缩Bitmap
一.写在前面 爱吖校推如同它的名字一样,是一款校园类信息推送交流平台,这么多的家校互动类软件,你选择了我,这是我的幸运.从第一次在博客园上写博客到现在,我一次一次地提高博文的质量和代码的可读性,都是为 ...
- [原] 利用 OVS 建立 VxLAN 虚拟网络实验
OVS 配置 VxLAN HOST A ------------------------------------------ | zh-veth0(10.1.1.1) VM A | | ---|--- ...
- JavaScript事件代理和委托(Delegation)
JavaScript事件代理 首先介绍一下JavaScript的事件代理.事件代理在JS世界中一个非常有用也很有趣的功能.当我们需要对很多元素添加事件的时候,可以通过将事件添加到它们的父节点而将事件委 ...
- js刷新页面方法大全
如何实现刷新当前页面呢?借助js你将无所不能. 1,reload 方法,该方法强迫浏览器刷新当前页面.语法:location.reload([bForceGet]) 参数: bForceGet, ...
- 设计模式之工厂模式VS抽象工厂
一.工厂模式主要是为创建对象提供过渡接口,以便将创建对象的具体过程屏蔽隔离起来,达到提高灵活性的目的. 工厂模式在<Java与模式>中分为三类:1)简单工厂模式(Simple Factor ...
- 萌新笔记——vim命令“=”、“d”、“y”的用法(结合光标移动命令,一些场合会非常方便)
vim有许多命令,网上搜有一堆贴子.文章列举出各种功能的命令. 对于"="."d"."y",我在无意中发现了它们所具有的相同的一些用法,先举 ...
- SpringMVC 数据校验
1.引入jar包 2.配置验证器 <!-- 配置验证器 --> <bean id="myvalidator" class="org.springfram ...