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

Вниз

Работа в Word   Найти похожие ветки 

 
Юрий Федоров   (2004-02-05 21:02) [0]

Доброе время суток.
По долгу службы пришлось парсить документы Word.
Складывается непонятная (и неприятная ситуация)
Два варианта
1. Word уже запущен, и целевой документ в нем открыт.
Я действую по совету Тенцера - подключаюсь к уже запушенной копии и запускаю процесс
2. Word не был запущен (или был, но целевой документ в нем не открыт)
Действую стандартно
CreateOleObject(еслпи надо), открываю документ. и запускаю процесс.
Проблема
Вариант 2 работает приблизиительно в 5 раз медленнее, чем вариант 1.
Какие будут мысли?
Версия офис - 2000
Единственное, что я пока придумал как возможную причину - у меня непропатченный Word...


 
Nikolay M.   (2004-02-05 21:12) [1]

А работает медленно именно подъем СОМ-сервера или собственно работа с ним?


 
Юрий Федоров   (2004-02-05 21:18) [2]

собственно работа
подъем - это понятно, что какое-то время должно занять


 
Nikolay M.   (2004-02-05 22:16) [3]


> подъем - это понятно, что какое-то время должно занять

Ну естественно.
А ты через раннее или позднее?
Кстати, может, у тебя ворд во втором случае видимый или сообщения обрабатывает?


 
Юрий Федоров   (2004-02-05 22:23) [4]

Через раннее.
_Application скрываю (Visible:=false);
Впрочем, от этого не зависит (у меня только чтение документа)
Насчет сообщений - не в курсе, как определить, обрабатывает или нет ?


 
Nikolay M.   (2004-02-05 22:30) [5]

Попробуй
WordApp.ScreenUpdating[LOCALE_USER_DEFAULT] := False;
или
WordApp.EnableEvents := False;
?


 
Юрий Федоров   (2004-02-05 23:24) [6]

По логике все наоборот
если документ был (на экране, видимый всем) - то нормально
если его не было - морозит
:-(


 
Rouse_   (2004-02-05 23:44) [7]

Скорее ошибка в том что парсерить ты начинаешь при создании объекта TMSOfficeExecutor в котором у тебя и происходит FApp:=CreateOleObject(sApp) as _Application; (сори что переношу беседу из аси...)
А я советую, делать
FApp := CreateOleObject("Word.Application");
FApp.Documents.Open(FileName := "c:\tmp.doc", ReadOnly:=False);
FApp.Visible := False;

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


 
Юрий Федоров   (2004-02-06 00:27) [8]

>>Rouse_ © (05.02.04 23:44) [7]
Так вот ведь
FApp:=CreateOleObject(sApp) as _Application; (сори что переношу беседу из аси...)
via
FApp := CreateOleObject("Word.Application");

Это то же самое

далее опять то же самое
то есть смысл вопроса
почему отличается скорость выполнения методов (уже при парсинге) в случае открытия документа визуальными средствами Word против случая открытия его же средствами методов Word как COM объекта

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


 
Nikolay M.   (2004-02-06 09:26) [9]


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

Ну, если время поджимает, можно с глюками ворда не разбираться, а пойти по пути наименьшего сопротивления: открыть документ через шелл и цепляться к уже открытому документу :)
А можешь мне на мыло минимальный кусок тормозящего кода кинуть? Даже интересно, черт возьми.


 
REA   (2004-02-06 10:39) [10]

Не в тему, но по теме: вопросы автоматизации ворда-эксела вылезают очень часто - может складывать куда-то найденные решения (Word tips"n"tricks)?



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2004.02.17;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.011 c
1-53564
bjohny
2004-02-09 09:24
2004.02.17
StringGrid и Dll


14-53706
Marina_S
2004-01-29 21:31
2004.02.17
запуск дос программы


3-53377
ИМХО
2004-01-26 22:43
2004.02.17
О CSV-файлах


3-53373
[CELTs]DRUID
2004-01-17 18:19
2004.02.17
БД в XP


7-53799
BaDeVlad
2003-12-02 12:44
2004.02.17
Как восстановить удаленный файл?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский