第241期 / November 6, 2017

研發新視界

分享到臉書!分享到維特!分享到噗浪!分享到Google+!分享到微博!轉寄友人友善列印

使用Aspose.Cells產出帶有浮水印的EXCEL文件

作者/李揚德

[發表日期:2017/11/6]

前言

在EXCEL的檔案中加入浮水印在EXCEL軟體上直接操作是一件輕而易舉的事情,雖然它不像在WORD中有直接提供使用者加入浮水印的功能,但我們還是可以透過其他方法來將浮水印嵌入EXCEL的檔案中。可是當我們要用程式產出EXCEL檔案時,因為它不像WORD有內建浮水印功能,所以在程式中可以運用的各種套件中都沒有提供浮水印的API,但在Aspose.Cells中,提供了文字藝術師的API讓我們可以使用,並且可以透過API設定透明度來達到浮水印的效果。

Aspose.Cells提供了豐富的API方便我們在程式中產出各式各樣的EXCEL文件,它可以讓我們在程式撰寫中可以透過呼叫各式各樣的API去操作EXCEL中的各項功能,例如:圖表製作、文字藝術師、支援從程式中的多種資料結構的資料直接將其轉入EXCEL檔案中、安全性設定...等,像這次要介紹的浮水印產出就是透過Aspose.Cells去使用EXCEL的文字藝術師功能再透過色彩及透明度的調整,將它模擬成浮水印的樣式。Aspose.Cells讓程式開發中產出EXCEL檔案更加便利及簡化,並且可以做出更多的操作,來符合我們程式的需求。

Aspose.Cells介紹

Aspose.Cells是一套功能強大的EXCEL檔案處理套件,它是由Aspose公司開發,該公司開發了一系列的檔案處理套件,可以用來產出各種檔案,例如:Word、PDF...等,如圖一。


《圖一》ASPOSE 開發的相關套件


Aspose.Cells這一套付費套件,但有提供免費評估版本可以試用,評估版會在產出的EXCEL中加入一個Evaluation Warning的worksheet如圖三,裡面會提示這是評估使用。Aspose.Cells是一套跨平台的開發套件,它支援了.net、JAVA、android...等各種平台,如圖二,本篇就是使用Aspose.Cells for .NET來介紹這套軟體如何產出一份具有浮水印的EXCEL文件。Aspose.Cells擁有豐富的功能,它提供了程式開發人員將資料輸入、輸出,並且讓開發者透過API可以編輯檔案、控制版面、導入圖片、圖表或是計算複雜的公式,也支援程式中多種資料結構,例如:DataTable、DataView、Array,可以將資料直接導入、導出至檔案,可以將檔案輸出成多種格式,例如:.xls、.xlsx、.cvs、.pdf...等,如圖四,並且在檔案存成.xlsx時,Aspose.Cells提供了安全選項,可以支援檔案的加密、解密,並且可以依照對象的不同,隱藏不同的worksheet來保護檔案。Aspose.Cells相較於其他相關的套件,它提供了更豐富的功能,並且有很多方便的功能可以供開發者應用。


《圖二》可使用Aspose.Cell的平台



《圖三》Evaluation Warning的worksheet



《圖四》Aspose.Cell for .NET 可輸入輸出的檔案型態


在EXCEL中加入浮水印的方法

在EXCEL中並沒有直接提供像是WORD中的浮水印功能,在EXCEL嵌入浮水印的方法有很多種,例如:

一、插入圖片到頁首頁尾

這個方法是透過設定頁首頁尾插入圖片後,在圖片的設定選項中將色彩刷淡來做出浮水印如圖五,在檔案列印時才會一同被印出來,或是將檢視模式改成整頁模式圖六,在標準檢視模式下我們是看不到浮水印的。


《圖五》頁首頁尾插入圖片後,將圖片色彩設定為刷淡



《圖六》整頁模式下的浮水印


二、利用文字藝術師來模仿浮水印的效果

本篇介紹的Aspose.Cells就是利用這個方式來產生浮水印,在Aspose.Cells中,可以直接透過API來做到EXCEL中的文字藝術師功能並且透過修改顏色和透明度就可以把文字藝術師產出的文字模仿成浮水印,在下一段,會介紹如何使用Aspose.Cells來達成以下的步驟。

這個方法是透過EXCEL中的文字藝術師來產生一組當作浮水印的文字圖七,再透過設定文字效果格式中的對文字色彩填滿如圖八,和外框色彩填滿如圖九中的透明度選項來將文字淡化變成浮水印的樣子圖十。這個方法就不像前個方法只能在某些狀況下可以見浮水印,我們可以依照不同的需求選用。


《圖七》文字藝術師產生一組文字



《圖八》設定文字填滿的透明



《圖九》設定文字外框的透明



《圖十》浮水印產生


三、使用Aspose.Cells產出具有浮水印的EXCEL檔案實作

在前一段介紹的以文字藝術師這個功能來產生浮水印的方法,就是在Aspose.Cells所使用的方法,在本段將以ASP.NET C#使用Aspose.Cells來實作出一份具有浮水印的文件,下面是實作的範例程式碼與相關說明:
  • 宣告樣板所在的路徑,圖十一是一個這裡範例帶入的模板

    String dataDir = Server.MapPath("~/template/watermark.xls");


    《圖十一》範例模板


  • 宣告檔案存檔時的檔名

    String fileName ="浮水印測試"+ ".xls";


  • 宣告浮水印的內容

    string strWaterMark = "日期:" + (DateTime.Now.ToString("yyyyMMddHHmm"))
    +"\n"+ "Aspose.Cells 浮水印";


  • 將樣板載入到FileStream中

    FileStream fstream = new FileStream(dataDir, FileMode.Open,
    FileAccess.Read);


  • 將樣板套用到Workbook物件(EXCEL)中

    Aspose.Cells.Workbook workbook = new Aspose.Cells.Workbook(fstream);


  • 設定文字藝術師的色彩填充模式

    Aspose.Cells.Drawing.Shape wordart = worksheet.Shapes.AddTextEffect(MsoPresetTextEffect.TextEffect1, strWaterMark, "Arial Black", 80, false, true, 1, 8, 1, 1, 130, 500);

    表一是AddTextEffect相關參數說明:
    public Shape AddTextEffect(MsoPresetTextEffect effect, string text, string fontName, int size, bool fontBold, bool fontItalic, int upperLeftRow, int top, int upperLeftColumn, int left, int height, int width);


    《表一》AddTextEffect


  • 設定文字藝術師的色彩填充模式

    FillFormat wordArtFormat = wordart.Fill;


  • 設定文字色彩

    wordArtFormat.SetOneColorGradient(Color.Gray, 0,
    GradientStyleType.Horizontal, 1);

    表二是SetOneColorGradient的相關參數:
    public void SetOneColorGradient(Color color, double degree,
    GradientStyleType style, int variant);


    《表二》SetOneColorGradient


  • 設定透明度

    wordArtFormat.Transparency = 0.9;


  • 消除邊線

    LineFormat lineFormat = wordart.Line;
    lineFormat.Weight= 0.0;


  • 檔案儲存並下載

    workbook.Save(Response, Server.UrlEncode(fileName),
    Aspose.Cells.ContentDisposition.Attachment, new XlsSaveOptions());


  • 最後產出帶有浮水印EXCEL檔案如圖十二


    《圖十二》最後由程式產生出來的帶有浮水印的EXCEL檔案


結論

Aspose.Cells雖然它是一套需要付費的開發套件,但比起其他的開發套件提供了更多的功能,讓我們可以配合程式開發的需求來產出各式各樣的EXCEL檔案,大部分在EXCEL軟體中的功能我們都能透過Aspose.Cells來實作出來,在它的官方提供的Developer Guide網站中,有介紹更多的Aspose.Cells的功能及運用,提供程式開發者參考使用。

(作者目前服務於凌群電腦軟體事業群,專長為ASP.NET 、C# 程式開發及JAVA 程式開發)
(本文轉載自RUN!PC)

參考資料

1.Aspose官方網站

2.Add WordArt Watermark to Worksheet

3.Aspose.Cells for .NET Developer Guide