Сравнение файлов Docx с использованием OOXML - PullRequest
8 голосов
/ 16 февраля 2010

Как я могу прочитать слово за словом (со стилями) из файла DOCX.Я хочу сравнить два файла docx дословно и исходя из различий, которые я должен записать в другой файл docx (используя c # и OOXML).Я пытался добиться этого с помощью DocumentFormat.OpenXml.Extensions.dll , OpenXMLdiff.dll и ICSharpCode.SharpZipLib.dll , но ничего не дает мне возможностьчитать слово за словом (ICSharpCode.SharpZipLib дает слово за словом, но не дает стиля, связанного с этим словом).

Любая помощь по этому вопросу будет очень полезна.

Ответы [ 2 ]

3 голосов
/ 15 марта 2011

В этой статье MSDN показано, как надежно получить точный текст документа, пункт за пунктом.

http://msdn.microsoft.com/en-us/library/ff686712.aspx

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

http://blogs.msdn.com/b/ericwhite/archive/2009/02/16/finding-paragraphs-by-style-name-or-content-in-an-open-xml-word-processing-document.aspx

Сравнение двух? Это зависит от вашей желаемой семантики. Один из подходов состоит в том, чтобы создать документ XML, который содержит абзацы и стили, а затем сравнить документы XML. XML-документ может выглядеть примерно так:

<Root>
  <Para>
    <Style>Normal</Style>
    <Text>This is the text of the paragraph.</Text>
  </Para>
  <Para>
    <Style>Heading1</Style>
    <Text>Overview of the Process</Text>
  </Para>
</Root>
0 голосов
/ 03 января 2011

Самый простой способ - просто разархивировать файл DOCX с помощью вашей любимой библиотеки ZIP, а затем сравнить текстовые файлы с библиотекой файлового ввода-вывода.

...