Как перебирать и считать ревизии в документе Word с помощью C #? - PullRequest
4 голосов
/ 02 сентября 2011

Я искал это, но нигде не мог найти ответ, поэтому надеюсь, что кто-то здесь может помочь.

Я делаю приложение WinForms на C #, в котором я использую WordApplcation.CompareDocuments для сравнения двухдокументы и получить итоговый документ с изменениями, помеченными как Revisions.

Это работает хорошо, и кроме изменений, скрывающих вещи внутри текстовых полей (о которых я пока не беспокоюсь), я получаю именно то, что хочу.

Итак, следующий шаг - подсчитать, сколько слов было исправлено - в частности, wdRevisionDelete и wdRevisonInsert.

Единственная проблема - final.Revisions иногда пуста или содержит огромное количество данных (более 500 слов).

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

вот мой текущий код:

using Word = Microsoft.Office.Interop.Word;

И

foreach (Word.Section s in final.Sections)
{
        foreach (Word.Revision r in s.Range.Revisions)
        {
                 counter += r.Range.Words.Count;
                 if (r.Type == Word.WdRevisionType.wdRevisionDelete)
                    delcnt += r.Range.Words.Count;
                 if (r.Type == Word.WdRevisionType.wdRevisionInsert)
                    inscnt += r.Range.Words.Count;
        }
}

final - документ Word, созданный WordApplication.CompareDocuments

Итак, как я уже сказал, и в соответствии с MSDN я использую range.Revision вместо document.Revision, и делаю раздел за разделом.

Показывается только один документ с полдюжиной ревизий.нет, в то время как другие показывают 100.

Так что мой вопрос, как использовать Ревизии для подсчета добавленных / удаленных слов.

Я открыл документы, которые CompareDocuments создает в Word 2007, и Ревизииправильно помечены и могут быть приняты или отклонены внутри Word

Любые идеи о том, что я мог бы пропустить?

РЕДАКТИРОВАТЬ: Я заметил кое-что странное - когда я пытаюсь сохранитьв виде txt файла исходные doc-файлы, сообщающие о 0 изменениях, хотя CompareDocuments помечает (правильно) несколько, я замечаю, что не все страницы сохраняются в txt-файле, который включает в себя все области с ревизиями.

Я пыталсяпреобразование в текстовый файл с использованием Word 2007 и LibreOffice 3.3 - оба имеют одинаковый результат (много текста пропущено).

Может бытьприподнятый как-то.

Интересно, что не так с этими файлами.

Есть идеи?

1 Ответ

0 голосов
/ 06 сентября 2011

Ну, очевидно, в этом коде нет ничего плохого, и он работает с более простыми файлами.

Что-то странное в файлах, на которых я тестировал.

Как говорится в моем редактировании, я не могу даже сохранить их как текстовые файлы.

Если кто-нибудь знает, что может вызвать это, дайте мне знать, а пока этот вопрос решается как проблема с файлом документа Word.

...