Модераторы: MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как можно получить массив данных Excel chart -а? 
V
    Опции темы
d0hast
  Дата 30.12.2008, 15:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 25.12.2008

Репутация: нет
Всего: нет



Привет всем!

Как можно получить набор данных (массив) на основании которого построен сам Excel Chart?
Я пробовал через серии, но чтото у меня не вышло.
Помогите, если кто сталкивался!
Заранее спасибо!
PM MAIL   Вверх
Rrader
  Дата 5.1.2009, 08:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Inspired =)
***


Профиль
Группа: Экс. модератор
Сообщений: 1535
Регистрация: 7.5.2005

Репутация: 6
Всего: 191



Ну давайте посмотрим... smile Для получения значений есть свойства Values и XValues объекта Series.

Например, строим график - точечную диаграмму, в одном столбце таблицы - значения по оси X, в другом - любая формула, которая даст значения по оси Y.

На VBA получение значений (точек), по которым построен график, будет выглядеть следующим образом:
Код

Option Explicit

Sub MySub()
  Dim I As Long
  Dim X, Y As Double
  Dim CurChart As Chart
  With Application
    ' Диаграмма
    Set CurChart = .ActiveSheet.ChartObjects(1).Chart
    For I = 1 To CurChart.SeriesCollection(1).Points.Count
      X = .WorksheetFunction.Index(CurChart.SeriesCollection(1).XValues, I)
      Y = .WorksheetFunction.Index(CurChart.SeriesCollection(1).Values, I)
      MsgBox "(" & X & " ; " & Y & ")"
    Next I
  End With
End Sub

На Delphi соответственно:
Код

procedure TForm1.Button1Click(Sender: TObject);
var
  App, Sheet, Chart: OleVariant;
  I: Integer;
  X, Y: Real;
begin
   App := ExcelApplication1.Application;
   Sheet := App.ActiveSheet;
   { Диаграмма }
   Chart := Sheet.ChartObjects(1).Chart;
   for I := 1 to Chart.SeriesCollection(1).Points.Count do
   begin
     X := App.WorksheetFunction.Index(Chart.SeriesCollection(1).XValues, I);
     Y := App.WorksheetFunction.Index(Chart.SeriesCollection(1).Values, I);
     ShowMessage('(' + FloatToStr(X) + ' ; ' + FloatToStr(Y) + ')');
   end;
   Chart := Unassigned;
   Sheet := Unassigned;
   App := Unassigned;
end;


Это сообщение отредактировал(а) Rrader - 5.1.2009, 08:47


--------------------
Let's do this quickly!
Rest in peace, Vit!
PM MAIL Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: ActiveX/СОМ/CORBA"

Rrader
Girder

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


  • Литературу по Delphi обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Delphi
  • Вопросы по SQL и вопросы по базам данных, не связанные с Delphi, задавать здесь

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Rrader, Girder.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: ActiveX/СОМ/CORBA | Следующая тема »


 




[ Время генерации скрипта: 0.0387 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.