在某些状况下,用户想动态生成一个内容没法预知的公文,换句话说,就是没法事先准备一个固定格式的模板,这种状况就须要开发人员彻底用编码实现从零到图文并茂的Word文档的动态生成功能了。这里的“零”指的就是Word空白文档。编程
那如何实现Word文档的从无到有呢,下面我就把本身实现这一功能的过程介绍一下。网络
例如,我想打开一个Word文档,里面的内容为:标题(粗体、黑体、字体大小为20、居中显示)、第一段内容(内容(略)、字体倾斜、字体大小为十、中文“楷体”、英文“Times New Roman”、红色、最小行间距、左对齐、首行缩进)、第二段内容(内容(略)、字体大小为十二、黑体、1.5倍行间距、左对齐、首行缩进、插入图片)、第三段内容(内容(略)、字体大小为1四、华文彩云、2倍行间距、左对齐、首行缩进)多线程
核心代码:字体
PageOffice.WordWriter.WordDocument doc = new PageOffice.WordWriter.WordDocument(); //设置内容标题 //建立DataRegion对象,PO_title为自动添加的书签名称,书签名称需以“PO_”为前缀,切书签名称不能重复 //三个参数分别为要新插入书签的名称、新书签的插入位置、相关联的书签名称(“[home]”表明Word文档的第一个位置) PageOffice.WordWriter.DataRegion title = doc.CreateDataRegion("PO_title", PageOffice.WordWriter.DataRegionInsertType.After, "[home]"); //给DataRegion对象赋值 title.Value = "C#中Socket多线程编程实例\n"; //设置字体:粗细、大小、字体名称、是不是斜体 title.Font.Bold = true; title.Font.Size = 20; title.Font.Name = "黑体"; title.Font.Italic = false; //定义段落对象 PageOffice.WordWriter.ParagraphFormat titlePara = title.ParagraphFormat; //设置段落对齐方式 titlePara.Alignment = PageOffice.WordWriter.WdParagraphAlignment.wdAlignParagraphCenter; //设置段落行间距 titlePara.LineSpacingRule = PageOffice.WordWriter.WdLineSpacing.wdLineSpaceMultiple; //设置内容 //第一段 //建立DataRegion对象,PO_body为自动添加的书签名称 PageOffice.WordWriter.DataRegion body = doc.CreateDataRegion("PO_body", PageOffice.WordWriter.DataRegionInsertType.After, "PO_title"); //设置字体:粗细、是不是斜体、大小、字体名称、字体颜色 body.Font.Bold = false; body.Font.Italic = true; body.Font.Size = 10; //设置中文字体名称 body.Font.Name = "楷体"; //设置英文字体名称 body.Font.NameAscii = "Times New Roman"; body.Font.Color = Color.Red; //给DataRegion对象赋值 body.Value = "是微软随着VS.net新推出的一门语言。它做为一门新兴的语言,有着C++的强健,又有着VB等的RAD特性。并且,微软推出C#主要的目的是为了对抗Sun公司的Java。你们都知道Java语言的强大功能,尤为在网络编程方面。因而,C#在网络编程方面也天然不甘落后于人。本文就向你们介绍一下C#下实现套接字(Sockets)编程的一些基本知识,以期能使你们对此有个大体了解。首先,我向你们介绍一下套接字的概念。\n"; //建立ParagraphFormat对象 PageOffice.WordWriter.ParagraphFormat bodyPara = body.ParagraphFormat; //设置段落的行间距、对齐方式、首行缩进 bodyPara.LineSpacingRule = PageOffice.WordWriter.WdLineSpacing.wdLineSpaceAtLeast; bodyPara.Alignment = PageOffice.WordWriter.WdParagraphAlignment.wdAlignParagraphLeft; bodyPara.FirstLineIndent = 21; //第二段 PageOffice.WordWriter.DataRegion body2 = doc.CreateDataRegion("PO_body2", PageOffice.WordWriter.DataRegionInsertType.After, "PO_body"); body2.Font.Bold = false; body2.Font.Size = 12; body2.Font.Name = "黑体"; body2.Value = "套接字是通讯的基石,是支持TCP/IP协议的网络通讯的基本操做单元。能够将套接字看做不一样主机间的进程进行双向通讯的端点,它构成了单个主机内及整个网络间的编程界面。套接字存在于通讯域中,通讯域是为了处理通常的线程经过套接字通讯而引进的一种抽象概念。套接字一般和同一个域中的套接字交换数据(数据交换也可能穿越域的界限,但这时必定要执行某种解释程序)。各类进程使用这个相同的域互相之间用Internet协议簇来进行通讯。\n"; PageOffice.WordWriter.ParagraphFormat bodyPara2 = body2.ParagraphFormat; bodyPara2.LineSpacingRule = PageOffice.WordWriter.WdLineSpacing.wdLineSpace1pt5; bodyPara2.Alignment = PageOffice.WordWriter.WdParagraphAlignment.wdAlignParagraphLeft; bodyPara2.FirstLineIndent = 21; //第三段 PageOffice.WordWriter.DataRegion body3 = doc.CreateDataRegion("PO_body3", PageOffice.WordWriter.DataRegionInsertType.After, "PO_body2"); body3.Font.Bold = false; body3.Font.Color = Color.FromArgb(0, 128, 128); body3.Font.Size = 14; body3.Font.Name = "华文彩云"; body3.Value = "套接字能够根据通讯性质分类,这种性质对于用户是可见的。应用程序通常仅在同一类的套接字间进行通讯。不过只要底层的通讯协议容许,不一样类型的套接字间也照样能够通讯。套接字有两种不一样的类型:流套接字和数据报套接字。\n"; PageOffice.WordWriter.ParagraphFormat bodyPara3 = body3.ParagraphFormat; bodyPara3.LineSpacingRule = PageOffice.WordWriter.WdLineSpacing.wdLineSpaceDouble; bodyPara3.Alignment = PageOffice.WordWriter.WdParagraphAlignment.wdAlignParagraphLeft; bodyPara3.FirstLineIndent = 21; //第四段 PageOffice.WordWriter.DataRegion body4 = doc.CreateDataRegion("PO_body4", PageOffice.WordWriter.DataRegionInsertType.After, "PO_body3"); //插入图片(格式为:[image]图片路径[/image]),注意图片路径不要弄错 body4.Value = "[image]images/logo.png[/image]"; //body4.Value = "[word]doc/1.doc[/word]";//还可嵌入其余Word文件 PageOffice.WordWriter.ParagraphFormat bodyPara4 = body4.ParagraphFormat; bodyPara4.Alignment = PageOffice.WordWriter.WdParagraphAlignment.wdAlignParagraphCenter; PageOfficeCtrl1.SetWriter(doc); PageOfficeCtrl1.ServerPage = "pageoffice/server.aspx"; PageOfficeCtrl1.SaveFilePage = "savedoc.aspx"; PageOfficeCtrl1.WebOpen(Server.MapPath("doc/blank.doc"), PageOffice.OpenModeType.docNormalEdit, "张佚名");
请参考PageOffice产品开发包中Samples4示例的演示:
3、七、彻底编程实现动态生成Word文件(专业版、企业版)编码
总结:
PageOffice组件不但能够控制Word中的文本内容,还能够控制文字的大小、颜色、字体名称、粗体、斜体,段落的行间距、首行缩进、对齐方式等,也能够编程插入图片或其余Word文档。学校教育机构也常常遇到这一需求,好比在出考试卷时,利用PageOffice开发平台的Word内容动态填充功能,实现随机抽取题库,内容从无到有,能够很容易的制做和生成试卷。.net