[.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 ...
随机推荐
- Python高手之路【六】python基础之字符串格式化
Python的字符串格式化有两种方式: 百分号方式.format方式 百分号的方式相对来说比较老,而format方式则是比较先进的方式,企图替换古老的方式,目前两者并存.[PEP-3101] This ...
- CoreCRM 开发实录——想用国货不容易
昨天(2016年12月29日)发了开始开发的文章.本来晚上准备在 Coding.NET 上添加几个任务开始搞起了.可是真的开始用的时候才发现:Coding.NET 的任务功能只针对私有的任务开放.我想 ...
- 奇葩问题-TextView无法获取值
问题场景 前几天写一个界面的时候,遇到一个非常奇葩的问题.app第一次安装的时候,这里针对用户第一次安装的时候,后来是不会出现这个问题了.我明明是对某个界面的一个textview赋值了,而且服务端也返 ...
- javascript设计模式:策略模式
前言 策略模式有效利用组合.委托.多态等技术和思想,可以有效避免多重条件选择语句. 策略模式对开放-封闭原则提供了很好的支持,将算法封装在strategy中,使得他们易于切换.理解.扩展. 策略模式中 ...
- Phantomjs+Nodejs+Mysql数据抓取(2.抓取图片)
概要 这篇博客是在上一篇博客Phantomjs+Nodejs+Mysql数据抓取(1.抓取数据) http://blog.csdn.net/jokerkon/article/details/50868 ...
- 无法访问org.springframework.core.NestedRuntimeException 找不到org.springframework.core.NestedRuntimeException的类文件
在学习springAOP时,出现如下异常: 无法访问org.springframework.core.NestedRuntimeException 找不到org.springframework.cor ...
- 【夯实Nginx基础】Nginx工作原理和优化、漏洞
本文地址 原文地址 本文提纲: 1. Nginx的模块与工作原理 2. Nginx的进程模型 3 . NginxFastCGI运行原理 3.1 什么是 FastCGI ...
- 关于SMARTFORMS文本编辑器出错
最近在做ISH的一个打印功能,SMARTFORM的需求本身很简单,但做起来则一波三折. 使用环境是这样的:Windows 7 64bit + SAP GUI 740 Patch 5 + MS Offi ...
- 一个简单的网站web项目的详解
有不对的术语,或者不好理解的部分,欢迎大家批评指正,谢谢大家! 近期做的网站web项目,实现登录功能,查询功能.首先把这个项目分为几个模块来处理,当前用户模块,历史用户模块,历史记录模块,数据库模块, ...
- 最近在玩linux时 yum 遇到了问题
主要是软件源出现了问题 我做的方式可能比较粗暴 ls -l /etc/yum.repos.d/ /*查看软件源*/ rm -rf /etc/yum.repos.d/ /*全删了*/ m ...