Конференция "Corba" » Как оптимизировать чтение excel документа [Delphi, Windows]
 
  • msgipss (20.03.07 16:41) [0]
    Здравствуйте знатоки,
    задача следующая: нужно сохранить содержимое excel документа в html формате.
    Сразу скажу, что родной метод объекта excel (сохранить как html) не подходит по многим причинам.
    Делаем программно следующее:
    1. создаем объект excel, загружаем в него документ
    2. построчно разбираем его активные области (чтение всех необходимых свойств ячеек)
    3. собираем html в нужном нам виде.

    Все работает, но достаточно медленно. Работа второго пункта очень тормозит. Получение каждой ячейки, чтение всех ее свойств.

    Подскажите варианты оптимизации, если они возможны ? Или программно из внешнего приложения нельзя получить ту производительность (или близкую) которой достигает родной метод excel'я.
    Возможно ли прочитать документ (все свойства всех ячеек) в многопоточном режиме (разделив между ними документ на части).

    Заранее благодарен за любую информацию по данному вопросу
  • umbra © (20.03.07 19:14) [1]

    > Возможно ли прочитать документ (все свойства всех ячеек)
    > в многопоточном режиме

    нет.

    > Получение каждой ячейки, чтение всех ее свойств.
    >

    а это обязательно? неужели у каждой ячейки разные свойства? Может быть, можно читать диапазонами?
  • msgipss (20.03.07 19:46) [2]
    >нет.
    нельзя прочитать  в многопоточном режиме потому что сервер excel - sta?

    >а это обязательно? неужели у каждой ячейки разные свойства? Может быть, >можно читать диапазонами?
    к сожалению нужно читать каждую ячейку *(, или стоп, что значит читать диапазонами ? Имеется в виду что можно прочитать в какую нить структуру указанный range и потом его обрабатывать в памяти ? Если так можно сделать - подскажите пожалуйста как это сделать ?
  • umbra © (21.03.07 17:20) [3]

    > нельзя прочитать  в многопоточном режиме потому что сервер
    > excel - sta?

    да :) . Но можно насоздавать кучу копий файла и работать с каждой отдельно. Но это уже извращение, по-моему

    > Имеется в виду что можно прочитать в какую нить структуру
    > указанный range и потом его обрабатывать в памяти ?

    Не слышал о таком.

    А как к экселю доступ получаете? Раннее связывание должно быть быстрее.
  • msgipss (23.03.07 08:56) [4]
    >А как к экселю доступ получаете? Раннее связывание должно быть быстрее.
    использую компонент с палитры, используется таблица типов, а значит и раннее связывание - насколько я помню - да ?

    мдаа, плохо конечно, что все так медленно *(, аналогичный скрипт написанный на vba (в том же документе либо в загруженной надстройке) работает в разы быстрее (раз в 6-7). Должно быть конечно медленнее, но не в разы же *((.
    наверное придется по якутски делить логику на vba и delphi
 
Конференция "Corba" » Как оптимизировать чтение excel документа [Delphi, Windows]
Есть новые Нет новых   [134431   +10][b:0][p:0]