using ComponentsLibrary.entities; using DocumentFormat.OpenXml; using DocumentFormat.OpenXml.Packaging; using DocumentFormat.OpenXml.Wordprocessing; using System.ComponentModel; namespace ComponentsLibrary { public partial class ComponentBigText : Component { public ComponentBigText() { InitializeComponent(); } public ComponentBigText(IContainer container) { container.Add(this); InitializeComponent(); } public void CreateWordText(DocumentSymple docInfo) { if (string.IsNullOrEmpty(docInfo.FileUrl) || string.IsNullOrEmpty(docInfo.Title) || !CheckData(docInfo.Text)) { throw new Exception("Не все данные заполнены"); } using (WordprocessingDocument wordDocument = WordprocessingDocument.Create(docInfo.FileUrl, WordprocessingDocumentType.Document)) { // Добавляем главную часть документа MainDocumentPart mainPart = wordDocument.AddMainDocumentPart(); mainPart.Document = new Document(); Body body = mainPart.Document.AppendChild(new Body()); // Создаем параграф для заголовка Paragraph titleParagraph = new Paragraph(); // Задаем свойства параграфа (центровка и отступ) ParagraphProperties paragraphProperties = new ParagraphProperties(); paragraphProperties.AppendChild(new Justification() { Val = JustificationValues.Center }); // Применяем свойства параграфа к заголовку titleParagraph.AppendChild(paragraphProperties); // Создаем "бегунок" текста Run titleRun = new Run(); // Устанавливаем свойства "бегунка" (шрифт, размер, жирный шрифт) RunProperties runProperties = new RunProperties(); runProperties.AppendChild(new Bold()); runProperties.AppendChild(new FontSize() { Val = "48" }); // Размер шрифта, 24pt // Применяем свойства к тексту titleRun.AppendChild(runProperties); // Добавляем текст заголовка titleRun.AppendChild(new Text(docInfo.Title)); // Добавляем "бегунок" с текстом в параграф titleParagraph.AppendChild(titleRun); // Добавляем параграф в тело документа body.AppendChild(titleParagraph); foreach (var line in docInfo.Text) { Paragraph paragraph = new Paragraph(new Run(new Text(line))); body.Append(paragraph); } mainPart.Document.Save(); } } bool CheckData(string[] data) { for (int i = 0; i < data.Length; i++) { if (string.IsNullOrEmpty(data[i])) return false; } return true; } } }