Excel生成報表之解決方案---簇狀圓錐圖


首先來看下用代碼生成圖表的效果:

要生成這樣效果的三維圖表,如何來實現,先來了解微軟Excel中生成這樣的圖表,需要哪些步驟。

一、微軟Excel中圖表生成

1.首先需要在單元格中填寫圖表數據源所需要數據。如上圖中單元格數據Employee,Salary,Other等。

2.填寫完數據后,點擊Excel工具欄中圖表按鈕。

3.點擊圖表按鈕后,會彈出圖表導向的窗口,選擇你需要生成的圖表類型。

4.然后點擊下一步,窗口如下:

5.為圖表指定數據源並選擇生成的系列是按行還是按列。

二、用Acey.ExcelX組件實現

首先需要導入名稱空間。

using Acey.ExcelX;

using Acey.ExcelX.Charts;

View Code
 1 /// <summary>
 2         /// 下面列子描述如何生成三維簇狀圓錐圖。
 3         /// </summary>
 4         public void CreateConeChart()
 5         {
 6             //創建工作薄對象。
 7             IWorkbook workbook = ExcelxApplication.CreateWorkbook();
 8 
 9             //獲取工作薄對象中指定索引處工作表對象。
10             IWorksheet worksheet = workbook.Worksheets[0];
11 
12             //初始化二維數組。
13             object[,] objArray = new object[5, 3] {
14                  { "Nelson", 40000, 20000 },
15                  { "Young", 55500, 25000 },
16                  { "Lambert", 25000, 10000 },
17                  { "Johnson", 25050, 12000 },
18                  { "Lee", 45332, 23000 }};           
19 
20             //導出該二維數組的數據到工作表指定索引處的位置。
21             worksheet.ImportArray(objArray, 0, 0);
22 
23             //獲取工作表中所有圖表對象。
24             IChartCollection charts = worksheet.Charts;
25 
26             //添加指定圖表類型到工作表中指定單元格范圍。
27             IChart chart = charts.Add(ChartType.Cone, 1, 4, 16, 12);
28 
29             //獲取指定單元格范圍。
30             IRange range = worksheet.Cells.CreateRange("A1:C6");
31 
32             //獲取該圖表對象的數據源。
33             chart.SetSourceData(range, RowCol.Columns);
34 
35             //保存該工作薄為指定類型。
36             workbook.SaveAs(@"d:\book1.xls", FileFormat.Excel97To2003);
37         }

三、比較微軟Excel生成圖表和用Acey.ExcelX的實現。

1.設置數據源

微軟Excel:需要手工填寫數據源的每個單元格。

Acey.ExcelX:只需要初始化一個二維數據,並用方法worksheet.ImportArray(objArray, 0, 0)(其中第一個0表示行索引,第二個0代表列索引),指定要導入在工作表中

的位置就能很輕松將其二維數據的數據導入到工作表中,減小了填寫單元格數據的工作量。

在上篇文章http://www.cnblogs.com/happyfish78/archive/2012/11/01/2749155.html中我們例舉的例子導入DataTable的數據到工作表中,也能很輕松實現數據導入。

2.選擇要生成的圖表類型

微軟Excel:需要選擇圖表類型。

Acey.ExcelX:通過獲取工作表中所有圖表對象集合(IChartCollection charts = worksheet.Charts;),在集合中添加指定類型的圖表

IChart chart = charts.Add(ChartType.Cone, 1, 4, 16, 12);(其中參數1代表圖表在工作表中左上角的行索引位置,4代表圖表在工作表中左上角的列索引位置,

                                                                                         16代表圖表在工作表中右下角的行索引位置,4代表圖表在工作表中右下角的列索引位置)

就能很輕松將要生成的圖表控制在指定的單元格范圍中。返回值Chart對象,方便可以直接修改圖表的其他屬性。

3.數據源設置:

微軟Excel:首先要需要選擇數據源單元格范圍,再選擇系列按行還是按列生成。

Acey.ExcelX:通過創建單元格范圍的對象(IRange range = worksheet.Cells.CreateRange("A1:C6");)來創建數據源,再通過設置數據源

chart.SetSourceData(range, RowCol.Columns);,其中參數range指定數據源單元格范圍,RowCol枚舉類型(包含Rows和Columns)來控制系列是按行或列來生成。

RowCol枚舉類型能讓用戶使用更方便。

 

四、總結

無需安裝微軟Excel,用代碼也能很輕松實現生成各種二維圖表和三維圖表的效果。

 

 

 

 

 


免責聲明!

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



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