Создайте граф 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, чтобы продемонстрировать, как он должен выглядеть: Пример-скриншоты, как он должен выглядеть
- Как форматировать столбцы в пустой лист excel?
- Excel - Вставка значения ячейки в имени столбца формулы
- Используйте свойство ClassModule для добавления ключа Array
- Помощь в создании конкретной инструкции IF в Excel
- Как автоматически вводить серию чисел в Excel
Текущий код генерирует только синюю линию, но не красную. Как это можно сделать на C #?
Я нашел только обходное решение для размещения обоих столбцов параллельно и передать диапазон, такой как A1: B4, в метод SetSourceData
. Но это не идеальное решение, так как моя продуктивная таблица больше, и обзор не оптимален, когда я помещаю все столбцы, которые необходимы для параллельного захвата.
- Поля группы и суммы в сводной таблице
- Как фильтровать текстовую ячейку String?
- Форматирование номера Excel. Относитесь к моей клетке как к числу, но оставляйте ее форматирование в покое! (то есть трейлинг 0)
- Переименовать имя листа в имя таблицы
- Функция ROW () ведет себя по-разному внутри SUM () и SUMPRODUCT ()
- Как получить конкретные данные в столбце, используя только данные из одной ячейки
- Теперь () дает ошибку
- Ссылка Bottom Up в Ms Excel