Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как найти разделитель PageBreak на странице? .Net 4, Office.Interop.Word 2007 
:(
    Опции темы
shandy
Дата 11.1.2011, 21:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 20.12.2010

Репутация: нет
Всего: нет



В общем задача такая открыть один большой файл worda (.doc) и разделить его на несколько маленьких файлов. Причем не постранично (на каждой странице стоит разрыв (pagebreak)), а с некоторым условием: если на странице есть слово "М.П." и разрыв страницы то это конец нового документа..... и так далее по всему документу...

Сам алгоритм мне понятен - найти Range() от начала документа до его PageBreak + проверка на этой странице ключевого слова (с этим тоже проблема - как использовать поиск с учетом страниц?) и потом этот  Range сохранить в новый документ, вырезать со старого и сохранить старый документ и снова повтор действий...
В общем все очень туманно...
Могу ли я искать разрыв страницы используя "range.Find.Execute" и символ "^12", и как тогда определить его позицию в документе?

Облазил весь инет так и не нашел ничего похожего, буду благодарен любой помощи... 
PM MAIL   Вверх
shandy
Дата 13.1.2011, 22:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 20.12.2010

Репутация: нет
Всего: нет



В общем задачу кое-как решил - грубо, но эффективно, если кто скажет, как ещё можно оптимизировать код - welcome...
Код

...
wordApplication.Documents.Add(currentFileName);
            Word.Document doc = wordApplication.ActiveDocument;
            object missing = Type.Missing;
            object fileName = null;
            object ex = Word.WdSaveFormat.wdFormatDocument;
            string Dir = App.CurrentDir + Properties.Settings.Default.sourceProtokolDir + "\\";
            object s = "М.П.";
            object s1 = Word.WdFindWrap.wdFindStop;
            int number = 1;
            while (true)
            {
                if (wordApplication.Selection.Find.Execute(s, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref s1, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing))
                {
                    wordApplication.Selection.Start = wordApplication.Selection.Range.End;
                    object s2 = "^m";
                    bool f = wordApplication.Selection.Find.Execute(s2, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref s1, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing);
                    if (f)
                    {
                        doc.Range(0, wordApplication.Selection.End + 1).Select();
                        wordApplication.Selection.Cut();
                        wordApplication.Documents.Add(App.CurrentDir + Properties.Settings.Default.FileTemplateDoc);
                        Word.Document doc2 = wordApplication.ActiveDocument;
                        doc2.Range(0, 0).Paste();
                        fileName = Dir + number++.ToString() + ".doc";
                        doc2.SaveAs(ref fileName,
                            ref ex, ref missing, ref missing, ref missing, ref missing,
                            ref missing, ref missing, ref missing, ref missing, ref missing,
                            ref missing, ref missing, ref missing, ref missing, ref missing);
                        doc2.Close();
                    }
                    else
                    {
                        fileName = Dir + number++.ToString() + ".doc";
                        doc.SaveAs(ref fileName,
                            ref ex, ref missing, ref missing, ref missing, ref missing,
                            ref missing, ref missing, ref missing, ref missing, ref missing,
                            ref missing, ref missing, ref missing, ref missing, ref missing);
                    }
                }
                else
                {
                    break;
                }
            }
            wordApplication.Documents.Close(Word.WdSaveOptions.wdDoNotSaveChanges);
...


Это сообщение отредактировал(а) shandy - 13.1.2011, 22:33
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0419 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.