期刊/Aspose.Cells元件介紹

出自台灣中等學校資訊管理人學會

跳轉到: 導航, 搜索

目錄

[編輯] 前言

在本文中介紹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時有版本的衝突。

2771440508_b9d3d99cc3_o.png

讀者可以在SmartSchool客服網的首頁右上方下載Smart School檔案,在解開之後可以先執行ischool.exe檔案來檢查是否有新版,在確認為最新版後可以在其下kernal目錄找到Aspose.Cells.dll元件,然後再依下列方式來加入至專案當中。

[編輯] 步驟一:於專案中點選Add Reference

2770629045_1d17e94556_o.png

[編輯] 步驟二:選取Aspose.Word元件

2770645487_14b4a6ae7b_o.png

[編輯] 步驟三:於程式碼中引用Aspose.Word元件

2770666575_9e62634401_o.png

[編輯] 步驟四:編譯是否成功引用

2550037564_76c3e6c8ff_o.png


[編輯] 建立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方法共有七種形式來放不同型態的值,讀者可在出現程式碼提示時選取。

2774924666_2992ef6582_o.png

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檔案即可。

2774386437_b940cb1bf7.jpg

[編輯] 步驟二:存成樣版格式(xlt)

2774411551_41fd1cd48d.jpg

[編輯] 步驟三:運用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則代表列數。

2774713315_121fe6628b_o.png

  • 第三種方法:第一個參數為起始列而第三個參數為自起始列開始算的列數、第二個參數為起始欄而第四個參數為自起始欄開始算的欄數。

2774713423_c20f08e8ff_o.png

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);
    }
}