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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Диаграмма в Excel 
V
    Опции темы
Rodman
Дата 10.10.2007, 13:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


CIO
****


Профиль
Группа: Участник
Сообщений: 6144
Регистрация: 7.5.2006
Где: Ukraine ⇛ Kyiv ci ty

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



Дароф...

подскажите что делаю не так. вот есть код
Код

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ComObj;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var Excel, WorkBook, Sheet1, Sheet2, Chart:variant;
    Sheet, SeriesCollection:Variant;
    vrange:variant;
    i, j:integer;
begin
  Excel:=CreateOleObject('Excel.Application');
  Excel.Visible:=True;
  Excel.SheetsInNewWorkbook := 1;
  WorkBook:=Excel.Workbooks.Add;
  Sheet1:=WorkBook.WorkSheets[1];
//  Sheet2:=WorkBook.WorkSheets[2];
  Chart:=WorkBook.Charts.Add;
  Sheet1.Name:='Table 1';
//  Sheet2.Name:='Table 2';
//  for j:=1 to 2 do
  Sheet:=WorkBook.WorkSheets[1];
  for i:=1 to 2 do
  begin
     Sheet.Cells.Item[i,1].Value:='Name'+IntToStr(i);
     Sheet.Cells.Item[i,2].Value:=Random(1000);
  end;
//  vrange:=Sheet1.range['A1:A2'];
  vrange:=Sheet1.range['A1:B2'];
  SeriesCollection:=Chart.SeriesCollection;
  SeriesCollection.Add(vrange);
//  vrange:=Sheet1.Range['B1:B2'];
  SeriesCollection.Add(vrange);
  Excel:=UnAssigned;
end;

end.

получается не такая диаграмма как должна быть...

как сделать диаграмму как в прикрепленном файле?

Сенкс


Присоединённый файл ( Кол-во скачиваний: 11 )
Присоединённый файл  Example.7z 3,61 Kb
PM MAIL WWW Skype GTalk YIM MSN   Вверх
volvo877
Дата 10.10.2007, 14:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2073
Регистрация: 15.11.2004

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



А вот так попробуй:

Код

const
  xlColumnClustered = 51;
  xlRows = 1;
  xlColumns = 2;
procedure TForm1.Button1Click(Sender: TObject);
var Excel, WorkBook, Sheet1, Sheet2, Chart:variant;
    Sheet, SeriesCollection:Variant;
    vrange:variant;
    i, j:integer;
begin
  Excel:=CreateOleObject('Excel.Application');
  Excel.Visible:=True;
  Excel.SheetsInNewWorkbook := 1;
  WorkBook:=Excel.Workbooks.Add;
  Sheet1:=WorkBook.WorkSheets[1];
  Chart:=WorkBook.Charts.Add;

  Sheet1.Name:='Table 1';
  Sheet:=WorkBook.WorkSheets[1];
  for i:=1 to 2 do
  begin
     Sheet.Cells.Item[i,1].Value:='Name'+IntToStr(i);
     Sheet.Cells.Item[i,2].Value:=Random(1000)+2; // Это только для проверки, чтоб нулей не было...
  end;

  Excel.ActiveWorkbook.ActiveChart.ChartType:=xlColumnClustered;
  Excel.ActiveWorkbook.ActiveChart.SetSourceData
   (Source:=Excel.ActiveWorkbook.WorkSheets.Item[1].Range['A1:B2'],PlotBy:=xlRows);
  Excel:=UnAssigned;
end;


Это сообщение отредактировал(а) volvo877 - 10.10.2007, 14:39
PM MAIL   Вверх
Rodman
Дата 10.10.2007, 15:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


CIO
****


Профиль
Группа: Участник
Сообщений: 6144
Регистрация: 7.5.2006
Где: Ukraine ⇛ Kyiv ci ty

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



вроде то... щас попробуй под свою задачу прикрепить...

можно пояснения по поводу констант - кто такие и зачем?
PM MAIL WWW Skype GTalk YIM MSN   Вверх
volvo877
Дата 10.10.2007, 17:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2073
Регистрация: 15.11.2004

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



Цитата(Rodman @  10.10.2007,  14:06 Найти цитируемый пост)
по поводу констант - кто такие и зачем? 

С помощью xlColumnClustered задается тот самый вид столбиковой диаграммы, который тебе был нужен: разделенные столбцы (есть еще xlColumnStacked - это все в один столбец, снизу вверх).

Что касается xlRows - то это задает расположение серий, в твоем случае первый столбец - это название, а второй - данные, поэтому серии располагаются построчно... Если сделать наоборот:

Цитата

  A      B
1 Name1  Name2
2 20     30
, то серии будут располагаться в столбцах - тогда придется использовать xlColumns

Это сообщение отредактировал(а) volvo877 - 10.10.2007, 17:19
PM MAIL   Вверх
Lees
Дата 26.10.2007, 14:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



А мне бы создать диаграмму из вкладки "Нестандартные", называется "Парящие бруски". Вопрос такой: какой тип надо задать в ChartType и как создать 2 ряда, задав их значения не из ячеек а просто своими числами. Пасиба.
PM MAIL   Вверх
volvo877
Дата 26.10.2007, 14:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2073
Регистрация: 15.11.2004

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



Lees, вот так что-ли?

Код

const
  xlBuiltIn = 21;

...
  Excel:=CreateOleObject('Excel.Application');
  Excel.Visible:=True;

  Excel.SheetsInNewWorkbook := 1;
  WorkBook:=Excel.Workbooks.Add;
  Chart:=WorkBook.Charts.Add;

  Excel.ActiveWorkbook.ActiveChart.ApplyCustomType(ChartType:=xlBuiltIn, TypeName:='Floating Bars');
  Excel.ActiveWorkbook.ActiveChart.SeriesCollection.NewSeries;
  Excel.ActiveWorkbook.ActiveChart.SeriesCollection.Item[1].Values := VarArrayOf([1, 2, 3, 4]);
  Excel.ActiveWorkbook.ActiveChart.SeriesCollection.NewSeries;
  Excel.ActiveWorkbook.ActiveChart.SeriesCollection.Item[2].Values := VarArrayOf([2, 2, 2, 2]);

  Excel:=UnAssigned;
...

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "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.0561 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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