PIbd-31_Rodionov.I.A._COP_28/COP/RodionovLibrary/NonVisualComponents/WordLongTextComponent.cs

87 lines
2.4 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using Microsoft.Office.Interop.Word;
using RodionovLibrary.NonVisualComponents.HelperModels;
using System.ComponentModel;
using Application = Microsoft.Office.Interop.Word.Application;
namespace RodionovLibrary.NonVisualComponents
{
public partial class WordLongTextComponent : Component
{
private Application? _wordApp;
private Document? _document;
public WordLongTextComponent()
{
InitializeComponent();
}
public WordLongTextComponent(IContainer container)
{
container.Add(this);
InitializeComponent();
}
public void CreateWordText(WordLongTextInfo textInfo)
{
if (string.IsNullOrEmpty(textInfo.FileName) || string.IsNullOrEmpty(textInfo.Title) || !CheckData(textInfo.Paragraphs))
{
throw new ArgumentException("Не все данные заполнены");
}
_wordApp = new Application();
_document = _wordApp.Documents.Add();
try
{
AddText(textInfo);
_document.SaveAs2(textInfo.FileName);
}
finally
{
_document.Close();
_wordApp.Quit();
}
}
private void AddText(WordLongTextInfo textInfo)
{
if (_document == null)
{
return;
}
AddParagraph(textInfo.Title, fontSize: 22, isBold: true);
foreach (var paragraph in textInfo.Paragraphs)
{
AddParagraph(paragraph, fontSize: 14, isBold: false);
}
}
private void AddParagraph(string text, int fontSize, bool isBold)
{
if (_document == null)
{
return;
}
var paragraph = _document.Content.Paragraphs.Add();
var range = paragraph.Range;
range.Text = text;
range.Font.Size = fontSize;
range.Font.Name = "Times New Roman";
range.Font.Bold = isBold ? 1 : 0;
paragraph.Alignment = WdParagraphAlignment.wdAlignParagraphJustify;
range.InsertParagraphAfter();
}
private bool CheckData(string[] data)
{
return data != null && data.Any() && data.All(d => !string.IsNullOrEmpty(d));
}
}
}