93 lines
2.9 KiB
C#
93 lines
2.9 KiB
C#
using Aspose.Words;
|
||
using System;
|
||
using System.Collections.Generic;
|
||
using System.ComponentModel;
|
||
using System.Diagnostics;
|
||
using System.Linq;
|
||
using System.Text;
|
||
using System.Threading.Tasks;
|
||
|
||
namespace COPWinForms
|
||
{
|
||
public partial class ComponentWord1 : Component
|
||
{
|
||
private string _fileName;
|
||
|
||
// private WordprocessingDocument? _wordDocument;
|
||
|
||
// private Body? _docBody;
|
||
|
||
public string FileName
|
||
{
|
||
set
|
||
{
|
||
if (string.IsNullOrEmpty(value))
|
||
{
|
||
return;
|
||
}
|
||
if (!value.EndsWith(".docx"))
|
||
{
|
||
throw new ArgumentException("No docx file");
|
||
}
|
||
_fileName = value;
|
||
}
|
||
}
|
||
public ComponentWord1()
|
||
{
|
||
InitializeComponent();
|
||
_fileName = string.Empty;
|
||
}
|
||
public ComponentWord1(IContainer container)
|
||
{
|
||
container.Add(this);
|
||
InitializeComponent();
|
||
_fileName = string.Empty;
|
||
}
|
||
public void CreateWordText(TextWord textWord)
|
||
{
|
||
if (string.IsNullOrEmpty(textWord.FilePath) || string.IsNullOrEmpty(textWord.DocumentTitle) || !CheckData(textWord.TextData))
|
||
{
|
||
throw new Exception("Не все данные заполнены");
|
||
}
|
||
// Создание документа
|
||
Document document = new Document();
|
||
DocumentBuilder builder = new DocumentBuilder(document);
|
||
Style titleStyle = builder.Document.Styles.Add(StyleType.Paragraph, "Title");
|
||
titleStyle.Font.Size = 16;
|
||
titleStyle.Font.Bold = true;
|
||
|
||
// Установка заголовка документа
|
||
builder.ParagraphFormat.Style = titleStyle;
|
||
builder.Writeln(textWord.DocumentTitle);
|
||
|
||
// Создание обычного стиля для остального текста
|
||
Style normalStyle = builder.Document.Styles[StyleIdentifier.Normal];
|
||
normalStyle.Font.Size = 12;
|
||
|
||
// Применение обычного стиля для остального текста
|
||
builder.ParagraphFormat.Style = normalStyle;
|
||
|
||
// Установка заголовка документа
|
||
document.BuiltInDocumentProperties.Title = textWord.DocumentTitle;
|
||
|
||
foreach (string textLine in textWord.TextData)
|
||
{
|
||
// Добавление строки текста в документ
|
||
builder.Writeln(textLine);
|
||
}
|
||
document.Save(textWord.FilePath);
|
||
}
|
||
|
||
bool CheckData(string[] data)
|
||
{
|
||
for (int i = 0; i < data.Length; i++)
|
||
{
|
||
if (string.IsNullOrEmpty(data[i])) return false;
|
||
}
|
||
|
||
return true;
|
||
}
|
||
|
||
}
|
||
}
|