Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2013.10.20;
Скачать: [xml.tar.bz2];

Вниз

Экспорт в 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.002 c
1-1316694379
samalex2504
2011-09-22 16:26
2013.10.20
В TDateTimePicker автоматический переход от дней к месяцу и году


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


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


2-1340689730
selyanin
2012-06-26 09:48
2013.10.20
Ошибка добавления записи в dbgrid с несколькими lookup полями


15-1367851241
Писатель
2013-05-06 18:40
2013.10.20
Delphi XE5(поддержка Андроид)





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский