From e15e9c2088f2032148342141a49a7424e731c250 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=95=D0=BA=D0=B0=D1=82=D0=B5=D1=80=D0=B8=D0=BD=D0=B0=20?= =?UTF-8?q?=D0=A0=D0=BE=D0=B3=D0=B0=D1=88=D0=BE=D0=B2=D0=B0?= Date: Thu, 12 Oct 2023 22:42:25 +0400 Subject: [PATCH] =?UTF-8?q?1=20=D0=B8=203=20=D0=B2=D1=81=D0=B5=20=D1=81?= =?UTF-8?q?=D1=83=D0=BF=D0=B5=D1=80,=20=D0=BD=D0=BE=202..........?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- COPWinForms/ComponentWord1.cs | 4 ++++ COPWinForms/ComponentWord2.cs | 26 ++++++++++++++++--------- COPWinForms/ComponentWord3.cs | 36 ++++++++++++++++++++++++++++------- COPWinForms/DiagramWord.cs | 32 +++++++++++++++++++++++++++++++ COPWinForms/TableWord.cs | 29 ++++++++++++++++++++++++++++ WinFormsTest/FormTestApp.cs | 6 ++++-- 6 files changed, 115 insertions(+), 18 deletions(-) create mode 100644 COPWinForms/DiagramWord.cs create mode 100644 COPWinForms/TableWord.cs diff --git a/COPWinForms/ComponentWord1.cs b/COPWinForms/ComponentWord1.cs index 4824cc9..f77206d 100644 --- a/COPWinForms/ComponentWord1.cs +++ b/COPWinForms/ComponentWord1.cs @@ -45,6 +45,10 @@ namespace COPWinForms } 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); diff --git a/COPWinForms/ComponentWord2.cs b/COPWinForms/ComponentWord2.cs index c6d353e..9cd1f94 100644 --- a/COPWinForms/ComponentWord2.cs +++ b/COPWinForms/ComponentWord2.cs @@ -25,16 +25,16 @@ namespace COPWinForms InitializeComponent(); } - public void CreateTable(string filePath, string documentTitle, List columnDefinitions, List data) + public void CreateTable(TableWord tableWord) { // Проверка наличия данных и определений столбцов - if (data == null) + if (tableWord.Data == null) { throw new ArgumentException("Data or column definitions are null or empty"); } // Проверка, что все ячейки шапки заполнены и для каждого столбца определено свойство/поле класса - foreach (var columnDefinition in columnDefinitions) + foreach (var columnDefinition in tableWord.ColumnDefinitions) { if (string.IsNullOrEmpty(columnDefinition.Header) || string.IsNullOrEmpty(columnDefinition.PropertyName)) { @@ -52,13 +52,21 @@ namespace COPWinForms // Установка заголовка документа builder.ParagraphFormat.Style = titleStyle; - builder.Writeln(documentTitle); + builder.Writeln(tableWord.DocumentTitle); // Создание таблицы Table table = builder.StartTable(); - // Вставка шапки таблицы - foreach (var columnDefinition in columnDefinitions) + // Вставка первой строки шапки таблицы + foreach (var columnDefinition in tableWord.ColumnDefinitions) + { + builder.InsertCell(); + builder.Write(columnDefinition.Header); + } + builder.EndRow(); + + // Вставка второй строки шапки таблицы + foreach (var columnDefinition in tableWord.ColumnDefinitions) { builder.InsertCell(); builder.Write(columnDefinition.Header); @@ -66,10 +74,10 @@ namespace COPWinForms builder.EndRow(); // Вставка данных в таблицу - foreach (var item in data) + foreach (var item in tableWord.Data) { - foreach (var columnDefinition in columnDefinitions) + foreach (var columnDefinition in tableWord.ColumnDefinitions) { builder.InsertCell(); // Получение значения свойства/поля объекта по заданному имени @@ -88,7 +96,7 @@ namespace COPWinForms builder.EndTable(); // Сохранение документа в файл - document.Save(filePath); + document.Save(tableWord.FilePath); } public class ColumnDefinition diff --git a/COPWinForms/ComponentWord3.cs b/COPWinForms/ComponentWord3.cs index 1cc5272..54f3f4b 100644 --- a/COPWinForms/ComponentWord3.cs +++ b/COPWinForms/ComponentWord3.cs @@ -39,13 +39,35 @@ namespace COPWinForms InitializeComponent(); } - public void CreateLineChart(string filePath, string documentTitle, string chartTitle, string[] categories, string[] seriesName, double[][] data, LegendPosition legendPosition) + public void CreateLineChart(DiagramWord diagramWord) { + // Проверка наличия данных, названий серий и категорий + if (diagramWord.Data == null || diagramWord.SeriesName == null || diagramWord.Categories == null) + { + throw new ArgumentException("Data, series names, or categories are null"); + } + + // Проверка соответствия количества серий данных + if (diagramWord.SeriesName.Length != diagramWord.Data.Length) + { + throw new ArgumentException("Number of series names does not match the number of data series"); + } + // Проверка наличия заголовка диаграммы + if (string.IsNullOrEmpty(diagramWord.ChartTitle) || string.IsNullOrEmpty(diagramWord.FilePath) || string.IsNullOrEmpty(diagramWord.DocumentTitle)) + { + throw new ArgumentException("Chart title is null or empty"); + } // Создание документа Document document = new Document(); DocumentBuilder builder = new DocumentBuilder(document); - document.BuiltInDocumentProperties.Title = documentTitle; + Style titleStyle = builder.Document.Styles.Add(StyleType.Paragraph, "Title"); + titleStyle.Font.Size = 16; + titleStyle.Font.Bold = true; + + // Установка заголовка документа + builder.ParagraphFormat.Style = titleStyle; + builder.Writeln(diagramWord.DocumentTitle); // Вставка диаграммы Shape chartShape = builder.InsertChart(ChartType.Line, 400, 300); @@ -53,21 +75,21 @@ namespace COPWinForms // Настройка заголовка диаграммы ChartTitle title = chart.Title; - title.Text = chartTitle; + title.Text = diagramWord.ChartTitle; ChartSeriesCollection seriesColl = chart.Series; seriesColl.Clear(); // Очищаем существующие серии перед добавлением новых // Добавление данных в диаграмму - for (int i = 0; i < seriesName.Length; i++) + for (int i = 0; i < diagramWord.SeriesName.Length; i++) { - seriesColl.Add(seriesName[i], categories, data[i]); + seriesColl.Add(diagramWord.SeriesName[i], diagramWord.Categories, diagramWord.Data[i]); } - chart.Legend.Position = (Aspose.Words.Drawing.Charts.LegendPosition)legendPosition; + chart.Legend.Position = (Aspose.Words.Drawing.Charts.LegendPosition)diagramWord.LegendPosition; // Сохранение документа в файл - document.Save(filePath); + document.Save(diagramWord.FilePath); } diff --git a/COPWinForms/DiagramWord.cs b/COPWinForms/DiagramWord.cs new file mode 100644 index 0000000..e7487de --- /dev/null +++ b/COPWinForms/DiagramWord.cs @@ -0,0 +1,32 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using static COPWinForms.ComponentWord2; + +namespace COPWinForms +{ + public class DiagramWord + { + public string FilePath = string.Empty; + + public string DocumentTitle = string.Empty; + public string ChartTitle = string.Empty; + public string[] Categories; + public string[] SeriesName; + public double[][] Data; + public LegendPosition LegendPosition; + + public DiagramWord(string filePath, string documentTitle, string chartTitle, string[] categories, string[] seriesName, double[][] data, LegendPosition legendPosition) + { + FilePath = filePath; + DocumentTitle = documentTitle; + ChartTitle = chartTitle; + Categories = categories; + SeriesName = seriesName; + Data = data; + LegendPosition = legendPosition; + } + } +} diff --git a/COPWinForms/TableWord.cs b/COPWinForms/TableWord.cs new file mode 100644 index 0000000..1c7e04d --- /dev/null +++ b/COPWinForms/TableWord.cs @@ -0,0 +1,29 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using static COPWinForms.ComponentWord2; + +namespace COPWinForms +{ + public class TableWord + { + public string FilePath = string.Empty; + + public string DocumentTitle = string.Empty; + + public List ColumnDefinitions; + + public List Data; + + + public TableWord(string filePath, string documentTitle, List columnDefinitions, List data) + { + FilePath = filePath; + DocumentTitle = documentTitle; + ColumnDefinitions = columnDefinitions; + Data = data; + } + } +} diff --git a/WinFormsTest/FormTestApp.cs b/WinFormsTest/FormTestApp.cs index 479b59c..5a720a6 100644 --- a/WinFormsTest/FormTestApp.cs +++ b/WinFormsTest/FormTestApp.cs @@ -145,7 +145,8 @@ namespace WinFormsTest { try { - componentWord31.CreateLineChart(dialog.FileName, " 3", " ", categories, seriesName, data, LegendPosition.Right); + DiagramWord diagramWord = new(dialog.FileName, " 3", " ", categories, seriesName, data, LegendPosition.Right); + componentWord31.CreateLineChart(diagramWord); MessageBox.Show(" ", "", MessageBoxButtons.OK, MessageBoxIcon.Information); } catch (Exception ex) @@ -182,7 +183,8 @@ namespace WinFormsTest { try { - componentWord21.CreateTable(dialog.FileName, " 2", columnDefinitions, data); + TableWord tableWord = new(dialog.FileName, " 2", columnDefinitions, data); + componentWord21.CreateTable(tableWord); MessageBox.Show(" ", "", MessageBoxButtons.OK, MessageBoxIcon.Information); } catch (Exception ex)