首先來看下用代碼生成圖表的效果:
要生成這樣效果的三維圖表,如何來實現,先來了解微軟Excel中生成這樣的圖表,需要哪些步驟。
一、微軟Excel中圖表生成
1.首先需要在單元格中填寫圖表數據源所需要數據。如上圖中單元格數據Employee,Salary,Other等。
2.填寫完數據后,點擊Excel工具欄中圖表按鈕。
3.點擊圖表按鈕后,會彈出圖表導向的窗口,選擇你需要生成的圖表類型。
4.然后點擊下一步,窗口如下:
5.為圖表指定數據源並選擇生成的系列是按行還是按列。
二、用Acey.ExcelX組件實現
首先需要導入名稱空間。
using Acey.ExcelX;
using Acey.ExcelX.Charts;

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,用代碼也能很輕松實現生成各種二維圖表和三維圖表的效果。