![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Диаграммы 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; // сглаживание графика