Создайте граф Excel с несколькими источниками данных для линейного графика в C #

Используя excel COM api из Microsoft.Office.Interop.Excel , я хочу создать таблицу Excel с линейным графиком. В общем, это работает. Но мне нужно добавить второй источник данных (строка) к графику. В Excel это можно сделать, щелкнув правой кнопкой мыши на графике и добавить источник данных в диапазон. Моя идея заключалась в том, чтобы сделать то же самое в C # и дважды вызвать chart.setDataSource() , но это не работает.

Мой текущий тестовый код:

  var excel = new Application() { Visible = true }; var workbook = excel.Workbooks.Add(XlWBATemplate.xlWBATWorksheet); var worksheet = (Worksheet)workbook.Sheets.Add(); // Demo Data: First column worksheet.Range["A1", "A1"].Value = "Duration"; worksheet.Range["A2", "A2"].Value = 10; worksheet.Range["A3", "A3"].Value = 35; worksheet.Range["A4", "A4"].Value = 3; // Demo Data: Second column worksheet.Range["B1", "B1"].Value = "Elements Count"; worksheet.Range["B2", "B2"].Value = 30; worksheet.Range["B3", "B3"].Value = 580; worksheet.Range["B4", "B4"].Value = 5; // Add chart ChartObjects xlCharts = (ChartObjects)worksheet.ChartObjects(Type.Missing); ChartObject chartObject = xlCharts.Add(Left: 0, Top: 200, Width: 600, Height: 300); Chart chart = chartObject.Chart; // Define source data for chart Range firstRowRange = worksheet.get_Range("A1", "A4"); Range secondRowRange = worksheet.get_Range("B1", "B4"); chart.SetSourceData(firstRowRange, Missing.Value); chart.ChartType = XlChartType.xlLine; 

Это создает линейную диаграмму, основанную на первом столбце (Duration). Но не включает второй столбец (количество элементов). Как упоминалось выше, я добавил второй столбец как второй источник данных вручную в Excel, чтобы продемонстрировать, как он должен выглядеть: Пример-скриншоты, как он должен выглядеть

Текущий код генерирует только синюю линию, но не красную. Как это можно сделать на C #?

Я нашел только обходное решение для размещения обоих столбцов параллельно и передать диапазон, такой как A1: B4, в метод SetSourceData . Но это не идеальное решение, так как моя продуктивная таблица больше, и обзор не оптимален, когда я помещаю все столбцы, которые необходимы для параллельного захвата.

Давайте будем гением компьютера.