![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Передача массива чисел из прораммы с строку листа Excel [D7, Win95/98, NT4, Win2k, WinXP]
SMT © (2004-09-09 17:26:00)Уважаемые мастера,
Подскажите, пожалуйста, как программно передать из открытой программы в строку также открытого листа Excel массив вещественных чисел?
Игорь Степанов
SMT (2004-09-13 18:06:00) [1]Уважаемый IXT,
Пожалуйста, пошлите, если возможно, исходники Вашей программы с использованием TExcelApplication на мой адрес:
igorstep@12044.spb.edu
Заранее благодарю.
С уважением, Игорь Степанов
IXT (2004-09-10 10:07:00) [2]Если надо скину "прогу" с использованием TExcelApplication
Работает с excel-ем как OLE COM.
Когдато делал какуюто фигню. Там все достаточто просто.
Palladin (2004-09-10 00:57:00) [3]вру безбожно :) текстовик нужно сформировать и слить на диск, при использовании DDE на диск сливать не нужно, соотвессно быстрей...
Palladin (2004-09-10 00:50:00) [4]1 не проще ли тогда просто файл с разделителями TAB сформировать?
эксель начал понимать xml только с 2003, и то, я не уверен, ибо не ставил и не смотрел, читал только анонсы к 2003... и я уверен что эксель гораздо быстрей обработает текстовик чем распарсит xml...
2 на практике проверить конечно можно, что быстрее OLE + DDE или таки OLE + вызов импорта из текстового файла... но что то в ломы... думаю примерно одинаково...
jack128 (2004-09-10 00:41:00) [5]Palladin © (09.09.04 23:22) [7]
э-э-э.. Я думаю прямая запись в файл по сравнению с OLE имеет приемущества ;-) Правда Cуслик(с) тут возмущался про фиговую документацию Excel'я по этому поводу..
Palladin (2004-09-09 23:22:00) [6]Пожалуйста поподробней о xml и гиперскорости.
YurikGL (2004-09-09 23:19:00) [7]Делается olevariant-й массив и однин раз делается paste
Если нужна гиперскорость - используй xml
Palladin (2004-09-09 22:23:00) [8]Массив это круто, но как ты собрался расположить его на листе?
SMT (2004-09-09 21:16:00) [9]А можно ли все делать автоматичски, т.е. программно, чтобы никаких мануальных движений типа "делаешь Paste" не делать?
В моем случае речь идет о переводе в Exel очень больших массивов данных, а поэтому 1000 раз делать Paste не представляется возможным.
Игорь Степанов
Dimka Maslov (2004-09-09 17:52:00) [10]
uses Clipbrd;
procedure CopyArrayToClipboard(Data: array of Double; Row: Boolean = True);
// Row = True: запись данных в строку
// Row = False: в столбец
var
Str, Delimiter: string;
i, Lo, Hi: Integer;
begin
if Row then Delimiter := #9 else Delimiter := #13#10;
Lo := Low(Data);
Hi := High(Data);
for i := Lo to High do begin
Str := Str + FloatToStr(Data[i]);
if i < High then Str := Str + Delimiter;
end;
Clipboard.AsText := Str;
end;
Запускаешь прогу, открывает Ёxel и делаешь Paste.
MU (2004-09-09 17:31:00) [11]см.
http://www.delphimaster.ru/cgi-bin/faq.pl?look=1&id=988622198&n=23
м.б. вместо CreateOleObject использовать GetActiveOleObject
Digitman (2004-09-09 17:31:00) [12]через клипборд, например