Вниз
Скачать: CL | DM;

Передача графика TDBChart в Excel   Найти похожие ветки 

← →
Igor Stepanov   (2005-05-21 14:18) [0]

Уважаемые мастера,

Я использую компонент TDBChart, помещенный на компонент Quickreport, для рисования графика. Этот график нужно передать в открытую книгу Excel. Подскажите, пожалуйста, как правильно передать график в Excel.

С уважением, Игорь Степанов


← →
YurikGL ©   (2005-05-21 15:09) [1]

Я, конечно, не мастер, но можно передать данные, на основе которых формируется твой график в Excel и сделать Excel-й график. А можно попробовать передать график, как рисунок.


← →
Igor Stepanov   (2005-05-21 17:24) [2]

А можно ли передать TDBChart через OLEVariant?

Игорь Степанов


← →
YurikGL ©   (2005-05-21 17:26) [3]


> А можно ли передать TDBChart через OLEVariant?

Нет. Насколько я знаю. Это ж разные объекты и Excel вряд ли поддерживает борландовский TDBChart


← →
Igor Stepanov   (2005-05-22 17:34) [4]

Я нашел способ передачи в буфер обмена с помощью метода
QRDBChart.CopyToClipboardMetafile.

Работает хорошо и вручную прекрасно можно вставить в Word или Excel как графический объект. ОДнако я не могу вставить этот графический объект из буфера в Excel, используя метод Paste.

Подскажите, пожалуйста, как правильно использовать метод Paste.

С уважением, Игорь Степанов


← →
YurikGL ©   (2005-05-22 17:42) [5]

Попробуй App.ActiveSheet.paste;
Если не получится - создай макрос "как вставляешь" и посмотри как он выглядит.


← →
КиТаЯц ©   (2005-05-31 15:48) [6]

Самого этот вопрос интересовал... В какой-то ветке запостил, да все молчат...
Вот, сделал только что:

var XL: Variant;
...
try
   try
     XL := GetActiveOleObject("Excel.Application");
     except
     XL := CreateOleObject("Excel.Application");
     end;
 except
   raise Exception.Create("Ошибка Excel.Application");
 end;
XL.Visible := True;
XL.Workbooks.Add;
DBChart.CopyToClipboardBitmap;
...
здесь я передаю данные из DataSet...
...
XL.Range[XL.Cells[RecCount, 1], XL.Cells[RecCount, 1]].Select; //RecCount - количество переданных записей
XL.ActiveSheet.PasteSpecial (Link:=False, DisplayAsIcon:= False);

...


Проверено на OfficeXP. Хреново, что буфер используется. Коряво это как-то... Может кто подскажет как без клипборда?


← →
Igor Stepanov   (2005-06-05 09:56) [7]

Уважаемые мастера,

Большое спасибо за помощь и советы. Мои проблемы с Paste оказались простыми. Дело в том, что я использовал зачем-то метод
Clipboard.Open перед передачей метафайла в буфер обмена.   После его вызова буфер обмена как-то блокировался и передача не происходила, в результате чего буфер оказывался пуст. К сожалению, метод Paste не проверяет буфер на наличие содержимого, а просто выдает ошибку. Как только я этот метод Clipboard.Open убрал, все заработало, и на моих глазах рисунок появился на листе открытой книги в Excel. Значит, надо перед вызовом метода Paste, обязательно проверять буфер на наличие содержимого.

Таким образом, проблема закрыта. Благодарю всех за помощь.

С уважением и наилучшими пожеланиями,
Игорь Степанов



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

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.027 c
2-1144930611
Der Nechk@ssoff
2006-04-13 16:16
2006.04.30
Типизация файла


2-1144905410
Student iz KZ
2006-04-13 09:16
2006.04.30
Как производть локализацию приложения с помощью...


4-1139568531
Vlad2
2006-02-10 13:48
2006.04.30
Как определить, нажата ли левая клавиша мыши


2-1144938709
Ezorcist
2006-04-13 18:31
2006.04.30
Ошибка синтаксиса FROM


2-1145027166
Ибрагим
2006-04-14 19:06
2006.04.30
form




   Наверх