Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.04.02;
Скачать: CL | DM;

Вниз

Диаграммы Excel   Найти похожие ветки 

 
agisland ©   (2005-04-26 01:23) [0]

Как нарисовать из делфи диаграмму в 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


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

//  создание диаграммы
   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;     // сглаживание графика


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

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

Круто!

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


 
andrey__   (2005-05-16 16:12) [3]

>agisland ©   (26.04.05 01:23)  

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


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

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

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



Страницы: 1 вся ветка

Текущий архив: 2006.04.02;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.034 c
15-1141471106
Pazitron_Brain
2006-03-04 14:18
2006.04.02
Службы на подобии web2mail.com


15-1142069804
Volf_555
2006-03-11 12:36
2006.04.02
Со вчерашнего дня Explorer.exe занимает 99% памяти - что за бред?


15-1141644133
Wolfram
2006-03-06 14:22
2006.04.02
Алгоритм MD5


1-1141210945
eger
2006-03-01 14:02
2006.04.02
Утечка памяти


15-1142244055
Nic
2006-03-13 13:00
2006.04.02
Что думаете о дизане компашки?