Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2013.10.20;
Скачать: CL | DM;

Вниз

Экспорт в Excel   Найти похожие ветки 

 
fd979   (2011-09-23 13:22) [0]

Меня интересует вопрос экспортиварования в Эксель. Вернее с его скоростью.
Если это делать с помощью 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 и т.д. реализован экспорт. На основе каких технологий?


 
Dimka Maslov ©   (2011-09-23 13:25) [1]

Можно, к примеру, запудзырить данные в буфер обмена, а ёкселя через оле заставить делать пастефромцлипбоард.


 
fd979   (2011-09-23 13:27) [2]

 ActiveExcelSheet.Paste;
ну я так и делаю.
Но даже с этим у меня медленее.


 
Медвежонок Пятачок ©   (2011-09-23 13:45) [3]

тупая двумерная таблица?

экспортируй в csv.
секунды не пройдет.


 
Cobalt ©   (2011-09-23 17:37) [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


 
Cobalt ©   (2011-09-23 17:39) [5]

Через VariantArray несколько десятков строк - почти мгновенно.


 
Dimka Maslov ©   (2011-09-23 22:33) [6]


> Но даже с этим у меня медленее.


Всё зависит от размера. Большой размер - большое время.


 
SQLEX ©   (2011-09-24 18:27) [7]

http://delphimaster.net/view/2-1315402765/
довольно быстро



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

Текущий архив: 2013.10.20;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.005 c
2-1340689730
selyanin
2012-06-26 09:48
2013.10.20
Ошибка добавления записи в dbgrid с несколькими lookup полями


2-1359545925
aka
2013-01-30 15:38
2013.10.20
Asm <--> машинный код


8-1214420600
Пётр
2008-06-25 23:03
2013.10.20
Альбомная графика в mp3


2-1359017561
Вася
2013-01-24 12:52
2013.10.20
функция SleepEx в потоках


2-1359528835
aka
2013-01-30 10:53
2013.10.20
Ширина букв шрифта