We use cookies to give you the best experience on our website. If you continue to browse, then you agree to our privacy policy and cookie policy. (Last updated on: November 16, 2018).
Unfortunately, activation email could not send to your email. Please try again.
Syncfusion Feedback

How to create Excel stacked bar chart in C#, VB.NET?

Platform: WinForms |
Control: XlsIO |
Published Date: January 31, 2018 |
Last Revised Date: April 23, 2019

This article explains how to create a stacked bar chart in Excel using Syncfusion Excel (XlsIO) library.

What is a stacked bar chart?

In stacked bar chart, each series is horizontally stacked one after the other.

Create Staked Bar Chart in Excel

Stacked Bar Chart

To create a stacked bar chart using XlsIO, you need to do the following steps.

Steps to create the stacked bar chart:

Step 1: Initialize chart

Create a chart object by calling the worksheet.Charts.Add method and specify the chart type to ExcelChartType.Bar_Stacked enum value.

C#

            //Create the chart
            IChartShape chart = worksheet.Charts.Add();
 
            //Set chart type to Bar_Stacked
            chart.ChartType = ExcelChartType.Bar_Stacked;

 

Step 2: Assign data

Set a range of data from the worksheet to chart’s DataRange property. To plot the series values in column and categories in row, set chart’s IsSeriesInRows property to false.

C#

            //Set region of Chart data
            chart.DataRange = worksheet["A1:D6"];
 
            //Set chart series in column for assigned data region
            chart.IsSeriesInRows = false;

 

Step 3: Apply basic chart elements

Add the basic elements like chart title, data labels and legend with the below list of properties.

  • ChartTitle of chart object.
  • Set DataLabels via DefaultDataPoint.
  • Set TRUE to chart’s HasLegend property, to show the legend.

C#

              //Apply chart elements
               //Set Chart Title
                chart.ChartTitle = "Stacked Bar Chart";
 
                //Set Datalabels
                IChartSerie serie1 = chart.Series[0];
                serie1.DataPoints.DefaultDataPoint.DataLabels.IsValue = true;
                serie1.DataPoints.DefaultDataPoint.DataLabels.Position = ExcelDataLabelPosition.Center;
 
                //Set Legend
                chart.HasLegend = true;
                chart.Legend.Position = ExcelLegendPosition.Bottom;

 

Applicable properties of stacked bar chart

Below is the list of other common properties that is applicable for a column/bar chart.

  1. GapWidth (value should be between 0 and 500)
  2. Overlap (value should be between -100 and 100)
  3. IsVarycolor
Note:

Applying properties apart from the mentioned list might throw exception or the changes will not be reflected in the output document because those properties are not related to column/bar chart.

Download Complete Sample

Download input file with data

To know more about creating charts with various settings using Syncfusion Excel (XlsIO) library, please refer the documentation.

The following C#/ VB.NET complete code snippet shows the creation of stacked bar chart using XlsIO.

C#

using Syncfusion.XlsIO;
using System.Reflection;
using System.IO;
 
namespace ChartSample
{
    class Program
    {
        static void Main(string[] args)
        {
            using (ExcelEngine excelEngine = new ExcelEngine())
            {
                IApplication application = excelEngine.Excel;
                application.DefaultVersion = ExcelVersion.Excel2016;
 
                //Open existing workbook with data entered
                Assembly assembly = typeof(Program).GetTypeInfo().Assembly;
                Stream fileStream = assembly.GetManifestResourceStream("ChartSample.InputTemplate.xlsx");
                IWorkbook workbook = application.Workbooks.Open(fileStream);
                IWorksheet worksheet = workbook.Worksheets[0];
 
                //Initialize chart
                IChartShape chart = worksheet.Charts.Add();
                chart.ChartType = ExcelChartType.Bar_Stacked;
 
                //Assign data
                chart.DataRange = worksheet["A1:D6"];
                chart.IsSeriesInRows = false;
 
                //Apply chart elements
                //Set Chart Title
                chart.ChartTitle = "Stacked Bar Chart";
 
                //Set Datalabels
                IChartSerie serie1 = chart.Series[0];
                IChartSerie serie2 = chart.Series[1];
                IChartSerie serie3 = chart.Series[2];
 
                serie1.DataPoints.DefaultDataPoint.DataLabels.IsValue = true;
                serie2.DataPoints.DefaultDataPoint.DataLabels.IsValue = true;
                serie3.DataPoints.DefaultDataPoint.DataLabels.IsValue = true;
                serie1.DataPoints.DefaultDataPoint.DataLabels.Position = ExcelDataLabelPosition.Center;
                serie2.DataPoints.DefaultDataPoint.DataLabels.Position = ExcelDataLabelPosition.Center;
                serie3.DataPoints.DefaultDataPoint.DataLabels.Position = ExcelDataLabelPosition.Center;
 
                //Set Legend
                chart.HasLegend = true;
                chart.Legend.Position = ExcelLegendPosition.Bottom;
 
                //Positioning the chart in the worksheet
                chart.TopRow = 8;
                chart.LeftColumn = 1;
                chart.BottomRow = 23;
                chart.RightColumn = 8;
 
                //Saving and closing the workbook
                Stream stream = File.Create("Output.xlsx");
                workbook.SaveAs(stream);
            }
        }
    }
}

 

VB.NET

Imports Syncfusion.XlsIO
Imports System.Reflection
Imports System.IO
 
Namespace ChartSample
 
    Class Program
 
        Public Shared Sub Main(ByVal args As String())
            Using excelEngine As ExcelEngine = New ExcelEngine()
                Dim application As IApplication = excelEngine.Excel
                application.DefaultVersion = ExcelVersion.Excel2016
 
 
                'Open existing workbook with data entered
                Dim assembly As Assembly = GetType(Program).GetTypeInfo().Assembly
                Dim fileStream As Stream = assembly.GetManifestResourceStream("ChartSample.InputTemplate.xlsx")
                Dim workbook As IWorkbook = application.Workbooks.Open(fileStream)
                Dim worksheet As IWorksheet = workbook.Worksheets(0)
 
                'Initialize chart
                Dim chart As IChartShape = worksheet.Charts.Add()
                chart.ChartType = ExcelChartType.Bar_Stacked
 
                'Assign data
                chart.DataRange = worksheet("A1:D6")
                chart.IsSeriesInRows = False
 
 
                'Apply chart elements
                'Set Chart Title
                chart.ChartTitle = "Stacked Bar Chart"
 
                'Set Datalabels
                Dim serie1 As IChartSerie = chart.Series(0)
                Dim serie2 As IChartSerie = chart.Series(1)
                Dim serie3 As IChartSerie = chart.Series(2)
                serie1.DataPoints.DefaultDataPoint.DataLabels.IsValue = True
                serie2.DataPoints.DefaultDataPoint.DataLabels.IsValue = True
                serie3.DataPoints.DefaultDataPoint.DataLabels.IsValue = True
                serie1.DataPoints.DefaultDataPoint.DataLabels.Position = ExcelDataLabelPosition.Center
                serie2.DataPoints.DefaultDataPoint.DataLabels.Position = ExcelDataLabelPosition.Center
                serie3.DataPoints.DefaultDataPoint.DataLabels.Position = ExcelDataLabelPosition.Center
 
                'Set Legend
                chart.HasLegend = True
                chart.Legend.Position = ExcelLegendPosition.Bottom
 
                'Positioning chart in the worksheet
                chart.TopRow = 8
                chart.LeftColumn = 1
                chart.BottomRow = 23
                chart.RightColumn = 8
 
                'Saving and closing the workbook
                Dim stream As Stream = File.Create("Output.xlsx")
                workbook.SaveAs(stream)
            End Using
        End Sub
    End Class
End Namespace

2X faster development

The ultimate WinForms UI toolkit to boost your development speed.
ADD COMMENT
You must log in to leave a comment

Please sign in to access our KB

This page will automatically be redirected to the sign-in page in 10 seconds.

Warning Icon You are using an outdated version of Internet Explorer that may not display all features of this and other websites. Upgrade to Internet Explorer 8 or newer for a better experience.Close Icon