Как: удалить части документа из пакета (Open XML SDK)

Как: удалить части документа из пакета (Open XML SDK)

В этом разделе показано, как использовать классы пакета Open XML SDK 2.5 для Office для удаления части документа (файла) из текстового документа программными средствами.

Для компиляции кода, представленного в этом разделе, требуются следующие директивы сборки.

Пакеты и части документа

Документ Open XML хранится в виде пакета, формат которого определяется спецификацией ISO/IEC 29500-2. Пакет может состоять из нескольких частей со связями между ними. Связь между частями определяет категорию документа. Документ может быть определен как текстовый документ, если его элемент связи пакета содержит связь с основной частью документа. Если соответствующий элемент содержит связь с частью презентации, он может быть определен как презентация. Если соответствующий элемент содержит связь с частью книги, он определяется как электронная таблица. В этот разделе вы будете использовать пакет текстового документа.

Получение объекта WordprocessingDocument

Пример кода начинается с открытия файла пакета с передачей имени файла в качестве аргумента в один из перегруженных методов Open() DocumentFormat.OpenXml.Packaging.WordprocessingDocument, который принимает строку и логическое значение, которое указывает, следует ли открыть файл в режиме чтения и записи. В этом случае значение логической переменной равно true, что указывает, что файл должен быть открыт в режиме чтения/записи.

Рекомендуется использовать оператор using вместо традиционной последовательности .Create, .Save и .Close. Это позволяет обеспечить автоматический вызов метода Dispose (внутреннего метода, используемого пакетом SDK Open XML для очистки ресурсов) при достижении закрывающей скобки. Блок, следующий за инструкцией using, создает область для объекта, создаваемого или именуемого в оператореusing, в данном случае — wordDoc. Так как класс WordprocessingDocument в пакете SDK Open XML автоматически сохраняет и закрывает объект как часть реализации System.IDisposable, а также поскольку метод Dispose вызывается автоматически при выходе из блока, не нужно явно вызывать методы Save и Close, если используется оператор using.

Базовая структура документа WordProcessingML

Базовая структура документа WordProcessingML состоит из элементов document и body. За ними следуют один или более элементов уровня блока, таких как p, который представляет абзац. Абзац содержит один или несколько элементов r. r означает запуск, являющийся областью текста с общим набором свойств, таких как форматирование. Запуск состоит из одного или нескольких элементов t. Элемент t содержит текст. Разметка WordprocessingML для созданного документа показана в следующем примере кода.

С помощью пакета SDK 2.5 Open XML можно создать структуру и содержимое документа, использующие строго типизированные классы, которые соответствуют элементам WordprocessingML. Эти классы можно найти в пространстве имен DocumentFormat.OpenXml.Wordprocessing. В приведенной ниже таблице представлены имена классов, соответствующие элементам document, body, p, r и t.

Элемент WordprocessingML Класс пакета Open XML SDK 2.5 Описание document Document Корневой элемент основной части документа. body Body Контейнер для структур уровня блока, таких как абзацы, аннотации, и других, указанных в спецификации ISO/IEC 29500. p Абзац Абзац. r Запустить Запуск. t Текст Диапазон текста.

Элемент Settings

В следующем текстовом сообщении спецификации ISO/IEC 29500 одержатся сведения об элементе settings из пакета PresentationML.

Этот элемент определяет параметры, которые применяются в документ WordprocessingML. Этот элемент является корневым элементом части параметров документа в документе WordprocessingML. Пример: Рассмотрим следующий фрагмент документа WordprocessingML для части параметров документа:

Элементsettings содержит все параметры для данного документа. В этом случае два примененных параметра являются автоматическими позициями табуляции, увеличенной до 0,5" с помощью элемента defaultTabStop и без сжатия уровня символа пробела с помощью элемента characterSpacingControl.

© ISO/IEC29500: 2008.

Как работает пример кода

После открытия документа в инструкции using в качестве объекта WordprocessingDocument создается ссылка на часть DocumentSettingsPart. Можно проверить, существует ли эта часть, и, если она существует, можно удалить ее из пакета. В данном случае из пакета удаляется часть settings.xml.

Пример кода

Следующий код удаляет часть документа из пакета. Для запуска программы вызовите метод RemovePart, как показано в этом примере.

Перед запуском программы на тестового файла "MyPkg6.docs,", например, откройте файл с помощью Open XML SDK 2.5 Productivity Tool для Microsoft Office и проверьте его структуру. После выполнения программы проверьте файл, и вы заметите, что часть DocumentSettingsPart была удалена.

📎📎📎📎📎📎📎📎📎📎