From 554852a6b8d303a75aa863b642b6c4587561f6b7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9C=D0=B0=D0=BA=D1=81=D0=B8=D0=BC=20=D0=AF=D0=BA=D0=BE?= =?UTF-8?q?=D0=B2=D0=BB=D0=B5=D0=B2?= Date: Sun, 22 Sep 2024 21:28:04 +0400 Subject: [PATCH] =?UTF-8?q?=D0=92=D1=82=D0=BE=D1=80=D0=BE=D0=B9=20=D0=BA?= =?UTF-8?q?=D0=BE=D0=BC=D0=BF=D0=BE=D0=BD=D0=B5=D0=BD=D1=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../LargeTextComponent.Designer.cs | 0 .../{ => Components}/LargeTextComponent.cs | 0 .../Components/Models/ColumnInfo.cs | 22 +++ .../Components/Models/MergeCells.cs | 20 +++ .../Components/TableComponent.Designer.cs | 36 +++++ .../Components/TableComponent.cs | 146 ++++++++++++++++++ ComponentProgramming/Forms/Form.Designer.cs | 4 +- ComponentProgramming/Forms/Form.cs | 25 ++- ComponentProgramming/Forms/Form.resx | 2 +- ComponentProgramming/Forms/Worker.cs | 32 ++++ ComponentProgramming/Forms/table.pdf | Bin 0 -> 46872 bytes 11 files changed, 283 insertions(+), 4 deletions(-) rename ComponentProgramming/ComponentProgramming/{ => Components}/LargeTextComponent.Designer.cs (100%) rename ComponentProgramming/ComponentProgramming/{ => Components}/LargeTextComponent.cs (100%) create mode 100644 ComponentProgramming/ComponentProgramming/Components/Models/ColumnInfo.cs create mode 100644 ComponentProgramming/ComponentProgramming/Components/Models/MergeCells.cs create mode 100644 ComponentProgramming/ComponentProgramming/Components/TableComponent.Designer.cs create mode 100644 ComponentProgramming/ComponentProgramming/Components/TableComponent.cs create mode 100644 ComponentProgramming/Forms/Worker.cs create mode 100644 ComponentProgramming/Forms/table.pdf diff --git a/ComponentProgramming/ComponentProgramming/LargeTextComponent.Designer.cs b/ComponentProgramming/ComponentProgramming/Components/LargeTextComponent.Designer.cs similarity index 100% rename from ComponentProgramming/ComponentProgramming/LargeTextComponent.Designer.cs rename to ComponentProgramming/ComponentProgramming/Components/LargeTextComponent.Designer.cs diff --git a/ComponentProgramming/ComponentProgramming/LargeTextComponent.cs b/ComponentProgramming/ComponentProgramming/Components/LargeTextComponent.cs similarity index 100% rename from ComponentProgramming/ComponentProgramming/LargeTextComponent.cs rename to ComponentProgramming/ComponentProgramming/Components/LargeTextComponent.cs diff --git a/ComponentProgramming/ComponentProgramming/Components/Models/ColumnInfo.cs b/ComponentProgramming/ComponentProgramming/Components/Models/ColumnInfo.cs new file mode 100644 index 0000000..b7cdf72 --- /dev/null +++ b/ComponentProgramming/ComponentProgramming/Components/Models/ColumnInfo.cs @@ -0,0 +1,22 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace ComponentProgramming.Components.Models +{ + public class ColumnInfo + { + public string PropertyName; + public string Header; + public int Width; + + public ColumnInfo(string propertyName, string header, int width) + { + PropertyName = propertyName; + Header = header; + Width = width; + } + } +} diff --git a/ComponentProgramming/ComponentProgramming/Components/Models/MergeCells.cs b/ComponentProgramming/ComponentProgramming/Components/Models/MergeCells.cs new file mode 100644 index 0000000..44e6774 --- /dev/null +++ b/ComponentProgramming/ComponentProgramming/Components/Models/MergeCells.cs @@ -0,0 +1,20 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace ComponentProgramming.Components.Models +{ + public class MergeCells + { + public string Header; + public int[] Indexes; + + public MergeCells(string header, int[] indexes) + { + Header = header; + Indexes = indexes; + } + } +} diff --git a/ComponentProgramming/ComponentProgramming/Components/TableComponent.Designer.cs b/ComponentProgramming/ComponentProgramming/Components/TableComponent.Designer.cs new file mode 100644 index 0000000..6d00d51 --- /dev/null +++ b/ComponentProgramming/ComponentProgramming/Components/TableComponent.Designer.cs @@ -0,0 +1,36 @@ +namespace ComponentProgramming.Components +{ + partial class TableComponent + { + /// + /// Обязательная переменная конструктора. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Освободить все используемые ресурсы. + /// + /// истинно, если управляемый ресурс должен быть удален; иначе ложно. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Код, автоматически созданный конструктором компонентов + + /// + /// Требуемый метод для поддержки конструктора — не изменяйте + /// содержимое этого метода с помощью редактора кода. + /// + private void InitializeComponent() + { + components = new System.ComponentModel.Container(); + } + + #endregion + } +} diff --git a/ComponentProgramming/ComponentProgramming/Components/TableComponent.cs b/ComponentProgramming/ComponentProgramming/Components/TableComponent.cs new file mode 100644 index 0000000..6bceb44 --- /dev/null +++ b/ComponentProgramming/ComponentProgramming/Components/TableComponent.cs @@ -0,0 +1,146 @@ +using ComponentProgramming.Components.Models; +using MigraDoc.DocumentObjectModel; +using MigraDoc.Rendering; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Diagnostics; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace ComponentProgramming.Components +{ + public partial class TableComponent : Component + { + private Document? _document; + + private Section? _section; + + public TableComponent() + { + InitializeComponent(); + } + + public TableComponent(IContainer container) + { + container.Add(this); + + InitializeComponent(); + } + + public void CreateTable(string docPath, string title, List? mergeCells, List colInfo, List data) where T : class, new() + { + if(string.IsNullOrEmpty(docPath)) + { + throw new ArgumentNullException("Введите путь до файла!"); + } + if (string.IsNullOrEmpty(title)) + { + throw new ArgumentNullException("Введите заголовок"); + } + if(colInfo == null) + { + throw new ArgumentNullException("Введите все заголовки"); + } + if (data == null) + { + throw new ArgumentNullException("Нету информации для вывода"); + } + + _document = new Document(); + var style = _document.Styles["Normal"]; + style.Font.Name = "Times New Roman"; + style.Font.Size = 14; + + _section = _document.AddSection(); + + //Заголовок + var paragraph = _section.AddParagraph(title); + paragraph.Format.SpaceAfter = "0.3cm"; + + //Создание таблицы + var table = _section.AddTable(); + table.Borders.Visible = true; + + //Создание колонок + for(int i = 0; i < colInfo.Count; i++) + { + table.AddColumn(colInfo[i].Width); + } + + //Создание строк + if(mergeCells != null) + { + table.AddRow(); + } + var row = table.AddRow(); + + for (int i = 0; i < colInfo.Count; i++) + { + row[i].AddParagraph(colInfo[i].Header); + } + + List MergeColls = new List(); + + //Объединение ячеек в строке + if(mergeCells != null) + { + foreach (var cell in mergeCells) + { + MergeColls.AddRange(cell.Indexes[1..]); + table.Rows[cell.Indexes[0]].Cells[cell.Indexes[1] - 1].MergeRight = cell.Indexes[2..].Length; + table.Rows[cell.Indexes[0]].Cells[cell.Indexes[1] - 1].AddParagraph(cell.Header); + } + } + + int cellsCount = table.Rows[1].Cells.Count; + + //Объединение ячеек в столбце + if (MergeColls.Count != 0) + { + for (int i = 0; i < cellsCount; i++) + { + var cell = table.Rows[0].Cells[i]; + if (!MergeColls.Contains(i+1)) + { + cell.MergeDown = 1; + cell.AddParagraph(colInfo[i].Header); + } + } + } + + //Вывод данных + + int rowData = 2; + + foreach(var item in data) + { + var properties = item.GetType().GetProperties(); + if(properties.Count() != cellsCount) + { + throw new Exception("Кол-во полей объекта не совпадает с кол-вом колонок"); + } + + for(int i = 0; i < properties.Count(); i++) + { + var property = properties[i]; + var propValue = property.GetValue(item); + if (propValue == null) throw new Exception("Пустое поле"); + if(property.Name == colInfo[i].PropertyName) + { + if (table.Rows.Count <= rowData) table.AddRow(); + table.Rows[rowData].Cells[i].AddParagraph(propValue.ToString()!); + continue; + } + } + rowData++; + } + + var renderer = new PdfDocumentRenderer(true); + renderer.Document = _document; + renderer.RenderDocument(); + renderer.PdfDocument.Save(docPath); + } + } +} diff --git a/ComponentProgramming/Forms/Form.Designer.cs b/ComponentProgramming/Forms/Form.Designer.cs index 4c974aa..6a773cf 100644 --- a/ComponentProgramming/Forms/Form.Designer.cs +++ b/ComponentProgramming/Forms/Form.Designer.cs @@ -34,7 +34,7 @@ buttonGetObj = new Button(); buttonEnter = new Button(); controlListBox = new ComponentProgramming.ControlListBox(); - largeTextComponent = new ComponentProgramming.Components.LargeTextComponent(components); + tableComponent = new ComponentProgramming.Components.TableComponent(components); SuspendLayout(); // // controlComboBox @@ -108,6 +108,6 @@ private Button buttonGetObj; private Button buttonEnter; private ComponentProgramming.ControlListBox controlListBox; - private ComponentProgramming.Components.LargeTextComponent largeTextComponent; + private ComponentProgramming.Components.TableComponent tableComponent; } } diff --git a/ComponentProgramming/Forms/Form.cs b/ComponentProgramming/Forms/Form.cs index f212d5e..d79094a 100644 --- a/ComponentProgramming/Forms/Form.cs +++ b/ComponentProgramming/Forms/Form.cs @@ -1,3 +1,5 @@ +using ComponentProgramming.Components.Models; + namespace Forms { public partial class Form : System.Windows.Forms.Form @@ -9,7 +11,28 @@ namespace Forms FillTextBox(); FillList(); string[] strings = new string[] { " , ( )", " ( ) ( )" }; - largeTextComponent.CreateDocument("C:\\Users\\shotb\\source\\repos\\KOP\\ComponentProgramming\\Forms\\text.pdf", "", strings); + //largeTextComponent.CreateDocument("C:\\Users\\shotb\\source\\repos\\KOP\\ComponentProgramming\\Forms\\text.pdf", "", strings); + List colInfos = new List() + { + new ColumnInfo("Name","",50), + new ColumnInfo("Surname","",100), + new ColumnInfo("Phone","",100), + new ColumnInfo("Email","",200), + new ColumnInfo("Password","",50), + }; + List mergeCells = new List() + { + new MergeCells("", new int[] {0,3,4}) + }; + List workers = new List() + { + new Worker("", "", "+88005553535", "mail@gmail.ru", "pass123"), + new Worker("", "", "+88005553535", "mail@gmail.ru", "pass123"), + new Worker("", "", "+88005553535", "mail@gmail.ru", "pass123"), + new Worker("", "", "+88005553535", "mail@gmail.ru", "pass123"), + }; + tableComponent.CreateTable("C:\\Users\\shotb\\source\\repos\\KOP\\ComponentProgramming\\Forms\\table.pdf", "", mergeCells, colInfos, workers); + } private void FillBox() diff --git a/ComponentProgramming/Forms/Form.resx b/ComponentProgramming/Forms/Form.resx index d491498..3062234 100644 --- a/ComponentProgramming/Forms/Form.resx +++ b/ComponentProgramming/Forms/Form.resx @@ -117,7 +117,7 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - + 17, 17 \ No newline at end of file diff --git a/ComponentProgramming/Forms/Worker.cs b/ComponentProgramming/Forms/Worker.cs new file mode 100644 index 0000000..f2975d7 --- /dev/null +++ b/ComponentProgramming/Forms/Worker.cs @@ -0,0 +1,32 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Forms +{ + public class Worker + { + public string Name { get; set; } = string.Empty; + + public string Surname { get; set; } = string.Empty; + + public string Phone { get; set; } = string.Empty; + + public string Email { get; set; } = string.Empty; + + public string Password { get; set; } = string.Empty; + + public Worker() { } + + public Worker(string name, string surname, string phone, string email, string password) + { + Name = name; + Surname = surname; + Phone = phone; + Email = email; + Password = password; + } + } +} diff --git a/ComponentProgramming/Forms/table.pdf b/ComponentProgramming/Forms/table.pdf new file mode 100644 index 0000000000000000000000000000000000000000..4bc42c19c1351039a19b0f1f3ec6a1e8b7cd65f4 GIT binary patch literal 46872 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�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