установить единицы оси x в диаграмме Excel из Microsoft C# - PullRequest
1 голос
/ 13 июля 2020

Следующий код C# генерирует диаграмму с автоматически установленным месяцем и годом по оси X, как показано на первом изображении. В Excel вручную измените следующие параметры:

  1. Диаграмма «Ось формата» -> «Параметры оси» -> «Единицы» -> «Основные» значения на «1» и «Год»

создается второе изображение.

Номер Категория -> «Дата», «Тип» -> «Март-12»

создается третье изображение.

Как можно установить эти параметры с помощью C#?

            var chartRange = oSheet.Range[oSheet.Cells[3, 2], oSheet.Cells[3 + rno - 4, 6]];
            var chartContainer = charts.Add(left, top, width, height);
            var lineChart = chartContainer.Chart;

            lineChart.SetSourceData(chartRange);
            lineChart.Legend.Position = Excel.XlLegendPosition.xlLegendPositionTop;

            // barChart.Legend.Clear();    // removing legend

            Excel.Series series = lineChart.SeriesCollection(1) as Excel.Series;
            series.Interior.Color = Color.FromArgb(34, 92, 107);
            series.Border.Weight = 1;
            series.Border.Color = Color.FromKnownColor(KnownColor.Black);

            Excel.Axis axis1 = lineChart.Axes(1);
            axis1.TickLabelPosition = Excel.XlTickLabelPosition.xlTickLabelPositionNextToAxis;
            Excel.TickLabels tickLabels3 = axis1.TickLabels as Excel.TickLabels;
            tickLabels3.NumberFormat = "mm/yy";


            Excel.Axis axis2 = lineChart.Axes(2);
            Excel.TickLabels tickLabels2 = axis2.TickLabels as Excel.TickLabels;
            //tickLabels2.NumberFormat = "0.0%";


            lineChart.ChartType = Microsoft.Office.Interop.Excel.XlChartType.xlLine;
            lineChart.ChartWizard(Source: chartRange, Title: chartTitle, CategoryTitle: categoryTitle, ValueTitle: valueTitle);
            lineChart.ChartColor = 8;

            axis1.AxisTitle.Orientation = Excel.XlOrientation.xlHorizontal;
            axis1.AxisTitle.Font.Size = 8;
            axis2.AxisTitle.Font.Size = 12;

Диаграмма со сгенерированным Excel масштабированным месяцем / годом по оси x

Диаграмма с осью x по желанию

Диаграмма по желанию

1 Ответ

1 голос
/ 17 июля 2020

Я придумал, как это сделать:

  1. Цветовая тема задается добавлением атрибута ChartColor: цвет - это номер позиции в элементе управления «Цвет» в Excel :

             lineChart.SetSourceData(chartRange);
             lineChart.Legend.Position = Excel.XlLegendPosition.xlLegendPositionTop;
             lineChart.ChartColor = 8;
    
  2. Числовой формат - это «tickLabel3.NumberFormat», единицы измерения - атрибуты «axis1.BaseUnit», «axis1.MajorUnitScale» и «axis1.MajorUnit»

             Excel.Axis axis1 = lineChart.Axes(1);
             axis1.TickLabelPosition =   Excel.XlTickLabelPosition.xlTickLabelPositionNextToAxis;
             Excel.TickLabels tickLabels3 = axis1.TickLabels as Excel.TickLabels;
             tickLabels3.NumberFormat = "[$-en-US]mmm-yy;@";
             axis1.BaseUnit = Excel.XlTimeUnit.xlMonths;
             axis1.MajorUnitScale = Excel.XlTimeUnit.xlYears;
             axis1.MajorUnit = 1;
    
...