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


Автор: CompWorm 2.8.2006, 21:43
и так, есть данные в массиве. 
их, к примеру, можно зипихнуть в один из цтолбиков Excell
Далее хотелось бы график...  smile 
Такой график, положим, есть в программе - компонента TChart
можно ли его экспортировать его в Excell или Word?
и если нет, то как его построить хотя бы в Excell?  smile 

Буду рад выслушать любые предложения.

Добавлено @ 21:45 
мозно ли например сохранить Чарт как картинку, чтобы потом его подгрузить в Excell / Word smile 

Автор: Albinos_x 2.8.2006, 23:54
Код
...
Chart1.SaveToBitmapFile(FileName);
...


как вставить картинку в статье есть...

....
как сделать в Excel не скажу, т.к. пока сам не разбирался smile 

Автор: CompWorm 3.8.2006, 00:01
большое спсибо!
пока сделаю так.
сейчас пытаюсь нарыть в инете что нибудь по этой теме.
пока не очень.
если найду - выложу. 
Не найду - будем ждать пока на форум не заглянет гуру.

Автор: Albinos_x 3.8.2006, 00:21
автор не я (а из статьи в интернете), к сожалению автора забыл как величают:
Код

...    
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;    
...


Добавлено @ 00:24 
а вот пример от <Spawn>
http://forum.vingrad.ru/index.php?showtopic=43068&hl=chart
Код

var    
  Excel, WorkBook, WorkSheet, ChartObject, Rng: OleVariant;    
  RangeStr: WideString;    
begin    
  Excel := CreateOleObject('Excel.Application');    
  try    
    WorkBook := Excel.WorkBooks.Add;    
    WorkSheet := WorkBook.WorkSheets.Add;    
    WorkSheet.Cells[1, 1] := 'Axis 1 Name';    
    WorkSheet.Cells[2, 1] := 'Axis 2 Name';    
    WorkSheet.Cells[1, 2] := 12;    
    WorkSheet.Cells[2, 2] := 15;    
    ChartObject := WorkSheet.ChartObjects.Add(100, 100, 400, 400);    
    RangeStr := 'B1..B2';    
    Rng := WorkSheet.Range[RangeStr];    
    ChartObject.Chart.ChartWizard(Rng, 2);    
    ChartObject.Chart.HasTitle := True;    
    ChartObject.Chart.ChartTitle.Text := 'Test Chart';    
    ChartObject.Chart.Axes(1).HasTitle := True;    
    ChartObject.Chart.Axes(1).AxisTitle.Text := 'Axis Text';    
    RangeStr := 'A1..A2';    
    Rng := WorkSheet.Range[RangeStr];    
    ChartObject.Chart.Axes(1).CategoryNames := Rng;    
    Excel.Visible := True;    
  finally    
    Excel := Unassigned;    
  end;


Добавлено @ 00:26 
по аналогии можно сделать и с ExcelWorksheet1...

Автор: CompWorm 3.8.2006, 01:36
такой ответ меня бодрит! smile 

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