Найдите количество страниц в разделе документа Word, используя Interop

Я пытаюсь найти количество страниц в разделе документа Word, используя Interop в C#.

Основная цель - выяснить, виден ли заголовок или нет. (Например, документ занимает всего 1 страницу, DifferentFirstpageHeaderFooter включен, поэтому wdHeaderFooterPrimary существует, но технически не отображается (потому что есть только 1 страница, а не 2 или более). Так что, если вы можете найти другой способ выяснить, как это сделать, я тоже в порядке.

В настоящее время, WdInformation.wdActiveEndPageNumber работает, если в документе есть только 1 раздел, но если есть 2, и я делаю обработку второго раздела, wdActiveEndPageNumber дает мне общее количество страниц, включая раздел 1.

var section = headerFooter.Parent as Section;
int numOfPages = section.Range.Information[WdInformation.wdActiveEndPageNumber];

1 ответ

Решение

У меня нет C# для этого, но с использованием синтаксиса VBA, что вам нужно для "раздела N"

а. если n = 1 тогда вы смотрите на

theDocument.sections[1].Range.Information[WdInformation.wdActiveEndPageNumber]

б. если n > 1 затем вы устанавливаете, что раздел n существует, а затем посмотрите на

theDocument.sections[n].Range.Information[WdInformation.wdActiveEndPageNumber]-
theDocument.sections[n-1].Range.Information[WdInformation.wdActiveEndPageNumber]

и обратите внимание, что case (b) может вернуть 0, если у вас есть непрерывный разрыв раздела на последней странице раздела n. Я не знаю, что это будет означать с точки зрения заголовков, которые у вас будут, но я надеюсь, что это будет означать, что у вас только что был заголовок первой страницы.

Другие вопросы по тегам