Как записать данные в .docx без Interop?

В C# существует несколько способов записи данных в формат .docx без использования Interop, которая является зависимой от Microsoft Office и может привести к проблемам совместимости и производительности.

1. OpenXML SDK:
OpenXML SDK (https://github.com/OfficeDev/Open-XML-SDK) - это библиотека, разработанная Microsoft, которая обеспечивает удобный способ работы с форматом файлов Office, включая .docx. Она предоставляет уровень абстракции над схемой Office Open XML и позволяет создавать, изменять и сохранять документы .docx.

Пример записи данных в .docx с использованием OpenXML SDK:

using DocumentFormat.OpenXml;
using DocumentFormat.OpenXml.Packaging;
using DocumentFormat.OpenXml.Wordprocessing;

// Создаем новый документ
using (WordprocessingDocument doc = WordprocessingDocument.Create("example.docx", WordprocessingDocumentType.Document))
{
    // Добавляем основной контент
    MainDocumentPart mainPart = doc.AddMainDocumentPart();
    mainPart.Document = new Document();
    Body body = mainPart.Document.AppendChild(new Body());
    
    // Создаем параграф
    Paragraph paragraph = body.AppendChild(new Paragraph());
    Run run = paragraph.AppendChild(new Run());
    run.AppendChild(new Text("Hello, world!"));
    
    // Сохраняем документ
    mainPart.Document.Save();
}

2. NPOI:
NPOI (https://github.com/nissl-lab/npoi) - это безопасная и портабельная библиотека, предоставляющая API для работы с форматами файлов Microsoft Office, включая .docx. Она является альтернативой Interop и позволяет создавать, модифицировать и сохранять документы .docx.

Пример записи данных в .docx с использованием NPOI:

using NPOI.XWPF.UserModel;

// Создаем новый документ
XWPFDocument doc = new XWPFDocument();
// Добавляем основной контент
XWPFParagraph paragraph = doc.CreateParagraph();
XWPFRun run = paragraph.CreateRun();
run.SetText("Hello, world!");

// Сохраняем документ
FileStream fs = new FileStream("example.docx", FileMode.CreateNew);
doc.Write(fs);
fs.Close();

Обе библиотеки, OpenXML SDK и NPOI, предоставляют удобные методы для работы с различными элементами документов .docx, такими как абзацы, таблицы, изображения и другие, и позволяют создавать и сохранять документы без необходимости использования Interop. Вы можете выбрать ту, которая лучше соответствует вашим требованиям и предпочтениям.