![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Экспорт в Excel [D7]
fd979 © (2011-09-23 13:22:00)Меня интересует вопрос экспортиварования в Эксель. Вернее с его скоростью.
Если это делать с помощью OLE, то сам экспорт идет медленно, что достаточно очевидно (при определенных условиях).
Однако, мне интересно каким образом реализован экспорт например в таких программах как SQL Navigator. Там экспорт занимает очень непродолжительное время, а часто практически моментально.
ActiveExcelSheet := ActiveWorkbook.ActiveSheet;
Index := ActiveExcelSheet.Index;
NoOfColumns := Tablebox.GetColumnCount;
for I := 0 to NoOfColumns - 1 do
begin
FieldName := Tablebox.GetField(i).Name; //(это из экспортируемого приложения - Qlikview)
Cell := ConvertExcelColNumberToLetter (i+1) + '1';
SetRange(Index, Cell, FieldName);
end;
ActiveExcelSheet.Range['A1:'+Cell].Font.Bold := True;
ActiveExcelSheet.Range['A2'].Select;
ActiveExcelSheet.Paste;
NoOfColumns := Tablebox.GetColumnCount;
NoOfRows := Tablebox.GetNoOfRows;
S := CalcRange(NoOfRows, NoOfColumns);
Range := CalcRange(NoOfRows, NoOfColumns);
SetWrapText(Index, Range, FALSE);
ActiveExcelSheet.Range[Range].Borders.LineStyle := xlLineStyleNone;
Т.е. таким образом я приблизился к скорости экспортирования (копирование каждой ячейки идет неоправданно долго), однако, все же есть еще куда оптимизировать. Мне не ясно каким обзом в тех же SQL Navigator, Qlikview и т.д. реализован экспорт. На основе каких технологий?
SQLEX (2011-09-24 18:27:00) [1]http://www.delphimaster.ru/cgi-bin/forum.pl?id=1315402765&n=18
довольно быстро
Dimka Maslov (2011-09-23 22:33:00) [2]
> Но даже с этим у меня медленее.
Всё зависит от размера. Большой размер - большое время.
Cobalt (2011-09-23 17:39:00) [3]Через VariantArray несколько десятков строк - почти мгновенно.
Cobalt (2011-09-23 17:37:00) [4]CopyPaste
Все что надо знать про Excel, Delphi и данные
Читаем:
http://delphikingdom.com/asp/viewitem.asp?catalogid=1270
http://delphikingdom.com/asp/viewitem.asp?catalogid=1273
http://delphikingdom.com/asp/viewitem.asp?catalogid=1274
http://delphikingdom.com/asp/viewitem.asp?catalogid=1275
http://delphikingdom.com/asp/viewitem.asp?catalogid=1277
Медвежонок Пятачок (2011-09-23 13:45:00) [5]тупая двумерная таблица?
экспортируй в csv.
секунды не пройдет.
fd979 (2011-09-23 13:27:00) [6]
ActiveExcelSheet.Paste;
ну я так и делаю.
Но даже с этим у меня медленее.
Dimka Maslov (2011-09-23 13:25:00) [7]Можно, к примеру, запудзырить данные в буфер обмена, а ёкселя через оле заставить делать пастефромцлипбоард.