04.12.2003, 18:53 | #1 |
Участник
|
Вот - про быстр. Ексель, буфер обмена, и т.д.
PHP код:
Эта зараза встраивается методом в ComExcelDocument_RU, и использует для массового вывода данных системный буфер обмена. Если где чего ошибся, или непонятно буит, могу не эти "размышления" подкинуть, а готовый метод для вышеназванного класса. Почти (только по стрингам) совместимый с InsertValue... Просьба помидорами не кидать!:D |
|
04.12.2003, 19:01 | #2 |
Administrator
|
Я отключил смайлики в Вашем сообщении. Было неудобно читать.
Надеюсь, вы на меня не в обиде
__________________
Not registered yet? Register here! Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me |
|
04.12.2003, 19:08 | #3 |
Участник
|
И какого лешего :О превратилось в непотребщину?
О! В ответе на сообшение нормально кажет! +++ Большое человеческое спасибо! А то у меня как-то все мысли о том, чтобы этот код хоть у кого-нить заработал... |
|
05.12.2003, 09:34 | #4 |
Участник
|
А как забороли проблему с NT-операционками, когда в вызывающем приложении обязательно должна раскладка клавиатуры русская стоять?
|
|
27.02.2004, 12:09 | #5 |
Участник
|
Случилось чудо!
Мне дама подсказала решение под 2К - нужно делать не просто вставку, а специальную. "Только текст". В макросе VBA это выглядит Цитата:
ActiveSheet.PasteSpecial Format:="Текст", Link:=False, DisplayAsIcon:= False
... Добавка: PHP код:
Ураааа!!! З.Ы. А вот так можно выставить параметры страницы в Excel-e - : PHP код:
... еще добавка: попробуйте вставить в ячейку А1 вот такую беду - 'a'+num2char(9)+'b'+num2char(13)+num2char(10)+'c'+num2char(9)+'d' ... |
|
27.02.2004, 12:38 | #6 |
Участник
|
Это что быстрее?
Можно немного уточнить:
1) Вставлять в ексель посредством свзяки COM+буфер обмена, оказывается быстрее чем просто COM ? (Если да - то во скоко раз быстрее примерно ?) 2) Или какие то еще приемущества дает?
__________________
Уточните значение слов и вы избавите человечество от половины его заблуждений. (Рене Декарт) / Axapta 2.5 |
|
27.02.2004, 13:10 | #7 |
Участник
|
1) заметно быстрее. Раз эдак в 10 выводит ОДИН ДИАПАЗОН. Т.е. если этим методом вставлять один большой массив значений с соотв. разделителями, то будет махом. Если же много маленьких ячеечек - то всего процентов 10-15 выигрыш.
Например, на табеле, с его обозначениями дней/времен, вставка только этих самых строчек по 16 полей за раз делает процесс... Гм... внушающим доверие пользователя. А есть отчет, где 1,5 тыс записей на 22 поля (по строке на вставку) выводятся за 45-50 сек. 2) Дешево и сердито. Быстро и тупо. В общем-то, других преимуществ не знаю... |
|
27.02.2004, 14:52 | #8 |
NavAx
|
Цитата:
1) заметно быстрее. Раз эдак в 10 выводит ОДИН ДИАПАЗОН. Т.е. если этим методом вставлять один большой массив значений с соотв. разделителями, то будет махом. Если же много маленьких ячеечек - то всего процентов 10-15 выигрыш.
И спасибо автору!!! |
|
27.02.2004, 18:01 | #9 |
Участник
|
"Сэнк ю, сэнк ю!" (с)
А еще у меня припасена фигня, которая из ActiveX MS Web Sheet (милая имитация листа Экселя) контрола на форме читает вставленные пользователем записи с одновременной проверкой и обратной связью с пользователем. Импорт с юзверевским лицом, так сказать... Никому не нужно? |
|
27.02.2004, 19:44 | #10 |
Участник
|
Цитата:
Изначально опубликовано DSV
1) заметно быстрее. Раз эдак в 10 выводит ОДИН ДИАПАЗОН. Т.е. если этим методом вставлять один большой массив значений с соотв. разделителями, то будет махом. Если же много маленьких ячеечек - то всего процентов 10-15 выигрыш. |
|
27.02.2004, 19:49 | #11 |
Участник
|
Цитата:
DSV, можно этот совет в FAQ вставить?
Особенно учитывая тот факт, что участник POS тоже не возражает. |
|
27.02.2004, 19:51 | #12 |
Участник
|
ok. спасибо
|
|
27.02.2004, 19:52 | #13 |
Участник
|
Абсолютно всеми своими лапами за!
З.Ы. Да, действительно, это не показалось - с одного IP мы... |
|
27.02.2004, 22:18 | #14 |
Участник
|
два молодца, одинаковых с... ip.
панимаешь. хорошо, спасибо. |
|
28.02.2004, 23:35 | #15 |
Участник
|
Тоже решал проблему скорости экспорта - результат действительно (очень) зависит от количества ячеек. Можно ещё целыми блоками копировать-вставлять, т.е. по несколько строк (я для теста кидал 10000 строк по 40 столбцов, но не суть).
Comma separated текстовый файл, открытый через ShellExecute ("excel.exe мой файл") работает быстрее, чем copy\paste. Проблем две - Excel конвертирует данные как захочет. Особенно это касается дат. Если научится такое отключать, то через тхт будет лучше всего. После DDE. - Проблема с кодировкой. Уже не помню, как победил. А ещё можно использовать Microsoft Spreadsheet ActiveX прямо в Axapta. Путь по системе меньше, скорость намного больше. Только опять же проблема с кодировкой. Зато юзверь может нажать кнопку и получить то же самое уже в самом Excel (и тоже очень быстро). А вообще, посмотрите с какой скоростью работает экспорт MS SQL Server, и всем всё сразу станет ясно. |
|
29.02.2004, 10:14 | #16 |
Участник
|
Ну да.
Это когда много и строк. А форматированный документ? |
|
29.02.2004, 11:22 | #17 |
Участник
|
Строгое ИМХО, исходя из опыта.
- Форматированый документ - это либо типовая форма, либо какой-то специализированый документ компании. - В первом случае документ разумнее рисовать в Аксапте. Тем более, что в компаниях-внедренцах на одних и тех же проектах используются одни и те же документы. И каждый раз их почему-то рисуют заново. До сих пор не понимаю, почему MBS и Локализатор не создали проект по сопровождению отчётных документов (ОС-Х, М-Х и т.п.). Вместо этого они почему-то создали печать в Excel. - Во втором случае в 99% случаев можно обойтись автоотчётами. - Привязка к Excel - это неправильно с точки зрения проектирования. Вы не должны расчитывать на сторонний продукт - это вызывает больше накладных расходов чем вы предполагаете. - Расчитывать на "малое количество строк" - прямой путь к ограничению возможностей системы. |
|
29.02.2004, 13:22 | #18 |
Участник
|
Ок.
Как средствами автоотчета реализовать функционал сводных таблиц Excel? Как быстро выкрыжить два произвольно-случайных набора данных? |
|
29.02.2004, 13:45 | #19 |
Участник
|
Прошу прощения. Речь шла про автодизайн.
Сводные таблицы формируются при помощи OLAP. И не забывайте про ActiveX - вместо того, чтобы полностью использовать иную программу, сократите привязку хотя бы до ActiveX объекта (Microsoft Office Privot Table 9\10). Опять же - внутри процесса (системного) обмен с COM-обьектом быстрее. Поймите, это не Excel разработал сводные таблицы. Просто в Excel есть реализация функций работы с ними. Как и ещё у миллиона продуктов. |
|
29.02.2004, 16:09 | #20 |
Участник
|
OLAP - это, конечно, круто. И автодизайн - тоже круто.
Но их программировать все ж таки надо. У нас применяется несколько отчетов, выгружающих строки в Эксель, данные положены со значительным запасом. Юзеры на их основе могут предаться различного рода извращениям. Так, мне к примеру, жутко лень делать отчет для профкома, сортированный по полу, отделу и фамилии. А из полуфабрикатного отчета "его любая баба сделает" (с) Профессор Преображенский |
|
|
Похожие темы | ||||
Тема | Ответов | |||
фильтр на копировании в буфер обмена | 15 | |||
Тормозит копирование строк в буфер обмена | 20 | |||
Системный буфер обмена | 15 | |||
Не копирует из display-метода в буфер обмена | 6 | |||
Буфер обмена | 1 |
|