前一篇文章:“.NET讀寫(xiě)Excel工具Spire.Xls使用(4)對(duì)數(shù)據(jù)操作與控制”給大家介紹了Spire.XLS對(duì)數(shù)據(jù)的控制相關(guān)功能,這一篇給大家介紹Spire.XLS最大的亮點(diǎn)所在,C#控制Excel生成圖表。將介紹C#生成不同類(lèi)型圖表的方法,并介紹Excel圖表的相關(guān)操作,如調(diào)整大小,保存圖片等操作的方法。
1.Excel中的圖表
我們生活的這個(gè)世界是豐富多彩的,幾乎所有的知識(shí)都來(lái)自于視覺(jué)。也許無(wú)法記住一連串的數(shù)字,以及它們之間的關(guān)系和趨勢(shì)。但是可以很輕松地記住一幅圖畫(huà)或者一個(gè)曲線。因此由于使用圖表,會(huì)使得用Excel編制的工作表更易于理解和交流。Excel具有許多高級(jí)的制圖功能,同時(shí)使用起來(lái)也非常簡(jiǎn)便。在本章中,我們將學(xué)習(xí)到建立一張簡(jiǎn)單的圖表,再進(jìn)行修飾,使圖表更加精致,以及如何為圖形加上背景、圖注、正文等等。Excel中圖表是指將工作表中的數(shù)據(jù)用圖形表示出來(lái)。例如:將各地區(qū)每周的銷(xiāo)售用柱形圖顯示出來(lái),見(jiàn)圖8-1的顯示。圖表可以使數(shù)據(jù)更加有趣、吸引人、易于閱讀和評(píng)價(jià)。它們也可以幫助我們分析和比較數(shù)據(jù)[1]。如下圖所示的圖表,看數(shù)據(jù)多累,看圖表就一目了然。。。
2.C#創(chuàng)建Excel圖表方法
2.1 Spire.Xls的圖表類(lèi)
在Spire.Xls組件中,生成圖表已經(jīng)非常簡(jiǎn)化了。只需要一個(gè)核心的Chart類(lèi),就可以增加圖表并進(jìn)行輔助的一些設(shè)置。Spire.Xls定義支持的圖表類(lèi)型,在枚舉ExcelChartType類(lèi)型中。目前一共有74種類(lèi)型,可以使用對(duì)象瀏覽器大概看一下:
在實(shí)際的使用過(guò)程中,添加Excel圖表主要有以下幾個(gè)過(guò)程:
1.給指定的Sheet添加需要的Excel圖表的類(lèi)型;
2.設(shè)置圖表所需要的數(shù)據(jù)范圍;
3.設(shè)置圖表的位置以及標(biāo)題;
4.設(shè)置系列圖表以及坐標(biāo)軸的值。
下面將使用C#和Spire.Xls組件做一個(gè)生成餅狀圖和折線圖的例子,看看基本的使用過(guò)程。
2.2 生成餅狀圖
在工作中如果遇到需要計(jì)算總費(fèi)用或金額的各個(gè)部分構(gòu)成比例的情況,一般都是通過(guò)各個(gè)部分與總額相除來(lái)計(jì)算,而且這種比例表示方法很抽象,我們可以使用一種餅狀圖表工具,能夠直接以圖形的方式直接顯示各個(gè)組成部分所占比例,在Excel中可以很方便的制作餅狀圖表。Spire.Xls中餅狀圖類(lèi)型是ExcelChartType類(lèi)中的Pie和Pie3D,為了效果很好看,我們可以使用3D的類(lèi)型。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
//創(chuàng)建餅狀圖表 Chart chart = sheet.Charts.Add(ExcelChartType.Pie); //設(shè)置圖表的數(shù)據(jù)范圍,使用的也是和前面單元格獲取的Range對(duì)象 chart.DataRange = sheet.Range[ "B2:B5" ]; chart.SeriesDataFromRange = false ; //設(shè)置圖表的位置 chart.LeftColumn = 1; //圖表左邊列 chart.TopRow = 6; //圖表上部的行 chart.RightColumn = 6; //圖表右邊列 chart.BottomRow = 18; //圖表底部行 //圖表標(biāo)題 chart.ChartTitle = "餅形圖例子" ; //設(shè)置字體 chart.ChartTitleArea.IsBold = true ; chart.ChartTitleArea.Size = 12; //初始化圖例 Spire.Xls.Charts.ChartSerie cs = chart.Series[0]; //圖表的標(biāo)簽?zāi)夸洈?shù)據(jù) cs.CategoryLabels = sheet.Range[ "A2:A5" ]; //圖表的主要值,也就是餅狀圖的數(shù)據(jù) cs.Values = sheet.Range[ "B2:B5" ]; |
如下所示的效果:
2.3 生成折線圖
線圖是用直線段將各數(shù)據(jù)點(diǎn)連接起來(lái)而組成的圖形,以折線方式顯示數(shù)據(jù)的變化趨勢(shì)。折線圖可以顯示隨時(shí)間(根據(jù)常用比例設(shè)置)而變化的連續(xù)數(shù)據(jù),因此非常適用于顯示在相等時(shí)間間隔下數(shù)據(jù)的趨勢(shì)。在折線圖中,類(lèi)別數(shù)據(jù)沿水平軸均勻分布,所有值數(shù)據(jù)沿垂直軸均勻分布。在折線圖中,數(shù)據(jù)是遞增還是遞減、增減的速率、增減的規(guī)律(周期性、螺旋性等)、峰值等特征都可以清晰地反映出來(lái)。所以,折線圖常用來(lái)分析數(shù)據(jù)隨時(shí)間的變化趨勢(shì),也可用來(lái)分析多組數(shù)據(jù)隨時(shí)間變化的相互作用和相互影響。
使用Spire.Xls繪制折線圖過(guò)程和上面的類(lèi)型。但如果圖例較多,就是設(shè)置稍微復(fù)雜一點(diǎn)。看一個(gè)例子:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
//給Sheet對(duì)象添加一個(gè)圖表對(duì)象,可以直接添加類(lèi)型,也可以單獨(dú)用ChartType賦值來(lái)添加 Chart chart = sheet.Charts.Add(); chart.ChartType = ExcelChartType.Line3D; //設(shè)置圖表的數(shù)據(jù)范圍 chart.DataRange = sheet.Range[ "A1:E5" ]; //設(shè)置圖表的保存位置,這個(gè)基本都差不多 chart.LeftColumn = 1; chart.TopRow = 6; chart.RightColumn = 7; chart.BottomRow = 22; //圖表標(biāo)題 chart.ChartTitle = "折線圖例子" ; //設(shè)置字體加粗和大小 chart.ChartTitleArea.IsBold = true ; chart.ChartTitleArea.Size = 12; //設(shè)置橫坐標(biāo)的標(biāo)題 chart.PrimaryCategoryAxis.Title = "月份" ; chart.PrimaryCategoryAxis.Font.IsBold = true ; chart.PrimaryCategoryAxis.TitleArea.IsBold = true ; //設(shè)置縱坐標(biāo),也就是值 的標(biāo)題 chart.PrimaryValueAxis.Title = "銷(xiāo)售額" ; chart.PrimaryValueAxis.HasMajorGridLines = false ; chart.PrimaryValueAxis.TitleArea.TextRotationAngle = 90; chart.PrimaryValueAxis.MinValue = 1000; chart.PrimaryValueAxis.TitleArea.IsBold = true ; //循環(huán)繪制不同國(guó)家的銷(xiāo)售額折線圖,有多個(gè)系列 foreach (Spire.Xls.Charts.ChartSerie cs in chart.Series) { cs.Format.Options.IsVaryColor = true ; cs.DataPoints.DefaultDataPoint.DataLabels.HasValue = true ; } |
實(shí)際的效果和原始數(shù)據(jù)如下圖所示:
其他圖表的過(guò)程都類(lèi)似,可以在幫助文檔中找到相關(guān)例子。
3.C#設(shè)置Excel圖表
3.1 將圖表保存為圖片
Excel生成的圖表是可以保存為圖片的。在Spire.XLS中,這些操作已經(jīng)變得非常簡(jiǎn)單。首先獲取Workbook對(duì)象的SaveChartAsImage方法獲取指定sheet中的所有圖表。然后循環(huán)將圖片對(duì)象依次保存即可,下面是主要代碼:
1
2
3
4
5
6
7
8
|
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)在前面介紹過(guò),還有一個(gè)可以調(diào)整大小的功能。使用Width和Height方法直接設(shè)置大小即可。
1
2
|
chart.Width = 400; chart.Height = 250; |
上面就是一些常規(guī)的操作和使用,總的來(lái)說(shuō)還是比較簡(jiǎn)單,如果需要比較細(xì)致的,可以查看API文檔,根據(jù)方法來(lái)所要的功能來(lái)找,實(shí)現(xiàn)起來(lái)也會(huì)很容易的。
[1].http://baike.haosou.com/doc/5449555-5687924.html
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持服務(wù)器之家。
原文鏈接:http://www.cnblogs.com/asxinyu/p/Spire_XLS_5_Chart.html