Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Диаграммы Excel


agisland ©   (2005-04-26 01:23:00) 

Как нарисовать из делфи диаграмму в excel

var
Excel,Book,List,Value,Chart:Variant;
LSID:Integer;
begin
try
Excel:=GetActiveOleObject('Excel.Application');
except
Excel := CreateOleObject('Excel.Application');
end;
LSID:=GetUserDefaultLCID;
Book:=Excel.WorkBooks.Add();
List:=Book.WorkSheets.Add();
а дальше...  Допустим диаграмма нужна по ячейкам a1:a5, b1:b5


HeadLess   (2005-05-17 14:35:00) [1]

А не проще ли подготовить макросы постороения диаграммы, а потом их просто вызывать из программы строчкой типа :

var
Excel,Book,List,Value,Chart:Variant;
...
...
Excel.run('My_Chart_Macro');


andrey__   (2005-05-16 16:12:00) [2]

>agisland ©   (26.04.05 01:23)  

Если у тебя получилось или у кого-то ещё то приведите полный пример. А то у меня на строке:
  Book.ActiveChart.HasTitle := True;
пишет "Нельзя установить свойство HasTitle класса Chart."


КиТаЯц   (2005-05-14 12:03:00) [3]

>Ольга   (26.04.05 07:48) [1]

Круто!

Может кто знает как передать в Excel готовую tDBChart???
Ну, типа as image...


Ольга   (2005-04-26 07:48:00) [4]

//  создание диаграммы
   Book.Charts.Add;
//  название диаграммы
   Book.ActiveChart.HasTitle := True;
   Book.ActiveChart.ChartTitle.Characters.Text := Title;
//  тип диаграммы
   Book.ActiveChart.ChartType:= xlLineStacked;
// источник данных  
   Range1:= Sheet.Range[Cells[r1, c1], Cells[r1, c2]];
   Range2:= Sheet.Range[Cells[r2, c3], Cells[r2, c4]];
   Book.ActiveChart.SetSourceData(Range1, PlotBy);
   Book.ActiveChart.SeriesCollection(1).XValues := Range2;
   
   PlotBy:= xlColumns;     //  по колонкам
   PlotBy:= xlRows;          //  по рядам

//  расположение диаграммы в книге
   Book.ActiveChart.Location(xlLocationAsNewSheet, NameSheet);  //   на  новом листе
   Book.ActiveChart.Location(xlLocationAsObject, NameSheet);       //  на  листе NameSheet
// ось абсцисс (значений)
  Book.ActiveChart.HasAxis(xlValue, xlPrimary) := True;
// отображение основных линий на диаграмме
  Book.ActiveChart.Axes(xlValue).HasMajorGridlines := True;
// отображение промежуточных линий на диаграмме
  Book.ActiveChart.Axes(xlValue).HasMinorGridlines := False;
//  заголовок оси
  Book.ActiveChart.Axes(xlValue).HasTitle := True;
  Book.ActiveChart.Axes(xlValue).AxisTitle.Characters.Text := TitleY;
   //  ось ординат (категорий)
   Book.ActiveChart.HasAxis(xlCategory, xlPrimary) := True;
   // отображение основных линий на диаграмме
   Book.ActiveChart.Axes(xlCategory).HasMajorGridlines := True;      
   // отображение промежуточных линий на диаграмме
   Book.ActiveChart.Axes(xlCategory).HasMinorGridlines := False;
//  заголовок оси
   Book.ActiveChart.Axes(xlCategory, xlPrimary).HasTitle := True;
   Book.ActiveChart.Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text := TitleX;

// добавить новую серию на диаграмму
  Range3:= Sheet.Range[Cells[r3, c1], Cells[r3, c4]];
  NewSeries:=Book.ActiveChart.SeriesCollection.Add(Range3);     //   диапазон значений
  Book.ActiveChart.SeriesCollection[1].XValues:= Range2;            //  диапазон категорий
  NewSeries:=Book.ActiveChart.SeriesCollection[Book.ActiveChart.SeriesCollection.Count];
  NewSeries.Name:=Caption;        // заголовок серии
  NewSeries.Border.Color:=SeriesColor;      //  цвет
  NewSeries.MarkerBackgroundColor:=SeriesColor;
  NewSeries.MarkerForegroundColor:=SeriesColor;
  NewSeries.Smooth:= True;     // сглаживание графика


Наверх

Титульная страница Поиск, карта сайта Написать письмо