.NET讀寫Excel工具Spire.Xls使用 重量級的Excel圖表功能(5)
前一篇文章:“.NET讀寫Excel工具Spire.Xls使用(4)對數(shù)據(jù)操作與控制”給大家介紹了Spire.XLS對數(shù)據(jù)的控制相關(guān)功能,這一篇給大家介紹Spire.XLS最大的亮點所在,C#控制Excel生成圖表。將介紹C#生成不同類型圖表的方法,并介紹Excel圖表的相關(guān)操作,如調(diào)整大小,保存圖片等操作的方法。
1.Excel中的圖表
我們生活的這個世界是豐富多彩的,幾乎所有的知識都來自于視覺。也許無法記住一連串的數(shù)字,以及它們之間的關(guān)系和趨勢。但是可以很輕松地記住一幅圖畫或者一個曲線。因此由于使用圖表,會使得用Excel編制的工作表更易于理解和交流。Excel具有許多高級的制圖功能,同時使用起來也非常簡便。在本章中,我們將學習到建立一張簡單的圖表,再進行修飾,使圖表更加精致,以及如何為圖形加上背景、圖注、正文等等。Excel中圖表是指將工作表中的數(shù)據(jù)用圖形表示出來。例如:將各地區(qū)每周的銷售用柱形圖顯示出來,見圖8-1的顯示。圖表可以使數(shù)據(jù)更加有趣、吸引人、易于閱讀和評價。它們也可以幫助我們分析和比較數(shù)據(jù)[1]。如下圖所示的圖表,看數(shù)據(jù)多累,看圖表就一目了然。。。

2.C#創(chuàng)建Excel圖表方法
2.1 Spire.Xls的圖表類
在Spire.Xls組件中,生成圖表已經(jīng)非常簡化了。只需要一個核心的Chart類,就可以增加圖表并進行輔助的一些設(shè)置。Spire.Xls定義支持的圖表類型,在枚舉ExcelChartType類型中。目前一共有74種類型,可以使用對象瀏覽器大概看一下:

在實際的使用過程中,添加Excel圖表主要有以下幾個過程:
1.給指定的Sheet添加需要的Excel圖表的類型;
2.設(shè)置圖表所需要的數(shù)據(jù)范圍;
3.設(shè)置圖表的位置以及標題;
4.設(shè)置系列圖表以及坐標軸的值。
下面將使用C#和Spire.Xls組件做一個生成餅狀圖和折線圖的例子,看看基本的使用過程。
2.2 生成餅狀圖
在工作中如果遇到需要計算總費用或金額的各個部分構(gòu)成比例的情況,一般都是通過各個部分與總額相除來計算,而且這種比例表示方法很抽象,我們可以使用一種餅狀圖表工具,能夠直接以圖形的方式直接顯示各個組成部分所占比例,在Excel中可以很方便的制作餅狀圖表。Spire.Xls中餅狀圖類型是ExcelChartType類中的Pie和Pie3D,為了效果很好看,我們可以使用3D的類型。
//創(chuàng)建餅狀圖表 Chart chart = sheet.Charts.Add(ExcelChartType.Pie); //設(shè)置圖表的數(shù)據(jù)范圍,使用的也是和前面單元格獲取的Range對象 chart.DataRange = sheet.Range["B2:B5"]; chart.SeriesDataFromRange = false; //設(shè)置圖表的位置 chart.LeftColumn = 1;//圖表左邊列 chart.TopRow = 6;//圖表上部的行 chart.RightColumn = 6;//圖表右邊列 chart.BottomRow = 18;//圖表底部行 //圖表標題 chart.ChartTitle = "餅形圖例子"; //設(shè)置字體 chart.ChartTitleArea.IsBold = true; chart.ChartTitleArea.Size = 12; //初始化圖例 Spire.Xls.Charts.ChartSerie cs = chart.Series[0]; //圖表的標簽?zāi)夸洈?shù)據(jù) cs.CategoryLabels = sheet.Range["A2:A5"]; //圖表的主要值,也就是餅狀圖的數(shù)據(jù) cs.Values = sheet.Range["B2:B5"];
如下所示的效果:

2.3 生成折線圖
線圖是用直線段將各數(shù)據(jù)點連接起來而組成的圖形,以折線方式顯示數(shù)據(jù)的變化趨勢。折線圖可以顯示隨時間(根據(jù)常用比例設(shè)置)而變化的連續(xù)數(shù)據(jù),因此非常適用于顯示在相等時間間隔下數(shù)據(jù)的趨勢。在折線圖中,類別數(shù)據(jù)沿水平軸均勻分布,所有值數(shù)據(jù)沿垂直軸均勻分布。在折線圖中,數(shù)據(jù)是遞增還是遞減、增減的速率、增減的規(guī)律(周期性、螺旋性等)、峰值等特征都可以清晰地反映出來。所以,折線圖常用來分析數(shù)據(jù)隨時間的變化趨勢,也可用來分析多組數(shù)據(jù)隨時間變化的相互作用和相互影響。
使用Spire.Xls繪制折線圖過程和上面的類型。但如果圖例較多,就是設(shè)置稍微復(fù)雜一點。看一個例子:
//給Sheet對象添加一個圖表對象,可以直接添加類型,也可以單獨用ChartType賦值來添加
Chart chart = sheet.Charts.Add();
chart.ChartType = ExcelChartType.Line3D;
//設(shè)置圖表的數(shù)據(jù)范圍
chart.DataRange = sheet.Range["A1:E5"];
//設(shè)置圖表的保存位置,這個基本都差不多
chart.LeftColumn = 1;
chart.TopRow = 6;
chart.RightColumn = 7;
chart.BottomRow = 22;
//圖表標題
chart.ChartTitle = "折線圖例子";
//設(shè)置字體加粗和大小
chart.ChartTitleArea.IsBold = true;
chart.ChartTitleArea.Size = 12;
//設(shè)置橫坐標的標題
chart.PrimaryCategoryAxis.Title = "月份";
chart.PrimaryCategoryAxis.Font.IsBold = true;
chart.PrimaryCategoryAxis.TitleArea.IsBold = true;
//設(shè)置縱坐標,也就是值 的標題
chart.PrimaryValueAxis.Title = "銷售額";
chart.PrimaryValueAxis.HasMajorGridLines = false;
chart.PrimaryValueAxis.TitleArea.TextRotationAngle = 90;
chart.PrimaryValueAxis.MinValue = 1000;
chart.PrimaryValueAxis.TitleArea.IsBold = true;
//循環(huán)繪制不同國家的銷售額折線圖,有多個系列
foreach (Spire.Xls.Charts.ChartSerie cs in chart.Series)
{
cs.Format.Options.IsVaryColor = true;
cs.DataPoints.DefaultDataPoint.DataLabels.HasValue = true;
}
實際的效果和原始數(shù)據(jù)如下圖所示:

其他圖表的過程都類似,可以在幫助文檔中找到相關(guān)例子。
3.C#設(shè)置Excel圖表
3.1 將圖表保存為圖片
Excel生成的圖表是可以保存為圖片的。在Spire.XLS中,這些操作已經(jīng)變得非常簡單。首先獲取Workbook對象的SaveChartAsImage方法獲取指定sheet中的所有圖表。然后循環(huán)將圖片對象依次保存即可,下面是主要代碼:
Workbook workbook = new Workbook();
workbook.LoadFromFile("chart.xlsx", ExcelVersion.Version2010);
Worksheet sheet=workbook.Worksheets[0];
Image[] imgs = workbook.SaveChartAsImage(sheet);
for (int i = 0; i < imgs.Length; i++)
{
imgs[i].Save(string.Format("img-{0}.png", i), ImageFormat.Png);
}
3.2 位置調(diào)整
Excel中的圖表的位置已經(jīng)在前面介紹過,還有一個可以調(diào)整大小的功能。使用Width和Height方法直接設(shè)置大小即可。
chart.Width = 400; chart.Height = 250;
上面就是一些常規(guī)的操作和使用,總的來說還是比較簡單,如果需要比較細致的,可以查看API文檔,根據(jù)方法來所要的功能來找,實現(xiàn)起來也會很容易的。
[1].http://baike.haosou.com/doc/5449555-5687924.html
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
asp.net實現(xiàn)在非MVC中使用Razor模板引擎的方法
這篇文章主要介紹了asp.net實現(xiàn)在非MVC中使用Razor模板引擎的方法,較為詳細的分析了Razor模板引擎的使用技巧,需要的朋友可以參考下2015-06-06
ASP.NET GridView中加入RadioButton不能單選的解決方案
這篇文章主要介紹了ASP.NET GridView中加入RadioButton不能單選的解決方案,希望大家閱讀完本文有所收獲。2015-09-09

