Delphi 6 - Создание диаграммы Excel из приложения Delphi - данные и диаграмма на одной странице - PullRequest
2 голосов
/ 06 марта 2012

Мне нужно создать диаграмму в Excel в приложении Delphi на основе некоторых данных из таблицы.

Я создал таблицу Excel и заполнил n строк данных из таблицы. Теперь мне нужно сделать график на основе данных.

Мы должны добавить две записи (категории) Legent - D5: D15 и E5: E15 и одна метка горизонтальной (категории) оси -F5: F15

Я попробовал следующее, чтобы получить это. При выполнении я получил сообщение об ошибке

Метод 'setsourcedata' не поддерживается объектом автоматизации.

Я попробовал метод SeriesCollection.item.value, затем система выдала такое же сообщение.

procedure TForm1.Make_a_Chart;
var
  Sheets,Ch1 : Variant;
begin
  ch1 := XLApp.ActiveWorkBook.Sheets[1].ChartObjects.Add ( 500,100,400,200 ); // creates a new chart in the specified 
  Sheets := XLApp.Sheets;
  ch1.Chart.ChartWizard (
                         Sheets.Item['Delphi Data'].Range['D5:D15'],   // 1  Source
                         xlBarStacked, //  2  The chart type.
                         8,            //  3  Format - The option number for the built-in autoformats. Can be a number from 1 through 10, depending on the gallery type.
                         2,            //  4  PlotBy - Specifies whether the data for each series is in rows or columns. Can be one of the following XlRowCol constants.
                         1,            //  5  CategoryLabels - An integer specifying the number of rows or columns within the source range that contain category labels.
                         1,            //  6  SeriesLabels - An integer specifying the number of rows or columns within the source range that contain series labels.
                         False,        //  7  HasLegend - 'true' to include a legend.
                         'My Report',  // 8  Title - The Chart control title text.
                         'Y Axis',      // 9  CategoryTitle - The category axis title text.
                         'X Axis',      // 10  ValueTitle - The value axis title text
                         2                //  11  ExtraTitle - The series axis title for 3-D charts or the second value axis title for 2-D charts.
                       );
  ch1.setsourcedata(Sheets.Item['Delphi Data'].Range['E5:E15'],xlColumns,2);
  ch1.Chart.ChartType := xlBarStacked;
// ch1.SeriesCollection.Item[1].Values := Sheets.Item['Delphi Data'].Range['E5:E15'];
end;

1 Ответ

4 голосов
/ 06 марта 2012

Вы вызываете SetSourceData для объекта ChartObject , а не объекта диаграммы . Объект ChartObject является контейнером для объекта Chart. Объект Chart имеет метод SetSourceData , поэтому используйте его:

ch1.Chart.SetSourceData(Sheets.Item['Delphi Data'].Range['E5:E15'],xlColumns,2);

Редактировать: Ваш пример кода очень запутанный. Пожалуйста, при задании вопроса попробуйте привести в порядок свой код. Я вижу много неиспользуемых переменных, и вы используете переменную ch1, которая не объявлена ​​в разделе var.

...