前言
在本文中介紹Aspose.Cells,讀者也可參考筆者之前的文章Aspose.Words元件介紹(上)、Aspose.Words元件介紹(下)及Aspose.BarCode元件介紹;Aspose.Cells元件顧名思意是對應到試算表的功能,可以藉由物件模式操控試算表物件,並將最後的結果產生為Microsoft Excel檔案。
安裝Aspose.Cells元件
Aspose.Cells元件可以由此下載試用版,在安裝好後可以在其安裝目錄找到Aspose.Cells.dll檔案可以於.NET專案當中引用,以筆者而言的目錄是:
C:\Program Files\Aspose\Aspose.Words\Bin\net2.0\Aspose.Cells.dll C:\Program Files\Aspose\Aspose.Words\Bin\net1.1\Aspose.Cells.dll |
讀者若是只想藉由此文瞭解Aspose.Cells的功能及用法,可以由上述網站下載試用版,但若是想於Smart School當中開發Plugin,讀者建議您可以使用Smart School程式當中所附的版本,才不會在掛Plugin到Smart School時有版本的衝突。  讀者可以在 SmartSchool客服網的首頁右上方下載Smart School檔案,在解開之後可以先執行ischool.exe檔案來檢查是否有新版,在確認為最新版後可以在其下kernal目錄找到Aspose.Cells.dll元件,然後再依下列方式來加入至專案當中。 步驟一:於專案中點選Add Reference
步驟二:選取Aspose.Word元件  步驟三:於程式碼中引用Aspose.Word元件 步驟四:編譯是否成功引用 建立Workbook物件 接下來我們用範例的方式,由淺入深來介紹Aspose.Cells的使用方式,首先看到如何建立Workbook;底下筆者列出完整的程式碼供作參考。 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; namespace AsposeCells { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void btnCells_Click(object sender, EventArgs e) { //建立活頁簿物件 Aspose.Cells.Workbook ScoreWorkBook = new Aspose.Cells.Workbook(); //利用saveFileDialog物件讓使用者選擇儲存檔案位置及名稱 if (saveFileDialog1.ShowDialog()==System.Windows.Forms.DialogResult.OK ) { //將活頁簿檔案儲存至檔案位置及名稱 ScoreWorkBook.Save(saveFileDialog1.FileName); //運用Process物件開啟檔案 System.Diagnostics.Process.Start(saveFileDialog1.FileName); } } } } |
建立Worksheet物件 在本小段中分享有了Workbook物件後如何建立Worksheet,有兩種方式一種是直接新增空白Worksheet,另一種方式是複製已存在之Worksheet。
private void btnCells_Click(object sender, EventArgs e) { Aspose.Cells.Workbook ScoreWorkBook = new Aspose.Cells.Workbook(); ScoreWorkBook.Worksheets[0].Name = "Test01"; //新增空白活頁簿 ScoreWorkBook.Worksheets.Add(); //複製第一個活頁簿 ScoreWorkBook.Worksheets.AddCopy(0); if (saveFileDialog1.ShowDialog()==System.Windows.Forms.DialogResult.OK ) { ScoreWorkBook.Save(saveFileDialog1.FileName); System.Diagnostics.Process.Start(saveFileDialog1.FileName); } } |
填入Worksheet值 我們在有了Workbook及Worksheet的觀念後,接下來要在Worksheet當中填入值,我們可以運用在Worksheet中的 Cells物件方法來放值;Cells的物件存取第一個值為列,第二個值為行,然後可用PutValue方法放實際的值,PutValue方法共有七種形 式來放不同型態的值,讀者可在出現程式碼提示時選取。
private void btnCells_Click(object sender, EventArgs e) { Aspose.Cells.Workbook ScoreWorkBook = new Aspose.Cells.Workbook(); ScoreWorkBook.Worksheets[0].Name = "Test01"; //運用Worksheet的Cells物件PutValue方法來放值 ScoreWorkBook.Worksheets[0].Cells[0, 0].PutValue("test"); if (saveFileDialog1.ShowDialog()==System.Windows.Forms.DialogResult.OK ) { ScoreWorkBook.Save(saveFileDialog1.FileName); System.Diagnostics.Process.Start(saveFileDialog1.FileName); } } |
運用樣版 在會了基本的Aspose.Cells的操作後,若是要在其中劃複雜的樣式,以及相當繁雜的值,運用程式會相當的困難;筆者會建議用樣版的方式將固定的文字及樣式先行在Excel中打好後然後在程式當中填入從資料庫所取出的值。
樣版的使用相當簡單,但是卻是相當重要的一部份,相信會運用Aspose.Cells元件的程式設計師大多是從資料庫當中存取資料放置到試算表當中,所以專注於資料庫資料的轉換是非常重要的,一些固定的文字及樣式就先在樣版當中做好。
Aspose.Cells所使用的樣版就是Excel的樣版,而Excel樣版也就是一般的Excel檔案但是存成xlt的副檔案;底下以圖解的方式來說明。 步驟一:編輯樣版 首先我們開啟Excel來編輯樣版,先開啟一般新的xls檔案即可。 步驟二:存成樣版格式(xlt)  步驟三:運用Aspose.Cells元件引用樣版 要引用樣版,只需要在建立Workbook物件後,再用Open方法開啟樣版即可,這樣Workbook內即會引用樣版內容。
private void btnCells_Click(object sender, EventArgs e) { Aspose.Cells.Workbook ScoreWorkBook = new Aspose.Cells.Workbook(); ScoreWorkBook.Open(Application.StartupPath + "\\樣版.xlt"); if (saveFileDialog1.ShowDialog()==System.Windows.Forms.DialogResult.OK ) { ScoreWorkBook.Save(saveFileDialog1.FileName); System.Diagnostics.Process.Start(saveFileDialog1.FileName); } } |
複製區塊 我們常會有需求需要設定區塊的樣式或是複製區塊,此時我們可以用Range物件來達成;以下的程式碼會複製0至16列的區塊到17至33列。
仔細檢視一下Range物件,發覺要建立它是由Cells物件的CreateRange所產生,而CreateRange方法最常用的為第二種及第三種方法。
- 第二種方法:先看到最後一個參數isVertical,若是為true則firstIndex代表起始欄,而number則代表欄數;若為false則firstIndex代表起始列,而number則代表列數。
- 第三種方法:第一個參數為起始列而第三個參數為自起始列開始算的列數、第二個參數為起始欄而第四個參數為自起始欄開始算的欄數。
 private void btnCells_Click(object sender, EventArgs e) { Aspose.Cells.Workbook ScoreWorkBook = new Aspose.Cells.Workbook(); ScoreWorkBook.Open(Application.StartupPath + "\\樣版.xlt"); Aspose.Cells.Range MyRange = ScoreWorkBook.Worksheets[0].Cells.CreateRange(0, 16, false); //運用Range的Copy方法將另一個Range的內容複製 ScoreWorkBook.Worksheets[0].Cells.CreateRange(17,33,false).Copy(MyRange); if (saveFileDialog1.ShowDialog()==System.Windows.Forms.DialogResult.OK ) { ScoreWorkBook.Save(saveFileDialog1.FileName); System.Diagnostics.Process.Start(saveFileDialog1.FileName); } } |
分頁符號 在列印多筆資料如學生成績證明單時,需要將每筆資料後面加上分頁符號,此時我們可以運用Worksheet的HPageBreaks物件來加入水平分頁符號,或是利用VPageBreaks物件來加入垂直分頁符號。 private void btnCells_Click(object sender, EventArgs e) { Aspose.Cells.Workbook ScoreWorkBook = new Aspose.Cells.Workbook(); ScoreWorkBook.Open(Application.StartupPath + "\\樣版.xlt"); Aspose.Cells.Range MyRange = ScoreWorkBook.Worksheets[0].Cells.CreateRange(0, 16, false); ScoreWorkBook.Worksheets[0].HPageBreaks.Add(16, 0); ScoreWorkBook.Worksheets[0].Cells.CreateRange(17,33,false).Copy(MyRange); if (saveFileDialog1.ShowDialog()==System.Windows.Forms.DialogResult.OK ) { ScoreWorkBook.Save(saveFileDialog1.FileName); System.Diagnostics.Process.Start(saveFileDialog1.FileName); } } |
|
|