Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Экспорт в 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]

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


Наверх

Титульная страница Поиск, карта сайта Написать письмо