OpenXML. Как добавить создателя с помощью C# в docx?

#c# #ms-word #openxml

Вопрос:

Я пытаюсь добавить некоторые основные свойства в документ Docx. Я нашел только один пример в разных местах того, как это можно сделать.

Например, здесь. Но есть одна проблема.

Если мы посмотрим на структуру самого Docx, созданного приложением Word и использующего OpenXML, между ними есть разница.

Структура docx, созданная с использованием openxml и документа.Свойства упаковки.Создатель = «всо»

Более того, проверка файла не может быть успешной, если я хочу проверить файл с помощью средства повышения производительности от Microsoft. Конечно, word может прочитать этот файл, но, с моей точки зрения, это неправильный способ создания файла word.

Здесь вы можете увидеть структуру docx, созданную самим приложением word

Еще один аспект, если я напишу следующее:

 CoreFilePropertiesPart corePackageProperties = document.CoreFilePropertiesPart;
if (corePackageProperties == null)
{
   corePackageProperties = document.AddCoreFilePropertiesPart();
}
 

тогда core.xml файл создается в нужном месте структуры, но он пуст.

Итак, вопрос в том, есть ли в SDK OpenXML способ получить структуру docx так же, как при использовании самого приложения word?

Ответ №1:

Документация Microsoft предлагает :

 using (XmlTextWriter writer = new XmlTextWriter(coreFilePropPart.GetStream(FileMode.Create), System.Text.Encoding.UTF8))
{
  writer.WriteRaw("<?xml version="1.0" encoding="UTF-8"?>rn<cp:coreProperties xmlns:cp="https://schemas.openxmlformats.org/package/2006/metadata/core-properties"></cp:coreProperties>");
  writer.Flush();
}
 

У меня была та же проблема при создании файла Excel, и я решил ее.