How to delete Excel chart legend in C#, VB.NET?
This article explains how to delete chart legend using XlsIO.
What is the use of chart legend?
Most of the charts use legend to help readers understand the charted data. Whenever a chart is created in Excel, legend for the chart is automatically generated at the same time. A chart will not have a legend if it is manually removed, but can be retrieved.
Code snippet to delete chart legend
Delete chart legend using Delete() method.
//Delete chart legend chart.Legend.Delete();
Applicable properties for chart legend
Below is the list of other common properties applicable for chart legend.
1. Position
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 chart legend.
To know more about creating charts with various settings using XlsIO, please refer the documentation.
The following C#/ VB.NET complete code snippet shows how to delete chart legend 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_Clustered; //Assign data chart.DataRange = worksheet["A1:D6"]; chart.IsSeriesInRows = false; //Apply chart elements //Set chart title chart.ChartTitle = "Clustered Column Chart"; //Delete chart legend chart.Legend.Delete(); //Set data labels 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; //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
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_Clustered 'Assign data chart.DataRange = worksheet("A1:D6") chart.IsSeriesInRows = False 'Apply chart elements 'Set chart title chart.ChartTitle = "Clustered Column Chart" 'Delete chart legend chart.Legend.Delete() '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 serie2.DataPoints.DefaultDataPoint.DataLabels.IsValue = True serie3.DataPoints.DefaultDataPoint.DataLabels.IsValue = True 'Positioning the 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