How to create Excel 3D 100% stacked column chart in C#, VB.NET?
This article explains how to create 3D 100% stacked column chart in Excel using Syncfusion Excel (XlsIO) library.
What is 3D 100% stacked column chart?
In 3D 100% stacked column chart, each series is vertically stacked one over the other where the total (cumulative) of each bars always equal to 100%.
3D 100% Stacked Column Chart
To create a 3D 100% stacked column chart in Excel using XlsIO, you need to do the following steps.
Steps to create 3D 100% stacked column chart:
Step 1: Initialize chart
Create a chart object by calling the worksheet.Charts.Add method and specify the chart type to ExcelChartType.Column_Stacked_100_3D enum value.
C#
//Create the chart
IChartShape chart = worksheet.Charts.Add();
//Set chart type to Column_Stacked_100_3D
chart.ChartType = ExcelChartType.Column_Stacked_100_3D;
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 and legend.
- ChartTitle of chart object.
- Set TRUE to chart’s HasLegend property, to show the legend.
C#
//Apply chart elements
//Set Chart Title
chart.ChartTitle = "3D 100% Stacked Column Chart";
//Set Legend
chart.HasLegend = true;
chart.Legend.Position = ExcelLegendPosition.Bottom;
Step 4: Apply 3D chart elements
Add the 3D chart elements like Rotation and Elevation.
- Rotation and Elevation of chart object.
C#
//Set Rotation and Elevation
chart.Rotation = 30;
chart.Elevation = 30;
Applicable properties for 3D 100% stacked column chart
Below is the list of other common properties applicable for 3D column/bar chart.
- GapWidth
- GapDepth
- BarShapeBase & BarShapeTop (to change the shape of the 3D column / bar)
- IsVaryColorNote:
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.
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 3D 100% stacked column 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.Column_Stacked_100_3D;
//Assign data
chart.DataRange = worksheet["A1:D6"];
chart.IsSeriesInRows = false;
//Apply chart elements
//Set Chart Title
chart.ChartTitle = "3D 100% Stacked Column Chart";
//Set Legend
chart.HasLegend = true;
chart.Legend.Position = ExcelLegendPosition.Bottom;
//Set Rotation and Elevation
chart.Rotation = 30;
chart.Elevation = 30;
//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.Column_Stacked_100_3D
'Assign data
chart.DataRange = worksheet("A1:D6")
chart.IsSeriesInRows = False
'Apply chart elements
'Set Chart Title
chart.ChartTitle = "3D 100% Stacked Column Chart"
'Set Legend
chart.HasLegend = True
chart.Legend.Position = ExcelLegendPosition.Bottom
'Set Rotation and Elevation
chart.Rotation = 30;
chart.Elevation = 30;
'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