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