I have a line chart in an Excel document. I need to display the last data label of a data series, my code looks like this:
<code>using OfficeOpenXml;
using OfficeOpenXml.Drawing.Chart;
class Program
{
static void Main()
{
ExcelPackage.LicenseContext = LicenseContext.NonCommercial;
var stream = new MemoryStream();
using (var package = new ExcelPackage())
{
var worksheet = package.Workbook.Worksheets.Add("Sheet1");
// Add headers for the data
worksheet.Cells["A1"].Value = "Date";
worksheet.Cells["B1"].Value = "Value";
// Define the start and end dates
DateTime startDate = new DateTime(2023, 1, 1);
DateTime endDate = new DateTime(2024, 1, 1);
// Add records for each day between the start and end dates
int row = 2;
for (DateTime date = startDate; date <= endDate; date = date.AddDays(1))
{
var r = new Random();
worksheet.Cells[$"A{row}"].Value = date; // Date
worksheet.Cells[$"A{row}"].Style.Numberformat.Format = "dd-mmm-yy";
worksheet.Cells[$"B{row}"].Value = r.NextDouble(); // Value
row++;
}
// Add a line chart
var chart = worksheet.Drawings.AddChart("lineChart", eChartType.Line) as ExcelLineChart;
chart.Title.Text = "Sample Line Chart";
chart.SetPosition(1, 0, 3, 0);
chart.SetSize(1200, 600);
// Add the main series to the chart
var series = chart.Series.Add(worksheet.Cells[$"B2:B{row - 1}"], worksheet.Cells[$"A2:A{row - 1}"]);
series.Header = "Series 1";
// Displays the series DataLabels.
series.DataLabel.ShowValue = true;
series.DataLabel.Font.Size = 12;
series.DataLabel.Position = eLabelPosition.Top;
// Save the package
var filePath = Path.Combine(Environment.CurrentDirectory, "SampleData.xlsx");
var fi = new FileInfo(filePath);
package.SaveAs(fi);
Console.WriteLine($"Data and chart created successfully at: {filePath}");
}
}
}
</code>
<code>using OfficeOpenXml;
using OfficeOpenXml.Drawing.Chart;
class Program
{
static void Main()
{
ExcelPackage.LicenseContext = LicenseContext.NonCommercial;
var stream = new MemoryStream();
using (var package = new ExcelPackage())
{
var worksheet = package.Workbook.Worksheets.Add("Sheet1");
// Add headers for the data
worksheet.Cells["A1"].Value = "Date";
worksheet.Cells["B1"].Value = "Value";
// Define the start and end dates
DateTime startDate = new DateTime(2023, 1, 1);
DateTime endDate = new DateTime(2024, 1, 1);
// Add records for each day between the start and end dates
int row = 2;
for (DateTime date = startDate; date <= endDate; date = date.AddDays(1))
{
var r = new Random();
worksheet.Cells[$"A{row}"].Value = date; // Date
worksheet.Cells[$"A{row}"].Style.Numberformat.Format = "dd-mmm-yy";
worksheet.Cells[$"B{row}"].Value = r.NextDouble(); // Value
row++;
}
// Add a line chart
var chart = worksheet.Drawings.AddChart("lineChart", eChartType.Line) as ExcelLineChart;
chart.Title.Text = "Sample Line Chart";
chart.SetPosition(1, 0, 3, 0);
chart.SetSize(1200, 600);
// Add the main series to the chart
var series = chart.Series.Add(worksheet.Cells[$"B2:B{row - 1}"], worksheet.Cells[$"A2:A{row - 1}"]);
series.Header = "Series 1";
// Displays the series DataLabels.
series.DataLabel.ShowValue = true;
series.DataLabel.Font.Size = 12;
series.DataLabel.Position = eLabelPosition.Top;
// Save the package
var filePath = Path.Combine(Environment.CurrentDirectory, "SampleData.xlsx");
var fi = new FileInfo(filePath);
package.SaveAs(fi);
Console.WriteLine($"Data and chart created successfully at: {filePath}");
}
}
}
</code>
using OfficeOpenXml;
using OfficeOpenXml.Drawing.Chart;
class Program
{
static void Main()
{
ExcelPackage.LicenseContext = LicenseContext.NonCommercial;
var stream = new MemoryStream();
using (var package = new ExcelPackage())
{
var worksheet = package.Workbook.Worksheets.Add("Sheet1");
// Add headers for the data
worksheet.Cells["A1"].Value = "Date";
worksheet.Cells["B1"].Value = "Value";
// Define the start and end dates
DateTime startDate = new DateTime(2023, 1, 1);
DateTime endDate = new DateTime(2024, 1, 1);
// Add records for each day between the start and end dates
int row = 2;
for (DateTime date = startDate; date <= endDate; date = date.AddDays(1))
{
var r = new Random();
worksheet.Cells[$"A{row}"].Value = date; // Date
worksheet.Cells[$"A{row}"].Style.Numberformat.Format = "dd-mmm-yy";
worksheet.Cells[$"B{row}"].Value = r.NextDouble(); // Value
row++;
}
// Add a line chart
var chart = worksheet.Drawings.AddChart("lineChart", eChartType.Line) as ExcelLineChart;
chart.Title.Text = "Sample Line Chart";
chart.SetPosition(1, 0, 3, 0);
chart.SetSize(1200, 600);
// Add the main series to the chart
var series = chart.Series.Add(worksheet.Cells[$"B2:B{row - 1}"], worksheet.Cells[$"A2:A{row - 1}"]);
series.Header = "Series 1";
// Displays the series DataLabels.
series.DataLabel.ShowValue = true;
series.DataLabel.Font.Size = 12;
series.DataLabel.Position = eLabelPosition.Top;
// Save the package
var filePath = Path.Combine(Environment.CurrentDirectory, "SampleData.xlsx");
var fi = new FileInfo(filePath);
package.SaveAs(fi);
Console.WriteLine($"Data and chart created successfully at: {filePath}");
}
}
}
Result of this code:
I need to show only the last value in the series.
I found an example applied in VB.
New contributor
jormope271297 is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.
1