Оптимизация эксель файла
Как оптимизировать чтение excel документа
Вниз
Как оптимизировать чтение excel документа
msgipss (2007-03-20 16:41) [0]Здравствуйте знатоки,задача следующая: нужно сохранить содержимое excel документа в html формате.Сразу скажу, что родной метод объекта excel (сохранить как html) не подходит по многим причинам.Делаем программно следующее:1. создаем объект excel, загружаем в него документ 2. построчно разбираем его активные области (чтение всех необходимых свойств ячеек)3. собираем html в нужном нам виде.
Все работает, но достаточно медленно. Работа второго пункта очень тормозит. Получение каждой ячейки, чтение всех ее свойств.
Подскажите варианты оптимизации, если они возможны ? Или программно из внешнего приложения нельзя получить ту производительность (или близкую) которой достигает родной метод excel"я.Возможно ли прочитать документ (все свойства всех ячеек) в многопоточном режиме (разделив между ними документ на части).
Заранее благодарен за любую информацию по данному вопросу
umbra © (2007-03-20 19:14) [1]> Возможно ли прочитать документ (все свойства всех ячеек) > в многопоточном режименет.> Получение каждой ячейки, чтение всех ее свойств.> а это обязательно? неужели у каждой ячейки разные свойства? Может быть, можно читать диапазонами?
msgipss (2007-03-20 19:46) [2]>нет.нельзя прочитать в многопоточном режиме потому что сервер excel - sta?
>а это обязательно? неужели у каждой ячейки разные свойства? Может быть, >можно читать диапазонами?к сожалению нужно читать каждую ячейку *(, или стоп, что значит читать диапазонами ? Имеется в виду что можно прочитать в какую нить структуру указанный range и потом его обрабатывать в памяти ? Если так можно сделать - подскажите пожалуйста как это сделать ?
umbra © (2007-03-21 17:20) [3]> нельзя прочитать в многопоточном режиме потому что сервер > excel - sta?да :) . Но можно насоздавать кучу копий файла и работать с каждой отдельно. Но это уже извращение, по-моему> Имеется в виду что можно прочитать в какую нить структуру > указанный range и потом его обрабатывать в памяти ?Не слышал о таком.
А как к экселю доступ получаете? Раннее связывание должно быть быстрее.
msgipss (2007-03-23 08:56) [4]>А как к экселю доступ получаете? Раннее связывание должно быть быстрее.использую компонент с палитры, используется таблица типов, а значит и раннее связывание - насколько я помню - да ?
мдаа, плохо конечно, что все так медленно *(, аналогичный скрипт написанный на vba (в том же документе либо в загруженной надстройке) работает в разы быстрее (раз в 6-7). Должно быть конечно медленнее, но не в разы же *((.наверное придется по якутски делить логику на vba и delphi
Форум: "Corba";Поиск по всему сайту: www.delphimaster.net;Текущий архив: 2011.05.29;Скачать: [xml.tar.bz2];Наверх
Память: 0.74 MBВремя: 0.019 c
www.delphimaster.net
Как оптимизировать чтение excel документа
Форум: "Corba";Поиск по всему сайту: www.delphimaster.net;Текущий архив: 2011.05.29;Скачать: [xml.tar.bz2];Вниз
Как оптимизировать чтение excel документа
Здравствуйте знатоки,задача следующая: нужно сохранить содержимое excel документа в html формате.Сразу скажу, что родной метод объекта excel (сохранить как html) не подходит по многим причинам.Делаем программно следующее:1. создаем объект excel, загружаем в него документ 2. построчно разбираем его активные области (чтение всех необходимых свойств ячеек)3. собираем html в нужном нам виде.
Все работает, но достаточно медленно. Работа второго пункта очень тормозит. Получение каждой ячейки, чтение всех ее свойств.
Подскажите варианты оптимизации, если они возможны ? Или программно из внешнего приложения нельзя получить ту производительность (или близкую) которой достигает родной метод excel"я.Возможно ли прочитать документ (все свойства всех ячеек) в многопоточном режиме (разделив между ними документ на части).
Заранее благодарен за любую информацию по данному вопросу
umbra © (2007-03-20 19:14) [1]> Возможно ли прочитать документ (все свойства всех ячеек) > в многопоточном режименет.> Получение каждой ячейки, чтение всех ее свойств.> а это обязательно? неужели у каждой ячейки разные свойства? Может быть, можно читать диапазонами?
>нет.нельзя прочитать в многопоточном режиме потому что сервер excel - sta?
>а это обязательно? неужели у каждой ячейки разные свойства? Может быть, >можно читать диапазонами?к сожалению нужно читать каждую ячейку *(, или стоп, что значит читать диапазонами ? Имеется в виду что можно прочитать в какую нить структуру указанный range и потом его обрабатывать в памяти ? Если так можно сделать - подскажите пожалуйста как это сделать ?
umbra © (2007-03-21 17:20) [3]> нельзя прочитать в многопоточном режиме потому что сервер > excel - sta?да :) . Но можно насоздавать кучу копий файла и работать с каждой отдельно. Но это уже извращение, по-моему> Имеется в виду что можно прочитать в какую нить структуру > указанный range и потом его обрабатывать в памяти ?Не слышал о таком.
А как к экселю доступ получаете? Раннее связывание должно быть быстрее.
msgipss (2007-03-23 08:56) [4]>А как к экселю доступ получаете? Раннее связывание должно быть быстрее.использую компонент с палитры, используется таблица типов, а значит и раннее связывание - насколько я помню - да ?
мдаа, плохо конечно, что все так медленно *(, аналогичный скрипт написанный на vba (в том же документе либо в загруженной надстройке) работает в разы быстрее (раз в 6-7). Должно быть конечно медленнее, но не в разы же *((.наверное придется по якутски делить логику на vba и delphi
Форум: "Corba";Поиск по всему сайту: www.delphimaster.net;Текущий архив: 2011.05.29;Скачать: [xml.tar.bz2];Наверх
Память: 0.74 MBВремя: 0.02 c
www.delphimaster.net
В 60 раз сжимаем файл EXCEL
В 60 !!! раз сжимаем файл MS EXCEL с картинками
(созданный программно из 1С)
Все мы когда то сталкивались с экспортом картинок в файл MS EXCEL
(или семейство MS принцип один и тот же) Что интересно?
, покажу на примере если создать новый лист MS EXCEL и вставить в него картинку (*.jpg) размером 1,06 мб и сохранить
книга столько примерно и будет весить.
(это касается последних версий MS EXCEL) Но если программно в таблицу 1С вставить туже картинку
и сохранить в формате *.xls То новоиспеченное чудо будет весить `24,2 мб. !!! Красиво да. А если не одна картинка ? Давайте разберемся почему так происходит. 1. 1С сохраняет (экспортирует свою мxl таблицу по умолчанию)
в MS EXCEL в формате 05 MS EXCEL) - хорошо руками открываем файл и сохраняем в нужном нам формате.
Смотрим размер файла - 5,6 мб. уже хорошо, но еще нето. 2. В свойствах рисунка есть замечательная функция сжать....
выбираем ее и выбираем "Изменить разрешение для экрана и Интернета"
всего 96 точек на дюйм вместо 200 ))) Сохраняем файл и что мы видим файл весит 0,8 мб....да это прорыв.
Но это каждый раз ручками, лень.... Данная обработка не претендует на оригинальность,
ОНА ПРОСТО показывает на примере как программно можно добиться успеха в 60 раз ! файл в итоги будет весить 0,4 мб
(не без помощи языка VBA)