В 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. Вы можете выбрать ту, которая лучше соответствует вашим требованиям и предпочтениям.