Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Передача в Excel
|
|||
|---|---|---|---|
|
#18+
Формирую отчет в Excel, но данные передаются очень медленно Передача происходит следующим образом: данные из таблицы записываются в готовый шаблон: SELECT SPO, NPO,Cins, Fam, Nam, Sna, BData, Spa, Npa from &Ins where (Len(ALLTRIM(SPA))<4 OR NPA/100000<1) AND Cins>1000 into table n_nnp .Range("A8").Select i=8 Select n_nnp n=RECCOUNT() DO WHILE !EOF() rag="A"+ALLTRIM(STR(i)) .Range(rag).Select .Selection.EntireRow.Insert .Cells(i,2).Value=i-7 .Cells(i,3).Value=n_nnp.SPO .Cells(i,4).Value=n_nnp.NPO .Cells(i,5).Value=n_nnp.cins .Cells(i,6).Value=n_nnp.Fam .Cells(i,7).Value=n_nnp.Nam .Cells(i,8).Value=n_nnp.Sna .Cells(i,9).Value=n_nnp.Bdata .Cells(i,10).Value=n_nnp.Spa .Cells(i,11).Value=n_nnp.Npa SKIP i=i+1 ENDDO Можно ли как-то ускорить процесс (но не экспорт - нужно писать в шаблон)? Заранее спасибо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2004, 08:32 |
|
||
|
Передача в Excel
|
|||
|---|---|---|---|
|
#18+
2Helen_New В вашем способе - НЕТ, пока создатели VFP не сделают ранее связывание. Как делать щас : я ипользую VBA макрос в шаблоне который читает из DBF и выводит все данные в отчет. Работает очень быстро. Например отчет из 10000 строк выводится минуты за 2-3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2004, 08:59 |
|
||
|
Передача в Excel
|
|||
|---|---|---|---|
|
#18+
Еще как можно. Передавать надо массив. Пример от Aijik VFP7 и выше: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2004, 09:26 |
|
||
|
Передача в Excel
|
|||
|---|---|---|---|
|
#18+
2Crip А что передача через переменные и или через массив(по сути указатель) на уровне COM это один и тот-же способ ? Повторяю в изложенном способе ни как, а Ваш способ это СОВСЕМ другой способ. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2004, 09:38 |
|
||
|
Передача в Excel
|
|||
|---|---|---|---|
|
#18+
Довольно быстро получается копированием таблицы в EXCELевский файл. Примерно так: COPY TO ("File.xls") TYPE xl5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2004, 09:43 |
|
||
|
Передача в Excel
|
|||
|---|---|---|---|
|
#18+
Возможно тормозит то что вы позиционируетесь на ячейку, добавляете строку, а потом вставляете записи в каждом такте цикла. А если сначала добавить строки: Код: plaintext 1. 2. 3. 4. У меня такое добавление строк работает очень быстро. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2004, 11:07 |
|
||
|
Передача в Excel
|
|||
|---|---|---|---|
|
#18+
2YuriWhite Он не совсем другой. Это способ как раз подходит для быстрой и главное удобной работы через OLE Automation. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2004, 14:59 |
|
||
|
Передача в Excel
|
|||
|---|---|---|---|
|
#18+
Можно серьезно ускорить ввод данных в Excel, если работать через буфер обмена. Примерно так: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. Следует только помнить, что таким образом вставляется непрерывная последовательность ячеек. Т.е. если, например, надо заполнить первые 5 ячеек, потом пропустить 1 и заполнить еще 5 ячеек. То такая вставка затрет содержимое этой пропущенной ячейки, если только не разбить на 2 последовательные вставки, сначала первые 5, потом следующие 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2004, 21:41 |
|
||
|
Передача в Excel
|
|||
|---|---|---|---|
|
#18+
Hi YuriWhite! Есть существенная разница - вызывать через COM метод сервера 10000 раз, передавая каждый раз по "чайной ложке" информации, или вызвать всего 1 метод передав большой массив. Основное время как раз и тратится на все эти вызов/передача/ожидание ответа. Как альтернатива массиву - загнать нужную информацию в строку (разделяя поля TAB а записи CRLF) и её Paste в Excel - тоже весьма шустро - ну да там с типами данных могут быть кой какие проблемы. Кстати довольно неразумно сделано с подвалом - зачем его постоянно сдвигать и сдвигать вниз - лучше сразу загнать куда нужно и всё... Конечно если там вообще есть подвал 2 T0lik Иногда лучше жевать чем говорить. 2 vgross Да так будет весьма быстро, но с шаблоном не пройдёт - т.е. если и скидывать данные так, то потом либо их в шаблон Copy/Paste, либо наоборот - шапку и подвал отчёта из файла-шаблона в этот самый файл с данными перекидывать. Кстати в версиях фокса до VFP8 через TYPE XL5 сбрасывалось не более 16000 записей - в VFP8 это исправили. НО вся штука в том, что если сделать COPY TO .... TYPE FOX2X AS 866 - то такой файл Excel замечательно открывает своими силами - его потом можно подрыхтовать (красивые заголовки, итоги и т.п.) и сохранить в формате xlWorkbookNormal - т.е. формате текущей (установленной) версии Excel. Кстати созданный через TYPE XL5 отчёт тоже придётся пересохранять в "новом" формате - ну чтоб пользователю потом дурацкох вопросов по поводу устаревшего формата файла не задавалось. Posted via ActualForum NNTP Server 1.1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.11.2004, 14:00 |
|
||
|
Передача в Excel
|
|||
|---|---|---|---|
|
#18+
2 Helen_new Предложу как вариант не пользовать эхсель, а взять кокой нибудь эктивх спредшит и выводить в него, а потом уже сформированной файл открывать в эхселе. Не буду врать, точно не помню - делал как-то замеры. Эхсель против Формирование в ЭктивХ и открытие в Эхсель Первый вариант проигрывал на разнаых отчетах от 2 до 5 раз. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.11.2004, 14:55 |
|
||
|
Передача в Excel
|
|||
|---|---|---|---|
|
#18+
Как только появился Office 2000, Excel начал поддержку HTML формата, а после и XML формата. Даже для FP Dos подойдет вариант. В экселе разрисовываете шапку отчета , настраиваете печать, далее сохранить как htm или xml. Запихиваете из полученного файла в prg файл с помощью команды FPuts() например: =FPuts(handle,'<html xmlns:o="urn:schemas-microsoft-com:office:office" ') ...................... ...................... Втыкаем свои данные sele Result Scan =FPuts(handle,' <td >'+alltr(name_p)+'</td> ') && name_p и k1 поля курсора =FPuts(handle,' <td x:str="'+k1+ </td> ') ....................... EndScan Таким программным способом получаем текстовый файл html который открываем в Екселе Скорость работы охренительная :) Время фактически сводится к преобразованию dbf -> txt и времени открытия файла в екселе PS: для fpd в заголовке html используйте кодировку cp866 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.11.2004, 14:06 |
|
||
|
|

start [/forum/topic.php?fid=41&msg=32778835&tid=1595393]: |
0ms |
get settings: |
10ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
43ms |
get topic data: |
8ms |
get forum data: |
4ms |
get page messages: |
73ms |
get tp. blocked users: |
2ms |
| others: | 217ms |
| total: | 378ms |

| 0 / 0 |
