Я искал это, но нигде не мог найти ответ, поэтому надеюсь, что кто-то здесь может помочь.
Я делаю приложение 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 - оба имеют одинаковый результат (много текста пропущено).
Может бытьприподнятый как-то.
Интересно, что не так с этими файлами.
Есть идеи?