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 high low close chart in C#, VB.NET?

Platform: WinForms |
Control: XlsIO |
Published Date: February 14, 2018 |
Last Revised Date: April 17, 2019

This article explains how to create a high-low-close chart in Excel using Syncfusion Excel (XlsIO) library.

What is a high-low-close chart?

A high-low-close chart is a type of chart typically used to illustrate movements in the price of a financial instrument over time. Each vertical line on the chart shows the price range over one unit of time.

Create high low close chart in Excel

High-Low-Close Chart

To create a high-low-close chart in Excel using XlsIO, you need to do the following steps.

Steps to create high-low-close chart:

Step 1: Initialize chart

Create a chart object by calling the worksheet.Charts.Add method.

C#

            //Create the chart
            IChartShape chart = worksheet.Charts.Add();

 

Step 2: Assign data and specify the chart type

Set a range of data from the worksheet to chart’s DataRange property and specify the chart type to ExcelChartType.Stock_HighLowClose enum value.

C#

            //Set region of Chart data
            chart.DataRange = worksheet["A1:F4"];
            //Set chart type to Stock_HighLowClose
            chart.ChartType = ExcelChartType.Stock_HighLowClose;

 

Note:

For creating a stock high-low-close chart, the series count must be 3. The data range should be set before selecting the chart type.

Step 3: Apply basic chart elements

Add the basic elements like chart title, data labels and legend.

  • 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 = "High-Low-Close Chart";
 
              //Set Legend
              chart.HasLegend = true;
              chart.Legend.Position = ExcelLegendPosition.Bottom;
              
              //Set Datalabels
              IChartSerie serie1 = chart.Series[0];
              serie1.DataPoints.DefaultDataPoint.DataLabels.IsValue = true;
              serie1.DataPoints.DefaultDataPoint.DataLabels.IsSeriesName = true;
              serie1.SerieFormat.MarkerStyle = ExcelChartMarkerType.Circle;
              serie1.SerieFormat.MarkerBackgroundColorIndex = ExcelKnownColors.LightGreen;

 

Properties used to modify the markers in the high-low-close chart

Below is the list of properties that are used to change the markers in high-low-close chart.

  1. MarkerBackgroundColor (or) MarkerBackgroundColorIndex
  2. MarkerForegroundColor (or) MarkerForegroungColorIndex
  3. MarkerSize
  4. MarkerStyle
  5. IsAutoMarker
Note:

Marker properties are applicable for all high (chart.Series[0]), low (chart.Series[1]) and close (chart.Series[2]) series.

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 high-low-close 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 and assign data
                IChartShape chart = worksheet.Charts.Add();
                chart.DataRange = worksheet["A1:F4"];
                chart.ChartType = ExcelChartType.Stock_HighLowClose;
 
                //Apply chart elements
                //Set Chart Title
                chart.ChartTitle = "High-Low-Close Chart";
 
                //Set Legend
                chart.HasLegend = true;
                chart.Legend.Position = ExcelLegendPosition.Bottom;
 
                //Set Datalabels
                IChartSerie serie1 = chart.Series[0];
                IChartSerie serie2 = chart.Series[1];
                IChartSerie serie3 = chart.Series[2];
 
                serie1.DataPoints.DefaultDataPoint.DataLabels.IsValue = true;
                serie1.DataPoints.DefaultDataPoint.DataLabels.IsSeriesName = true;
                serie1.SerieFormat.MarkerStyle = ExcelChartMarkerType.Circle;
                serie1.SerieFormat.MarkerBackgroundColorIndex = ExcelKnownColors.LightGreen;
 
                serie2.DataPoints.DefaultDataPoint.DataLabels.IsValue = true;
                serie2.DataPoints.DefaultDataPoint.DataLabels.IsSeriesName = true;
                serie2.SerieFormat.MarkerStyle = ExcelChartMarkerType.Circle;
                serie2.SerieFormat.MarkerBackgroundColorIndex = ExcelKnownColors.Red;
 
                serie3.DataPoints.DefaultDataPoint.DataLabels.IsValue = true;
                serie3.DataPoints.DefaultDataPoint.DataLabels.IsSeriesName = true;
                serie3.SerieFormat.MarkerStyle = ExcelChartMarkerType.Circle;
                serie3.SerieFormat.MarkerBackgroundColorIndex = ExcelKnownColors.Light_yellow;
 
                //Positioning the chart in the worksheet
                chart.TopRow = 8;
                chart.LeftColumn = 1;
                chart.BottomRow = 23;
                chart.RightColumn = 8;
 
                //Saving 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 and assign data
                Dim chart As IChartShape = worksheet.Charts.Add
                chart.DataRange = worksheet("A1:F4")
                chart.ChartType = ExcelChartType.Stock_HighLowClose
                
                'Apply chart elements
                'Set Chart Title
                chart.ChartTitle = "High-Low-Close Chart"
                'Set Legend
                chart.HasLegend = True
                chart.Legend.Position = ExcelLegendPosition.Bottom
 
                'Set data labels
                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
                serie1.DataPoints.DefaultDataPoint.DataLabels.IsSeriesName = True
                serie1.SerieFormat.MarkerStyle = ExcelChartMarkerType.Circle
                serie1.SerieFormat.MarkerBackgroundColorIndex = ExcelKnownColors.LightGreen
 
                serie2.DataPoints.DefaultDataPoint.DataLabels.IsValue = True
                serie2.DataPoints.DefaultDataPoint.DataLabels.IsSeriesName = True
                serie2.SerieFormat.MarkerStyle = ExcelChartMarkerType.Circle
                serie2.SerieFormat.MarkerBackgroundColorIndex = ExcelKnownColors.Red
 
                serie3.DataPoints.DefaultDataPoint.DataLabels.IsValue = True
                serie3.DataPoints.DefaultDataPoint.DataLabels.IsSeriesName = True
                serie3.SerieFormat.MarkerStyle = ExcelChartMarkerType.Circle
                serie3.SerieFormat.MarkerBackgroundColorIndex = ExcelKnownColors.Light_yellow
 
                'Positioning chart in the worksheet
                chart.TopRow = 8
                chart.LeftColumn = 1
                chart.BottomRow = 23
                chart.RightColumn = 8
 
                'Saving 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