Форум: "Corba";
Текущий архив: 2006.04.02;
Скачать: [xml.tar.bz2];
ВнизДиаграммы 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 вся ветка
Форум: "Corba";
Текущий архив: 2006.04.02;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.038 c