Диаграмма с группированными столбцами и диаграмма с уложенными столбцами - это два варианта диаграммы с колонками. Кластеризованная столбцовая диаграмма позволяет легко сравнивать значения по различным категориям, в то время как штабелированная столбцовая диаграмма показывает как общую сумму по различным категориям, так и долю каждого составляющего значения.
Прежде чем мы погрузимся в код, нам нужно понять, какой инструмент мы будем использовать: Free Spire.XLS for .NET. Эта библиотека представляет собой мощное решение для программного создания, изменения и преобразования документов Excel. Она поддерживает широкий спектр функций, включая добавление столбчатых диаграмм в Excel.
Чтобы добавить диаграмму на рабочий лист, можно воспользоваться методом Worksheet.Chart.Add(ExcelChartType chartType) и указать ExcelChartType как ColumnClustered. Следующий фрагмент кода демонстрирует, как создать кластеризованный столбчатый график, задать его положение и размер, а также настроить его внешний вид с помощью C#.
namespace CreateClusteredColumnChart
static void Main(string[] args)
// Создаем объект Workbook
Workbook workbook = new Workbook();
Worksheet sheet = workbook.Worksheets[0];
// Устанавливаем данные для графика
sheet.Range["A1"].Value = "Продукт";
sheet.Range["A2"].Value = "Диетическая Кока-Кола";
sheet.Range["A3"].Value = "Маунтин Дью";
sheet.Range["A4"].Value = "Диетическая Пепси";
sheet.Range["A5"].Value = "Вишневая Кока-Кола";
sheet.Range["B1"].Value = "Магазин A";
sheet.Range["B2"].NumberValue = 35000;
sheet.Range["B3"].NumberValue = 46000;
sheet.Range["B4"].NumberValue = 28000;
sheet.Range["B5"].NumberValue = 51000;
sheet.Range["C1"].Value = "Магазин B";
sheet.Range["C2"].NumberValue = 41000;
sheet.Range["C3"].NumberValue = 32000;
sheet.Range["C4"].NumberValue = 38000;
sheet.Range["C5"].NumberValue = 40000;
// Устанавливаем стиль ячеек
sheet.Range["A1:C1"].RowHeight = 15;
sheet.Range["A1:C1"].Style.Color = Color.Black;
sheet.Range["A1:C1"].Style.Font.Color = Color.White;
sheet.Range["A1:C1"].Style.VerticalAlignment = VerticalAlignType.Center;
sheet.Range["A1:C1"].Style.HorizontalAlignment = HorizontalAlignType.Center;
// Добавляем график на лист
Chart chart = sheet.Charts.Add(ExcelChartType.ColumnClustered);
// Устанавливаем диапазон данных для графика
chart.DataRange = sheet.Range["A1:C5"];
chart.SeriesDataFromRange = false;
// Устанавливаем позицию графика
// Устанавливаем заголовок графика
chart.ChartTitle = "Продажи безалкогольных напитков по магазинам";
chart.ChartTitleArea.IsBold = true;
chart.ChartTitleArea.Size = 12;
// Устанавливаем заголовок оси
chart.PrimaryCategoryAxis.Title = "Продукт";
chart.PrimaryCategoryAxis.Font.IsBold = true;
chart.PrimaryCategoryAxis.TitleArea.IsBold = true;
chart.PrimaryValueAxis.Title = "Продажи";
chart.PrimaryValueAxis.HasMajorGridLines = false;
chart.PrimaryValueAxis.TitleArea.IsBold = true;
chart.PrimaryValueAxis.TitleArea.TextRotationAngle = 90;
// Устанавливаем цвет серий, перекрытие, ширину промежутков и метки данных
ChartSeries series = chart.Series;
for (int i = 0; i < series.Count; i++)
ChartSerie cs = series[i];
cs.Format.Options.IsVaryColor = true;
cs.Format.Options.Overlap = -50;
cs.Format.Options.GapWidth = 350;
cs.DataPoints.DefaultDataPoint.DataLabels.HasValue = true;
// Устанавливаем позицию легенды
chart.Legend.Position = LegendPositionType.Top;
workbook.SaveToFile("ClusteredColumnChart.xlsx", ExcelVersion.Version2016);
Создание диаграммы со сложенными столбцами в Excel на C#
Диаграмму со сложенными столбцами можно создать практически так же, как и диаграмму со сгруппированными столбцами. Единственное отличие заключается в том, что вам нужно изменить тип диаграммы Excel с ColumnClustered на ColumnStacked.
static void Main(string[] args)
// Создаем объект Workbook
Workbook workbook = new Workbook();
Worksheet sheet = workbook.Worksheets[0];
// Устанавливаем данные для графика
sheet.Range["A1"].Value ="Продукт";
sheet.Range["A2"].Value ="Диетическая Кока-Кола";
sheet.Range["A3"].Value = "Маунтин Дью";
sheet.Range["A4"].Value="Диетическая Пепси";
sheet.Range["A5"].Value="Вишневая Кока-Кола";
sheet.Range["B1"].Value="Магазин A";
sheet.Range["B2"].NumberValue=35000;
sheet.Range["B3"].NumberValue=46000;
sheet.Range["B4"].NumberValue=28000;
sheet.Range["B5"].NumberValue=51000;
sheet.Range["C1"].Value="Магазин B";
sheet.Range["C2"].NumberValue=41000;
sheet.Range["C3"].NumberValue=32000;
sheet.Range["C4"].NumberValue=38000;
sheet.Range["C5"].NumberValue=40000;
// Устанавливаем стиль ячеек
sheet.Range["A1:C1"].RowHeight = 15;
sheet.Range["A1:C1"].Style.Color =Color.Black;
sheet.Range["A1:C1"].Style.Font.Color=Color.White;
sheet.Range["A1:C1"].Style.VerticalAlignment=VerticalAlignType.Center;
sheet.Range["A1:C1"].Style.HorizontalAlignment=HorizontalAlignType.Center;
// Добавляем график на лист
Chart chart = sheet.Charts.Add(ExcelChartType.ColumnStacked);
// Устанавливаем диапазон данных для графика
chart.DataRange = sheet.Range["A1:C5"];
chart.SeriesDataFromRange = false;
// Устанавливаем позицию графика
// Устанавливаем заголовок графика
chart.ChartTitle = "Продажи безалкогольных напитков по магазинам";
chart.ChartTitleArea.IsBold = true;
chart.ChartTitleArea.Size =12;
// Устанавливаем заголовок оси
chart.PrimaryCategoryAxis.Title ="Продукт";
chart.PrimaryCategoryAxis.Font.IsBold =true;
chart.PrimaryCategoryAxis.TitleArea.IsBold =true;
chart.PrimaryValueAxis.Title = "Продажи";
chart.PrimaryValueAxis.HasMajorGridLines =false;
chart.PrimaryValueAxis.TitleArea.IsBold =true;
chart.PrimaryValueAxis.TitleArea.TextRotationAngle = 90;
// Устанавливаем цвет серий, ширину промежутков и метки данных
ChartSeries series = chart.Series;
for (int i = 0; i < series.Count; i++)
ChartSerie cs = series[i];
cs.Format.Options.IsVaryColor = true;
cs.Format.Options.GapWidth = 270;
cs.DataPoints.DefaultDataPoint.DataLabels.HasValue = true;
cs.DataPoints.DefaultDataPoint.DataLabels.Position =DataLabelPositionType.Inside;
// Устанавливаем позицию легенды
chart.Legend.Position = LegendPositionType.Top;
workbook.SaveToFile("StackedColumnChart.xlsx", ExcelVersion.Version2016);
Заключение
В этой статье вы узнали, как создавать столбчатые диаграммы в Excel на C#. Будучи продвинутой библиотекой для Excel, Free Spire.XLS for .NET поддерживает множество других функций, таких как: