How To Create Excel Pie Chart By Using C#
Sign in

How to Create Excel Pie Chart by Using C#

Sometimes, people would like to use chart to display data because it is more intuitionistic than numbers. In Excel, we can generate chart according to data. Also, Excel offers several chart types. There are six frequently used chart types, pie chart, column chart, line chart, bar chart, area chart and scatter chart. In this post, I want to talk something about pie chart.

Generally speaking, a pie chart can only display one series of data. Even though we have selected multiple series of data, it will ignore others except the first series. And, pie chart has several sub-types, for example, pie in 3-D, exploded pie chart.

Then, I want to introduce one method to create Excel pie chart with C#. In this method, one component, Spire.XLS is used. Before using the following code, please download and install it. Then add DLL in your project. What’s more, this component cannot only support to operate Excel on .NET, but on silverlight.

 

private void btnRun_Click(object sender, System.EventArgs e)

{

       Workbook workbook = new Workbook();

      

       //Initailize worksheet

       workbook.CreateEmptySheets(1);

       Worksheet sheet = workbook.Worksheets[0];

       sheet.Name = "Chart data";

       sheet.GridLinesVisible = false;

 

       //Add a new  chart worsheet to workbook

       Chart chart = null;

       if (checkBox1.Checked)

       {

              chart = sheet.Charts.Add(ExcelChartType.Pie3D);

       }

       else

       {

              chart = sheet.Charts.Add(ExcelChartType.Pie);

       }

 

       CreateChartData(sheet);

       CreateChart(sheet, chart);

 

       workbook.SaveToFile("Sample.xls");

       ExcelDocViewer(workbook.FileName);

}

 

 

private void CreateChart(Worksheet  sheet, Chart chart)

{

       //Set region of chart data

       chart.DataRange = sheet.Range["B2:B5"];

       chart.SeriesDataFromRange = false;

 

       //Set position of chart

       chart.LeftColumn = 1;

       chart.TopRow = 6;

       chart.RightColumn = 9;

       chart.BottomRow = 25;

 

 

       //Chart title

       chart.ChartTitle = "Sales by year";

       chart.ChartTitleArea.IsBold = true;

       chart.ChartTitleArea.Size = 12;

 

 

       Charts.ChartSerie cs = chart.Series[0];

       cs.CategoryLabels = sheet.Range["A2:A5"];

       cs.Values = sheet.Range["B2:B5"];

       cs.DataFormat.ShowActiveValue = true;

 

}

private void CreateChartData(Worksheet sheet)

{

       //Country

       sheet.Range["A1"].Value = "Year";

       sheet.Range["A2"].Value = "2002";

       sheet.Range["A3"].Value = "2003";

       sheet.Range["A4"].Value = "2004";

       sheet.Range["A5"].Value = "2005";

 

       //Jun

       sheet.Range["B1"].Value = "Sales";

       sheet.Range["B2"].NumberValue = 4000;

       sheet.Range["B3"].NumberValue = 6000;

       sheet.Range["B4"].NumberValue = 7000;

       sheet.Range["B5"].NumberValue = 8500;

 

      

 

       //Style

       sheet.Range["A1:B1"].Style.Font.IsBold = true;

       sheet.Range["A2:B2"].Style.KnownColor = ExcelColors.LightYellow;

       sheet.Range["A3:B3"].Style.KnownColor = ExcelColors.LightGreen1;

       sheet.Range["A4:B4"].Style.KnownColor = ExcelColors.LightOrange;

       sheet.Range["A5:B5"].Style.KnownColor = ExcelColors.LightTurquoise;

 

       //Border

       sheet.Range["A1:B5"].Style.Borders[BordersLineType.EdgeTop].Color = Color.FromArgb(0, 0, 128);

       sheet.Range["A1:B5"].Style.Borders[BordersLineType.EdgeTop].LineStyle = LineStyleType.Thin;

       sheet.Range["A1:B5"].Style.Borders[BordersLineType.EdgeBottom].Color = Color.FromArgb(0, 0, 128);

       sheet.Range["A1:B5"].Style.Borders[BordersLineType.EdgeBottom].LineStyle = LineStyleType.Thin;

       sheet.Range["A1:B5"].Style.Borders[BordersLineType.EdgeLeft].Color = Color.FromArgb(0, 0, 128);

       sheet.Range["A1:B5"].Style.Borders[BordersLineType.EdgeLeft].LineStyle = LineStyleType.Thin;

       sheet.Range["A1:B5"].Style.Borders[BordersLineType.EdgeRight].Color = Color.FromArgb(0, 0, 128);

       sheet.Range["A1:B5"].Style.Borders[BordersLineType.EdgeRight].LineStyle = LineStyleType.Thin;

 

       sheet.Range["B2:C5"].Style.NumberFormat = "\"$\"#,##0";

}

 

private void ExcelDocViewer( string fileName )

{

       try

       {

              System.Diagnostics.Process.Start(fileName);

       }

       catch{}

}

start_blog_img