【原創】.NET讀寫Excel工具Spire.Xls使用(5)重量級的Excel圖表功能


                本博客所有文章分類的總目錄:http://www.cnblogs.com/asxinyu/p/4288836.html

.NET讀寫Excel工具Spire.Xls使用文章目錄:http://www.cnblogs.com/asxinyu/p/4374032.html

  前一篇文章:“.NET讀寫Excel工具Spire.Xls使用(4)對數據操作與控制”給大家介紹了Spire.XLS對數據的控制相關功能,這一篇給大家介紹Spire.XLS最大的亮點所在,C#控制Excel生成圖表。將介紹C#生成不同類型圖表的方法,並介紹Excel圖表的相關操作,如調整大小,保存圖片等操作的方法。

1.Excel中的圖表

  我們生活的這個世界是豐富多彩的,幾乎所有的知識都來自於視覺。也許無法記住一連串的數字,以及它們之間的關系和趨勢。但是可以很輕松地記住一幅圖畫或者一個曲線。因此由於使用圖表,會使得用Excel編制的工作表更易於理解和交流。Excel具有許多高級的制圖功能,同時使用起來也非常簡便。在本章中,我們將學習到建立一張簡單的圖表,再進行修飾,使圖表更加精致,以及如何為圖形加上背景、圖注、正文等等。Excel中圖表是指將工作表中的數據用圖形表示出來。例如:將各地區每周的銷售用柱形圖顯示出來,見圖8-1的顯示。圖表可以使數據更加有趣、吸引人、易於閱讀和評價。它們也可以幫助我們分析和比較數據[1]。如下圖所示的圖表,看數據多累,看圖表就一目了然。。。

2.C#創建Excel圖表方法

2.1 Spire.Xls的圖表類

  在Spire.Xls組件中,生成圖表已經非常簡化了。只需要一個核心的Chart類,就可以增加圖表並進行輔助的一些設置。Spire.Xls定義支持的圖表類型,在枚舉ExcelChartType類型中。目前一共有74種類型,可以使用對象瀏覽器大概看一下:  

  在實際的使用過程中,添加Excel圖表主要有以下幾個過程:

1.給指定的Sheet添加需要的Excel圖表的類型;

2.設置圖表所需要的數據范圍;

3.設置圖表的位置以及標題;

4.設置系列圖表以及坐標軸的值。

  下面將使用C#和Spire.Xls組件做一個生成餅狀圖和折線圖的例子,看看基本的使用過程。

2.2 生成餅狀圖

  在工作中如果遇到需要計算總費用或金額的各個部分構成比例的情況,一般都是通過各個部分與總額相除來計算,而且這種比例表示方法很抽象,我們可以使用一種餅狀圖表工具,能夠直接以圖形的方式直接顯示各個組成部分所占比例,在Excel中可以很方便的制作餅狀圖表。Spire.Xls中餅狀圖類型是ExcelChartType類中的Pie和Pie3D,為了效果很好看,我們可以使用3D的類型。

 1 //創建餅狀圖表
 2 Chart chart = sheet.Charts.Add(ExcelChartType.Pie);
 3 //設置圖表的數據范圍,使用的也是和前面單元格獲取的Range對象
 4 chart.DataRange = sheet.Range["B2:B5"];
 5 chart.SeriesDataFromRange = false;
 6 
 7 //設置圖表的位置
 8 chart.LeftColumn = 1;//圖表左邊列
 9 chart.TopRow = 6;//圖表上部的行
10 chart.RightColumn = 6;//圖表右邊列
11 chart.BottomRow = 18;//圖表底部行
12 
13 //圖表標題
14 chart.ChartTitle = "餅形圖例子";
15 //設置字體
16 chart.ChartTitleArea.IsBold = true;
17 chart.ChartTitleArea.Size = 12;
18 
19 //初始化圖例
20 Spire.Xls.Charts.ChartSerie cs = chart.Series[0];
21 //圖表的標簽目錄數據
22 cs.CategoryLabels = sheet.Range["A2:A5"];
23 //圖表的主要值,也就是餅狀圖的數據
24 cs.Values = sheet.Range["B2:B5"];

如下所示的效果:

2.3 生成折線圖

  線圖是用直線段將各數據點連接起來而組成的圖形,以折線方式顯示數據的變化趨勢。折線圖可以顯示隨時間(根據常用比例設置)而變化的連續數據,因此非常適用於顯示在相等時間間隔下數據的趨勢。在折線圖中,類別數據沿水平軸均勻分布,所有值數據沿垂直軸均勻分布。在折線圖中,數據是遞增還是遞減、增減的速率、增減的規律(周期性、螺旋性等)、峰值等特征都可以清晰地反映出來。所以,折線圖常用來分析數據隨時間的變化趨勢,也可用來分析多組數據隨時間變化的相互作用和相互影響。

  使用Spire.Xls繪制折線圖過程和上面的類型。但如果圖例較多,就是設置稍微復雜一點。看一個例子:

 1 //給Sheet對象添加一個圖表對象,可以直接添加類型,也可以單獨用ChartType賦值來添加
 2 Chart chart = sheet.Charts.Add();
 3 chart.ChartType = ExcelChartType.Line3D;
 4 
 5 //設置圖表的數據范圍
 6 chart.DataRange = sheet.Range["A1:E5"];
 7 
 8 //設置圖表的保存位置,這個基本都差不多
 9 chart.LeftColumn = 1;
10 chart.TopRow = 6;
11 chart.RightColumn = 7;
12 chart.BottomRow = 22;
13 
14 //圖表標題
15 chart.ChartTitle = "折線圖例子";
16 //設置字體加粗和大小
17 chart.ChartTitleArea.IsBold = true;
18 chart.ChartTitleArea.Size = 12;
19 //設置橫坐標的標題
20 chart.PrimaryCategoryAxis.Title = "月份";
21 chart.PrimaryCategoryAxis.Font.IsBold = true;
22 chart.PrimaryCategoryAxis.TitleArea.IsBold = true;
23 //設置縱坐標,也就是值 的標題
24 chart.PrimaryValueAxis.Title = "銷售額";
25 chart.PrimaryValueAxis.HasMajorGridLines = false;
26 chart.PrimaryValueAxis.TitleArea.TextRotationAngle = 90;
27 chart.PrimaryValueAxis.MinValue = 1000;
28 chart.PrimaryValueAxis.TitleArea.IsBold = true;
29 //循環繪制不同國家的銷售額折線圖,有多個系列
30 foreach (Spire.Xls.Charts.ChartSerie cs in chart.Series)
31 {
32     cs.Format.Options.IsVaryColor = true;
33     cs.DataPoints.DefaultDataPoint.DataLabels.HasValue = true;            
34 }

實際的效果和原始數據如下圖所示:

  其他圖表的過程都類似,可以在幫助文檔中找到相關例子。

3.C#設置Excel圖表

3.1 將圖表保存為圖片

  Excel生成的圖表是可以保存為圖片的。在Spire.XLS中,這些操作已經變得非常簡單。首先獲取Workbook對象的SaveChartAsImage方法獲取指定sheet中的所有圖表。然后循環將圖片對象依次保存即可,下面是主要代碼:

1 Workbook workbook = new Workbook();
2 workbook.LoadFromFile("chart.xlsx", ExcelVersion.Version2010);
3 Worksheet sheet=workbook.Worksheets[0];
4 Image[] imgs = workbook.SaveChartAsImage(sheet);
5 for (int i = 0; i < imgs.Length; i++)
6 {
7     imgs[i].Save(string.Format("img-{0}.png", i), ImageFormat.Png);
8 }

3.2 位置調整

  Excel中的圖表的位置已經在前面介紹過,還有一個可以調整大小的功能。使用Width和Height方法直接設置大小即可。

1 chart.Width = 400;
2 chart.Height = 250;

  上面就是一些常規的操作和使用,總的來說還是比較簡單,如果需要比較細致的,可以查看API文檔,根據方法來所要的功能來找,實現起來也會很容易的。

[1].http://baike.haosou.com/doc/5449555-5687924.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM