在某些狀況下,用戶想動態生成一個內容沒法預知的公文,換句話說,就是沒法事先準備一個固定格式的模板,這種狀況就須要開發人員徹底用編碼實現從零到圖文並茂的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