Aspose.Words元件介紹(上)
From ischool developer's network (Redirected from Aspose.Word元件介紹(上))Jump to: navigation, searchContents[ hide] 1前言 2安裝Aspose.Word元件 2.1步驟一:於專案中點選Add Reference 2.2步驟二:選取Aspose.Word元件 2.3步驟三:於程式碼中引用Aspose.Word元件 2.4步驟四:編譯是否成功引用 3物件模型基本觀念 3.1物件模型圖 3.2重要物件說明 4範例一:Document類別 5範例二:DocumentBuilder類別 前言本文中介紹Aspose的Word元件使用方法,此元件在開發ischool的擴充報表時會運用到;為在ischool中支援的元件,以下為此元件的特色。
不需安裝Microsoft Word軟體,就可運用內建的物件模型來讀取、編輯及產生Word文件。 內建的物件模型支援大部份Word功能,例如文字格式操作、表格、圖片、合併列印...等。 支援許多的檔案格式,如DOC、DOCX、RTF、WML、HTML、PDF,算是相當的完善,而PDF格式需要再搭配使用Aspose.PDF元件。 讀入及輸出檔案的效率高。在Office軟體當中每個都有提供物件模型,也能在在.NET平台當中引用使用,那為何要多花費用去買Aspose.Word元件來使用呢?在Aspose的說明書中針對這點特別強調,底下摘錄其重點,詳細可參考Aspose的說明書:
穩定性:若是要安裝Microsoft Word軟體才能輸出Word檔案,那麼可能會因為使用者安裝的版本不同,例如Office XP、Office 2007而導致產生出來的檔案格式不一致;這對使用者及軟體開發人員都會相當困惱。 速度:在.NET當中用Microsoft Word的物件模型,相當於模擬使用Word軟體;而Aspose的元件是直接用程式產生Word格式的檔案,在快速上自然會快上許多。 安裝Aspose.Word元件Aspose.Word元件可以由此下載試用版,在安裝好後可以在其安裝目錄找到Aspose.Words.dll檔案可以於.NET專案當中引用,以筆者而言的目錄是:
C:\Program Files\Aspose\Aspose.Words\Bin\net2.0\Aspose.Words.dll C:\Program Files\Aspose\Aspose.Words\Bin\net1.1\Aspose.Words.dll底下以圖示的方式來說明加入的步驟。
步驟一:於專案中點選Add Reference 步驟二:選取Aspose.Word元件 步驟三:於程式碼中引用Aspose.Word元件 步驟四:編譯是否成功引用 物件模型基本觀念在測試能夠正確引用Aspose.Word後,接下來我們看到物件模型的設計,所有元件幾乎都繼承至Node元件擁有共通的屬性;Node往下分為兩大類,一大類為直接繼續至Node元件,另一大類為CompositeNode,CompositeNode與Node的差別在於前者可以包含其它的Node元件,例如表格元件就是很典型例子,表格元件(Table)可以包含列元件(Row),列元件裡面又可以再包含表格元件。
物件模型圖Aspose.Word的物件模型設計,是很典型在DesignPattern當中的Composite Pattern,有興趣的讀者可以至Google搜尋,相信會很有收穫。
重要物件說明底下以表格的方式來說明重要的物件用途。
Document 代表Word文件物件,此物件會包含許多文件的元件,如段落(Section)、內文(Body)…等等。 Section 代表Word當中的一個節。 Body 代表在節裡的主要文字。 HeaderFooter 代表在節裡的段落首及段落尾。 Comment 代表Word文件裡的註解。 Shape 代表在Word文件裡的影像、圖形或是OLE物件。 GroupShape 一群Shape物件的組合。 Paragraph 代表一小段文字。 Table 代表Word文字中的表格。 Row 代表表格的列。 Cell 代表表格的欄位。 BookmarkStart 代表書籤,用來標註書籤的開始。 BookmarkEnd 代表書籤,用來標註書籤的結束。 範例一:Document類別在安裝好了Aspose.Word元件後,並且也針對其物件模型做基本的介紹,接下來我們來針對重要的物件來做實驗,以瞭解這些物件的用法。
一個Document 物件代表一份Microsoft Word文件,Document 物件包含了整個文件內容、格式、樣式、自定屬性,Document 物件可以儲存到檔案或是一個 Stream 物件,也可透過 Brwoser 傳送到 Client;如果想建立文件、使用樣版進行合併列印、讀取 Word 文件內容…,Document 類別是一個起點。
privatevoid DoSomething_Click(Objectsender,EventArgs e){ Document doc = new Document(filename); }Document的來源可以是一個Word檔案、一個Stream物件,或是加密的文件。
以下來源為Word檔案。 privatevoid DoSomething_Click(Objectsender,EventArgs e){ String filename="C: \\Word.doc"; Document doc = new Document(filename); }以下來源為Stream物件。 privatevoid DoSomething_Click(Objectsender,EventArgs e){ System.IO.FileStream filestream = newSystem.IO.FileStream("C: \\Word.doc",System.IO.FileMode.Open); Document doc = new Document(filestream); }以下來源為加密的Word檔案,要留意的是需註明檔案型態為LoadFormat.Doc,最後一個參數為文件的密碼名稱。 privatevoid DoSomething_Click(Objectsender,EventArgs e){ Document doc = new Document("C: \\Word.doc", LoadFormat.Doc, "Password"); } 範例二:DocumentBuilder類別我們手中有了Document物件之後,接下來會想在文件裡面動些手腳,例如加入文字或是表格,此時需借助DocumentBuilder類別來處理文件內容。
usingSystem; usingSystem.Collections.Generic; usingSystem.ComponentModel; usingSystem.Data; usingSystem.Drawing; usingSystem.Text; usingSystem.Windows.Forms; using Aspose.Words; namespace AsposeWord {public partial class Form1 : Form {public Form1(){ InitializeComponent(); } privatevoid DoSomething_Click(object sender, EventArgs e){ //建立Document物件 Document doc = new Document(); //建立DocumentBuilder物件 DocumentBuilder builder = new DocumentBuilder(doc); //將DocumentBuilder的顏色設定為紅色 builder.Font.Color = System.Drawing.Color.Red; //將DocumentBuilder的顏色設定為雙底線 builder.Font.Underline = Underline.Double; //新增文字 builder.Writeln("臺灣中等學校資訊管理人學會"); //新增超連結 builder.InsertHyperlink("tsima","http://www.tsima.org.tw",false); //將上述設定的格式清除 builder.Font.ClearFormatting(); //將文件存檔 doc.Save("Test.doc"); }}} http://dev.ischool.com.tw/wiki/index.php/Aspose.Word%E5%85%83%E4%BB%B6%E4%BB%8B%E7%B4%B9%EF%BC%88%E4%B8%8A%EF%BC%89