A donut chart is a variant of the pie chart, with a blank center allowing for additional information about the data as a whole to be included. In this article, you will learn how to create a doughnut chart using Spire.XLS in C#.
Step 1: Initialize a new instance of Workbook class and set the Excel version as 2013.
Workbook wb = new Workbook(); wb.Version = ExcelVersion.Version2013;
Step 2: Get the first sheet from workbook.
Worksheet sheet = wb.Worksheets[0];
Step 3: Insert some data in the sheet.
sheet.Range["A1"].Value = "Country"; sheet.Range["A1"].Style.Font.IsBold = true; sheet.Range["A2"].Value = "Cuba"; sheet.Range["A3"].Value = "Mexico"; sheet.Range["A4"].Value = "France"; sheet.Range["A5"].Value = "German"; sheet.Range["B1"].Value = "Sales"; sheet.Range["B1"].Style.Font.IsBold = true; sheet.Range["B2"].NumberValue = 6000; sheet.Range["B3"].NumberValue = 8000; sheet.Range["B4"].NumberValue = 9000; sheet.Range["B5"].NumberValue = 8500;
Step 4: Create a Doughnut Chart based on the data from range A1:B5.
Chart chart = sheet.Charts.Add(); chart.ChartType = ExcelChartType.Doughnut; chart.DataRange = sheet.Range["A1:B5"]; chart.SeriesDataFromRange = false;
Step 5: Set the chart position.
chart.LeftColumn = 4; chart.TopRow = 2; chart.RightColumn = 12; chart.BottomRow = 22;
Step 6: Display percentage value in data labels.
foreach (ChartSerie cs in chart.Series) { cs.DataPoints.DefaultDataPoint.DataLabels.HasPercentage = true; }
Step 7: Save the file.
wb.SaveToFile("DoughnutChart.xlsx",ExcelVersion.Version2010);
Output:
Full Code:
using Spire.Xls; using Spire.Xls.Charts; namespace DoughnutChart { class Program { static void Main(string[] args) { Workbook wb = new Workbook(); wb.Version = ExcelVersion.Version2013; Worksheet sheet = wb.Worksheets[0]; //insert data sheet.Range["A1"].Value = "Country"; sheet.Range["A1"].Style.Font.IsBold = true; sheet.Range["A2"].Value = "Cuba"; sheet.Range["A3"].Value = "Mexico"; sheet.Range["A4"].Value = "France"; sheet.Range["A5"].Value = "German"; sheet.Range["B1"].Value = "Sales"; sheet.Range["B1"].Style.Font.IsBold = true; sheet.Range["B2"].NumberValue = 6000; sheet.Range["B3"].NumberValue = 8000; sheet.Range["B4"].NumberValue = 9000; sheet.Range["B5"].NumberValue = 8500; //add a new chart, set chart type as doughnut Chart chart = sheet.Charts.Add(); chart.ChartType = ExcelChartType.Doughnut; chart.DataRange = sheet.Range["A1:B5"]; chart.SeriesDataFromRange = false; //set position of chart chart.LeftColumn = 4; chart.TopRow = 2; chart.RightColumn = 12; chart.BottomRow = 22; //chart title chart.ChartTitle = "Market share by country"; chart.ChartTitleArea.IsBold = true; chart.ChartTitleArea.Size = 12; foreach (ChartSerie cs in chart.Series) { cs.DataPoints.DefaultDataPoint.DataLabels.HasPercentage = true; } chart.Legend.Position = LegendPositionType.Top; wb.SaveToFile("DoughnutChart.xlsx",ExcelVersion.Version2010); } } }