Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: ActiveX/СОМ/CORBA > Создание диаграмм в Excel


Автор: s010m0n 18.12.2005, 15:22
Пишу следующий код:
Код

var vx,ar,ax:variant;
Begin
vx:=CreateOleObject('Excel.Application');
vx.WorkBooks.Open(GetCurrentDir+'\Itogi.xls');
vx.visible:=true;
vx.Workbooks[1].Sheets.Add(,,1,xlChart);
ar:=vx.Workbooks[1].Sheets.Item['Исходные данные'].Range['C8:G8'];
ax:=vx.Workbooks[1].Sheets.Item['Исходные данные'].Range['C1:G1'];
vx.Workbooks[1].ActiveSheet.SeriesCollection.Item[1].Values:=AR;
vx.Workbooks[1].ActiveSheet.SeriesCollection.Item[1].XValues:=AX;
vx.Workbooks[1].ActiveSheet.ChartType:=xl3DPie;
vx.Workbooks[1].ActiveSheet.SeriesCollection.Item[1].HasDataLabels:=True;
vx.Application.quit;
End;

При выполнении создаётся новый лист с полем под диаграмму, но выскакивает ошибка на строку vx.Workbooks[1].ActiveSheet.SeriesCollection.Item[1].Values:=AR; - "Невозможно получить свойство Item класса SeriesCollection". Причём в первый раз это сработало, потом работать отказалось( Стоит офис 2002 SP3. Что это - глюк или я что-то делаю не так?

Автор: YurikGL 18.12.2005, 15:51
Цитата
vx.Workbooks[1].ActiveSheet.SeriesCollection.Item[1].Values:=AR; - "Невозможно получить свойство Item класса SeriesCollection".


Попробуй
vx.Workbooks[1].ActiveSheet.SeriesCollection[1].Values:=AR; - "Невозможно получить свойство Item класса SeriesCollection".

или
vx.Workbooks[1].ActiveSheet.SeriesCollection.Items[1].Values:=AR; - "Невозможно получить свойство Item класса SeriesCollection".

Автор: Albinos_x 18.12.2005, 16:46
может попробовать так:
Код
...
Function AddChart(var name:string;
  ChartType:integer):boolean;
begin
 AddChart:=true;
 try
  name:=E.Charts.Add.Name;
  E.Charts.Item[name].ChartType:=ChartType;
 except
  AddChart:=false;
 end;
End;

//Область данных диаграммы
Function SetSourceData(Name,Sheet:variant;
  Range:string;XlRowCol:integer):boolean;
begin
 SetSourceData:=true;
 try
  E.ActiveWorkbook.Charts.Item[name].SetSourceData
   (Source:=E.ActiveWorkbook.Sheets.Item [Sheet].Range[Range].PlotBy:=XlRowCol);
 except
  SetSourceData:=false;
 end;
End;

Function SeriesCount (Name:variant):integer;
begin
 SeriesCount:=-1;
 try
  SeriesCount:=E.Charts.Item[name].SeriesCollection.Count;
 except
  SeriesCount:=-1;
 end;
End;


...

Автор: ilya198293 20.8.2007, 18:06
Когда пишу так
Код

name:=E.Charts.Add.Name;

то диаграмма создаётся, вот только на отдельном листе.
А как создать диаграмму по тексту...чтоб она генерилась на самом рабочем листе?

Добавлено через 2 минуты и 2 секунды
и вариант от <Spawn> тоже что-то не работает...

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)