C#: Interop Excel SeriesCollection. Добавить с помощью формулы - PullRequest
0 голосов
/ 27 февраля 2020

Я использую шаблон Excel и открываю его с помощью C# interop

В моем шаблоне у меня есть эти графики

tero

И используя этот метод для создания графика

 private void CreateReportCharts(int?[] cellNumbers)
        {
            ChartObject TmvChart =(ChartObject)reportWorksheet.ChartObjects("Tmv");
            SeriesCollection TmvSeries = TmvChart.Chart.SeriesCollection();
            TmvSeries.Item(1).Formula = 
                $"=SERIES(,'Cell {cellNumbers[0].Value} {GroupId}'!$E$2:$E$21,'Cell {cellNumbers[0].Value} {GroupId}'!$D$2:$D$21,4)";

            ChartObject CapacityChart = (ChartObject)reportWorksheet.ChartObjects("Capacity");
            SeriesCollection CapacitySeries = CapacityChart.Chart.SeriesCollection();
            CapacitySeries.Item(1).Formula = 
                $"=SERIES(,'Cell {cellNumbers[0].Value} {GroupId}'!$F$2:$F$2291,'Cell {cellNumbers[0].Value} {GroupId}'!$D$2:$D$2291,4)";

            ChartObject DischChart = (ChartObject)reportWorksheet.ChartObjects("Disch");
            SeriesCollection DischSeries = DischChart.Chart.SeriesCollection();
            DischSeries.Item(1).Formula =
                $"=SERIES(,'Cell {cellNumbers[0].Value} {GroupId}'!$G$2:$G$2291,'Cell {cellNumbers[0].Value} {GroupId}'!$D$2:$D$2291,4)";

            for (int i = 1; i < cellNumbers.Length; i++)
            {
                TmvSeries.
                    Add(Type.Missing); //$"=SERIES(,'Cell {cellNumbers[i].Value} {GroupId}'!$E$2:$E$21,'Cell {cellNumbers[i].Value} {GroupId}'!$D$2:$D$21,4)"
                CapacitySeries.Item(i+1).Formula =
                    $"=SERIES(,'Cell {cellNumbers[i].Value} {GroupId}'!$E$2:$E$21,'Cell {cellNumbers[i].Value} {GroupId}'!$D$2:$D$21,4)";
                //CapacitySeries.
                //    Add($"=SERIES(,'Cell {cellNumbers[i].Value} {GroupId}'!$F$2:$F$2291,'Cell {cellNumbers[i].Value} {GroupId}'!$D$2:$D$2291,4)");

                //DischSeries.
                //    Add($"=SERIES(,'Cell {cellNumbers[i].Value} {GroupId}'!$G$2:$G$2291,'Cell {cellNumbers[i].Value} {GroupId}'!$D$2:$D$2291,4)");

            }
            ChartObject TempChart = (ChartObject)reportWorksheet.ChartObjects("Temp");
            Series TempSeries = TempChart.Chart.SeriesCollection(1);
            TempSeries.Formula = $"=SERIES(,'Temp °C.'!$C$2:$C$87,'Temp °C.'!$B$2:$B$87,1)";
        }

Проблемы возникают в следующей строке:

TmvSeries.Add(Type.Missing);

Как добавить новую серию только с формулой? Я также хочу иметь возможность показывать \ скрывать каждый график с помощью группового поля с правой стороны ...

Я также пытался использовать TmvSeries.NewSeries, но он не может показать \ скрыть с помощью группового блока

Есть идеи? спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...