Поиск строки в WORD из С# (Значение лежит вне допустимого ди

Язык C#: программирование на C#, портирование кода C# на VB и VB на C#.

Модератор: Ramzes

enshtein
Начинающий
Начинающий
 
Сообщения: 1
Зарегистрирован: 19.05.2011 (Чт) 10:48

Поиск строки в WORD из С# (Значение лежит вне допустимого ди

Сообщение enshtein » 19.05.2011 (Чт) 11:20

Всем доброго времени суток!

Скрипт формирует список объектов недвижимости на основе шаблона MS WORD (см. вложенный файл). Шаблон состоит из таблиц, каждая из которых относится к определенному типу объектов.
В метод FIllTable передается идентификатор таблицы (string tagName) и список объектов (Dictionary<int, Dictionary<string, string>> dictionary).
Метод работает следующим образом:
    Ищется идентификатор в документе (Пример: #RoomsTable#)
    Выбирается первая таблица следующая за идентификатором
    Вторая строка берется как шаблон и на основе нее создаются строки объектов
    Вторая строка удаляется
    Удаляется идентификатор

Далее вызывается этот же метод с другим идентификатором и списком объектов недвижимости и тд.

Проблема:
При выполнении программы на втором типе объектов недвижимости вылетает исключение (Значение лежит вне допустимого диапазона). Так как _indexStart > this.wordDocument.Range(ref missing, ref missing).End.

Пример кода вызывающего exception:
Код: Выделить всё
public void FillTable(string tagName, Dictionary<int, Dictionary<string, string>> dictionary)
        {
            int indexStart = this.wordDocument.Range(ref missing, ref missing).Text.IndexOf(tagName);
            int indexEnd = this.wordDocument.Range(ref missing, ref missing).End;
            object _indexStart = (object)indexStart;
            object _indexEnd = (object)indexEnd;

            Word.Range range = this.wordDocument.Range(ref _indexStart, ref missing); //Исключение: Значение лежит вне допустимого диапазона
            ...


Если изменить порядок заполнения типов объектов недвижимости, то ошибка вылетает уже на другом типе объектов недвижимости (не всегда на втором по очередности).
Пробовал ставить для диапазона следующее:
Код: Выделить всё
wordrange.TextRetrievalMode.IncludeHiddenText = false;
wordrange.TextRetrievalMode.IncludeFieldCodes = false;


Бесполезно все равно найденный индекс больше длины диапазона. Подскажите че делать????

VS 2010
NET версия 2
Microsoft.Office.Interop.Word Версия 14
Word 2007

Спасибо!
У вас нет доступа для просмотра вложений в этом сообщении.

burik
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 514
Зарегистрирован: 03.11.2005 (Чт) 22:04
Откуда: Беларусь, Рогачев

Re: Поиск строки в WORD из С# (Значение лежит вне допустимог

Сообщение burik » 27.12.2011 (Вт) 16:26

enshtein писал(а):Подскажите че делать????

Не заниматься изобретением велосипеда - есть куча готовых систем генерации отчетов.
Между слухов, сказок, мифов,
просто лжи, легенд сомнений
мы враждуем жарче скифов
за несходство заблуждений
Игорь Губерман


Вернуться в C#

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 6

    TopList