From caca56426057a70f64234391c47c7a707d9ab272 Mon Sep 17 00:00:00 2001 From: Ismailov_Rovshan Date: Thu, 19 Oct 2023 00:25:16 +0400 Subject: [PATCH] =?UTF-8?q?=D0=93=D0=BE=D1=82=D0=BE=D0=B2=D0=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Components/SupportClasses/BigTable.cs | 31 ++++ .../SupportClasses/ColumnDefenition.cs | 15 ++ .../SupportClasses/DataLineChart.cs | 24 ++++ .../SupportClasses/Enums/EnumAreaLegend.cs | 23 +++ .../Components/SupportClasses/LargeText.cs | 24 ++++ .../SupportClasses/SimpleLineChart.cs | 31 ++++ .../Components/WordLineChart.Designer.cs | 36 +++++ .../Components/WordLineChart.cs | 84 +++++++++++ .../Components/WordTable.Designer.cs | 36 +++++ .../Components/WordTable.cs | 128 +++++++++++++++++ .../Components/WordText.Designer.cs | 36 +++++ .../Components/WordText.cs | 133 +++++++++++++++++ .../VisualComponentsLib.csproj | 6 + WinForms/WinForms/FormWord.Designer.cs | 135 ++++++++++++++++++ WinForms/WinForms/FormWord.cs | 129 +++++++++++++++++ WinForms/WinForms/FormWord.resx | 69 +++++++++ WinForms/WinForms/Program.cs | 2 +- 17 files changed, 941 insertions(+), 1 deletion(-) create mode 100644 WinForms/VisualComponentsLib/Components/SupportClasses/BigTable.cs create mode 100644 WinForms/VisualComponentsLib/Components/SupportClasses/ColumnDefenition.cs create mode 100644 WinForms/VisualComponentsLib/Components/SupportClasses/DataLineChart.cs create mode 100644 WinForms/VisualComponentsLib/Components/SupportClasses/Enums/EnumAreaLegend.cs create mode 100644 WinForms/VisualComponentsLib/Components/SupportClasses/LargeText.cs create mode 100644 WinForms/VisualComponentsLib/Components/SupportClasses/SimpleLineChart.cs create mode 100644 WinForms/VisualComponentsLib/Components/WordLineChart.Designer.cs create mode 100644 WinForms/VisualComponentsLib/Components/WordLineChart.cs create mode 100644 WinForms/VisualComponentsLib/Components/WordTable.Designer.cs create mode 100644 WinForms/VisualComponentsLib/Components/WordTable.cs create mode 100644 WinForms/VisualComponentsLib/Components/WordText.Designer.cs create mode 100644 WinForms/VisualComponentsLib/Components/WordText.cs create mode 100644 WinForms/WinForms/FormWord.Designer.cs create mode 100644 WinForms/WinForms/FormWord.cs create mode 100644 WinForms/WinForms/FormWord.resx diff --git a/WinForms/VisualComponentsLib/Components/SupportClasses/BigTable.cs b/WinForms/VisualComponentsLib/Components/SupportClasses/BigTable.cs new file mode 100644 index 0000000..bd8fbdc --- /dev/null +++ b/WinForms/VisualComponentsLib/Components/SupportClasses/BigTable.cs @@ -0,0 +1,31 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace VisualComponentsLib.Components.SupportClasses +{ + public class BigTable + { + public string FilePath = string.Empty; + + public string DocumentTitle = string.Empty; + + public List ColumnDefinitions; + public List ColumnDefinitions2; + + public List Data; + + public List MergedColumns; + public BigTable(string filePath, string documentTitle, List columnDefinitions, List columnDefinitions2, List data, List mergedColumns) + { + FilePath = filePath; + DocumentTitle = documentTitle; + ColumnDefinitions = columnDefinitions; + Data = data; + MergedColumns = mergedColumns; + ColumnDefinitions2 = columnDefinitions2; + } + } +} diff --git a/WinForms/VisualComponentsLib/Components/SupportClasses/ColumnDefenition.cs b/WinForms/VisualComponentsLib/Components/SupportClasses/ColumnDefenition.cs new file mode 100644 index 0000000..abb8644 --- /dev/null +++ b/WinForms/VisualComponentsLib/Components/SupportClasses/ColumnDefenition.cs @@ -0,0 +1,15 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace VisualComponentsLib.Components.SupportClasses +{ + public class ColumnDefinition + { + public string Header; + public string PropertyName; + public double Weight; + } +} diff --git a/WinForms/VisualComponentsLib/Components/SupportClasses/DataLineChart.cs b/WinForms/VisualComponentsLib/Components/SupportClasses/DataLineChart.cs new file mode 100644 index 0000000..e2bfad7 --- /dev/null +++ b/WinForms/VisualComponentsLib/Components/SupportClasses/DataLineChart.cs @@ -0,0 +1,24 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace VisualComponentsLib.Components.SupportClasses +{ + public class DataLineChart + { + public string NameSeries { get; set; } = string.Empty; + + public string[] NameData { get; set; } + + public double[] Data { get; set; } + + public DataLineChart(string nameSeries, string[] nameData, double[] data) + { + NameSeries = nameSeries; + NameData = nameData; + Data = data; + } + } +} diff --git a/WinForms/VisualComponentsLib/Components/SupportClasses/Enums/EnumAreaLegend.cs b/WinForms/VisualComponentsLib/Components/SupportClasses/Enums/EnumAreaLegend.cs new file mode 100644 index 0000000..7e97215 --- /dev/null +++ b/WinForms/VisualComponentsLib/Components/SupportClasses/Enums/EnumAreaLegend.cs @@ -0,0 +1,23 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace VisualComponentsLib.Components.SupportClasses.Enums +{ + public enum EnumAreaLegend + { + None, + + Left, + + Top, + + Right, + + Bottom, + + TopRight + } +} diff --git a/WinForms/VisualComponentsLib/Components/SupportClasses/LargeText.cs b/WinForms/VisualComponentsLib/Components/SupportClasses/LargeText.cs new file mode 100644 index 0000000..ab96edb --- /dev/null +++ b/WinForms/VisualComponentsLib/Components/SupportClasses/LargeText.cs @@ -0,0 +1,24 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace VisualComponentsLib.Components.SupportClasses +{ + public class LargeText + { + public string FilePath = string.Empty; + + public string DocumentTitle = string.Empty; + + public string[] TextData; + + public LargeText(string filePath, string documentTitle, string[] textData) + { + FilePath = filePath; + DocumentTitle = documentTitle; + TextData = textData; + } + } +} diff --git a/WinForms/VisualComponentsLib/Components/SupportClasses/SimpleLineChart.cs b/WinForms/VisualComponentsLib/Components/SupportClasses/SimpleLineChart.cs new file mode 100644 index 0000000..c2549ab --- /dev/null +++ b/WinForms/VisualComponentsLib/Components/SupportClasses/SimpleLineChart.cs @@ -0,0 +1,31 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using VisualComponentsLib.Components.SupportClasses.Enums; + +namespace VisualComponentsLib.Components.SupportClasses +{ + public class SimpleLineChart + { + public string FilePath = string.Empty; + + public string FileHeader = string.Empty; + + public string LineChartName = string.Empty; + + public EnumAreaLegend AreaLegend; + + public List DataList = new(); + + public SimpleLineChart(string filePath, string fileHeader, string lineChartName, EnumAreaLegend areaLegend, List dataList) + { + FilePath = filePath; + FileHeader = fileHeader; + LineChartName = lineChartName; + AreaLegend = areaLegend; + DataList = dataList; + } + } +} diff --git a/WinForms/VisualComponentsLib/Components/WordLineChart.Designer.cs b/WinForms/VisualComponentsLib/Components/WordLineChart.Designer.cs new file mode 100644 index 0000000..8a62f76 --- /dev/null +++ b/WinForms/VisualComponentsLib/Components/WordLineChart.Designer.cs @@ -0,0 +1,36 @@ +namespace VisualComponentsLib.Components +{ + partial class WordLineChart + { + /// + /// Обязательная переменная конструктора. + /// + 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/WinForms/VisualComponentsLib/Components/WordLineChart.cs b/WinForms/VisualComponentsLib/Components/WordLineChart.cs new file mode 100644 index 0000000..95e944b --- /dev/null +++ b/WinForms/VisualComponentsLib/Components/WordLineChart.cs @@ -0,0 +1,84 @@ +using Aspose.Words; +using Aspose.Words.Drawing; +using Aspose.Words.Drawing.Charts; +using System.ComponentModel; +using VisualComponentsLib.Components.SupportClasses; + +namespace VisualComponentsLib.Components +{ + public partial class WordLineChart : Component + { + public WordLineChart() + { + InitializeComponent(); + } + + public WordLineChart(IContainer container) + { + container.Add(this); + + InitializeComponent(); + } + + public void AddLineChart(SimpleLineChart simpleLineChart) + { + if (!CheckData(simpleLineChart.DataList)) + { + throw new Exception("Не данные заполнены"); + } + Document doc = new Document(); + DocumentBuilder builder = new DocumentBuilder(doc); + + Aspose.Words.Font font = builder.Font; + font.Size = 24; + font.Bold = true; + font.Color = Color.Black; + font.Name = "Times New Roman"; + + ParagraphFormat paragraphFormat = builder.ParagraphFormat; + paragraphFormat.FirstLineIndent = 8; + paragraphFormat.SpaceAfter = 24; + paragraphFormat.Alignment = ParagraphAlignment.Center; + paragraphFormat.KeepTogether = true; + + builder.Writeln(simpleLineChart.FileHeader); + + Shape shape = builder.InsertChart(ChartType.Line, 500, 270); + + Chart chart = shape.Chart; + + chart.Title.Text = simpleLineChart.LineChartName; + + ChartSeriesCollection seriesColl = chart.Series; + + Console.WriteLine(seriesColl.Count); + + seriesColl.Clear(); + + foreach (var data in simpleLineChart.DataList) + { + seriesColl.Add(data.NameSeries, data.NameData, data.Data); + } + + ChartLegend legend = chart.Legend; + + legend.Position = (LegendPosition)simpleLineChart.AreaLegend; + + legend.Overlay = true; + + doc.Save(simpleLineChart.FilePath); + } + static bool CheckData(List data) + { + foreach (var _data in data) + { + if (string.IsNullOrEmpty(_data.NameSeries) || string.IsNullOrEmpty(_data.NameData.ToString()) || string.IsNullOrEmpty(_data.Data.ToString())) + { + return false; + } + } + + return true; + } + } +} diff --git a/WinForms/VisualComponentsLib/Components/WordTable.Designer.cs b/WinForms/VisualComponentsLib/Components/WordTable.Designer.cs new file mode 100644 index 0000000..61cf583 --- /dev/null +++ b/WinForms/VisualComponentsLib/Components/WordTable.Designer.cs @@ -0,0 +1,36 @@ +namespace VisualComponentsLib.Components +{ + partial class WordTable + { + /// + /// Обязательная переменная конструктора. + /// + 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/WinForms/VisualComponentsLib/Components/WordTable.cs b/WinForms/VisualComponentsLib/Components/WordTable.cs new file mode 100644 index 0000000..7a215b6 --- /dev/null +++ b/WinForms/VisualComponentsLib/Components/WordTable.cs @@ -0,0 +1,128 @@ +using System.ComponentModel; +using Aspose.Words; +using Aspose.Words.Tables; +using VisualComponentsLib.Components.SupportClasses; + +namespace VisualComponentsLib.Components +{ + public partial class WordTable : Component + { + public WordTable() + { + InitializeComponent(); + } + + public WordTable(IContainer container) + { + container.Add(this); + + InitializeComponent(); + } + + public void CreateTable(BigTable bigTable) + { + if (bigTable.Data == null) + { + throw new ArgumentException("Не заданы все данные"); + } + + foreach (var columnDefinition in bigTable.ColumnDefinitions) + { + if (string.IsNullOrEmpty(columnDefinition.PropertyName)) + { + throw new ArgumentException($"Не задано свойство столбца: {columnDefinition.Header}"); + } + } + + 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(bigTable.DocumentTitle); + + Table table = builder.StartTable(); + + + foreach (var columnDefinition in bigTable.ColumnDefinitions) + { + builder.InsertCell(); + builder.CellFormat.PreferredWidth = PreferredWidth.FromPoints(columnDefinition.Weight); + builder.ParagraphFormat.Alignment = ParagraphAlignment.Center; + builder.CellFormat.VerticalAlignment = CellVerticalAlignment.Center; + builder.Write(columnDefinition.Header); + } + + foreach (var mergedColumn in bigTable.MergedColumns) + { + int startCellIndex = mergedColumn[0]; + int endCellIndex = mergedColumn[mergedColumn.Length - 1]; + + for (int i = startCellIndex; i <= endCellIndex; i++) + { + table.Rows[0].Cells[i].CellFormat.HorizontalMerge = CellMerge.First; + table.Rows[0].Cells[i].CellFormat.VerticalMerge = CellMerge.First; + } + + for (int i = startCellIndex + 1; i <= endCellIndex; i++) + { + table.Rows[0].Cells[i].CellFormat.HorizontalMerge = CellMerge.Previous; + table.Rows[0].Cells[i].CellFormat.VerticalMerge = CellMerge.First; + } + + + } + builder.EndRow(); + + foreach (var columnDefinition2 in bigTable.ColumnDefinitions2) + { + builder.InsertCell(); + builder.CellFormat.PreferredWidth = PreferredWidth.FromPoints(columnDefinition2.Weight); + builder.Write(columnDefinition2.Header); + } + + builder.EndRow(); + + int columnIndex; + foreach (var columnDefinition in bigTable.ColumnDefinitions) + { + string currentPropertyName = columnDefinition.PropertyName; + columnIndex = 0; + foreach (var columnDefinition2 in bigTable.ColumnDefinitions2) + { + string currentPropertyName1 = columnDefinition2.PropertyName; + + if (currentPropertyName == currentPropertyName1) + { + table.Rows[0].Cells[columnIndex].CellFormat.VerticalMerge = CellMerge.First; + table.Rows[1].Cells[columnIndex].CellFormat.VerticalMerge = CellMerge.Previous; + + } + columnIndex++; + } + } + + foreach (var item in bigTable.Data) + { + foreach (var columnDefinition2 in bigTable.ColumnDefinitions2) + { + builder.InsertCell(); + var propertyValue = item.GetType() + .GetProperty(columnDefinition2.PropertyName)? + .GetValue(item)?.ToString(); + + builder.Write(propertyValue ?? ""); + } + + builder.EndRow(); + } + + builder.EndTable(); + + document.Save(bigTable.FilePath); + } + } +} diff --git a/WinForms/VisualComponentsLib/Components/WordText.Designer.cs b/WinForms/VisualComponentsLib/Components/WordText.Designer.cs new file mode 100644 index 0000000..5b9bef2 --- /dev/null +++ b/WinForms/VisualComponentsLib/Components/WordText.Designer.cs @@ -0,0 +1,36 @@ +namespace VisualComponentsLib.Components +{ + partial class WordText + { + /// + /// Обязательная переменная конструктора. + /// + 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/WinForms/VisualComponentsLib/Components/WordText.cs b/WinForms/VisualComponentsLib/Components/WordText.cs new file mode 100644 index 0000000..b4c083f --- /dev/null +++ b/WinForms/VisualComponentsLib/Components/WordText.cs @@ -0,0 +1,133 @@ +using DocumentFormat.OpenXml.Packaging; +using DocumentFormat.OpenXml.Wordprocessing; +using DocumentFormat.OpenXml; +using System.ComponentModel; +using VisualComponentsLib.Components.SupportClasses; + +namespace VisualComponentsLib.Components +{ + public partial class WordText : Component + { + private WordprocessingDocument? _wordDocument; + + private Body? _docBody; + public WordText() + { + InitializeComponent(); + } + + public WordText(IContainer container) + { + container.Add(this); + + InitializeComponent(); + } + + public void CreateWordText(LargeText largeText) + { + if (string.IsNullOrEmpty(largeText.FilePath) || string.IsNullOrEmpty(largeText.DocumentTitle) || !CheckData(largeText.TextData)) + { + throw new Exception("Не все данные заполнены"); + } + _wordDocument = WordprocessingDocument.Create(largeText.FilePath, WordprocessingDocumentType.Document); + + //вытаскиваем главную часть из вордовского документа + MainDocumentPart mainPart = _wordDocument.AddMainDocumentPart(); + + mainPart.Document = new Document(); + + //генерируем тело основной части документа + _docBody = mainPart.Document.AppendChild(new Body()); + + _wordDocument.Close(); + + AddText(largeText); + } + + private void AddText(LargeText largeText) + { + using (var document = WordprocessingDocument.Open(largeText.FilePath, true)) + { + var doc = document.MainDocumentPart.Document; + + #region Создание заголовка + + ParagraphProperties paragraphProperties = new(); + + paragraphProperties.AppendChild(new Justification + { + Val = JustificationValues.Center + }); + + paragraphProperties.AppendChild(new Indentation()); + + Paragraph header = new(); + + header.AppendChild(paragraphProperties); + + var docRun = new Run(); + + var properties = new RunProperties(); + + properties.AppendChild(new FontSize + { + Val = "48" + }); + + properties.AppendChild(new Bold()); + + docRun.AppendChild(properties); + + docRun.AppendChild(new Text(largeText.DocumentTitle)); + + header.AppendChild(docRun); + doc.Body.Append(header); + #endregion + + #region Создание текста + for (int i = 0; i < largeText.TextData.Length; i++) + { + ParagraphProperties paragraphProperties2 = new(); + + paragraphProperties2.AppendChild(new Justification + { + Val = JustificationValues.Both + }); + + paragraphProperties2.AppendChild(new Indentation()); + + Paragraph text = new(); + + text.AppendChild(paragraphProperties2); + + var docRun2 = new Run(); + + var properties2 = new RunProperties(); + + properties2.AppendChild(new FontSize + { + Val = "24" + }); + + docRun2.AppendChild(properties2); + docRun2.AppendChild(new Text(largeText.TextData[i])); + + text.AppendChild(docRun2); + doc.Body.Append(text); + } + #endregion + doc.Save(); + } + } + + bool CheckData(string[] data) + { + for (int i = 0; i < data.Length; i++) + { + if (string.IsNullOrEmpty(data[i])) return false; + } + + return true; + } + } +} diff --git a/WinForms/VisualComponentsLib/VisualComponentsLib.csproj b/WinForms/VisualComponentsLib/VisualComponentsLib.csproj index 060aa1c..938a7b6 100644 --- a/WinForms/VisualComponentsLib/VisualComponentsLib.csproj +++ b/WinForms/VisualComponentsLib/VisualComponentsLib.csproj @@ -7,4 +7,10 @@ enable + + + + + + diff --git a/WinForms/WinForms/FormWord.Designer.cs b/WinForms/WinForms/FormWord.Designer.cs new file mode 100644 index 0000000..47bf3e8 --- /dev/null +++ b/WinForms/WinForms/FormWord.Designer.cs @@ -0,0 +1,135 @@ +namespace WinForms +{ + partial class FormWord + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.components = new System.ComponentModel.Container(); + this.wordText = new VisualComponentsLib.Components.WordText(this.components); + this.groupBox1 = new System.Windows.Forms.GroupBox(); + this.button1 = new System.Windows.Forms.Button(); + this.wordLineChart = new VisualComponentsLib.Components.WordLineChart(this.components); + this.groupBox3 = new System.Windows.Forms.GroupBox(); + this.button3 = new System.Windows.Forms.Button(); + this.groupBox2 = new System.Windows.Forms.GroupBox(); + this.button2 = new System.Windows.Forms.Button(); + this.wordTable = new VisualComponentsLib.Components.WordTable(this.components); + this.groupBox1.SuspendLayout(); + this.groupBox3.SuspendLayout(); + this.groupBox2.SuspendLayout(); + this.SuspendLayout(); + // + // groupBox1 + // + this.groupBox1.Controls.Add(this.button1); + this.groupBox1.Location = new System.Drawing.Point(12, 12); + this.groupBox1.Name = "groupBox1"; + this.groupBox1.Size = new System.Drawing.Size(136, 80); + this.groupBox1.TabIndex = 0; + this.groupBox1.TabStop = false; + this.groupBox1.Text = "Большой текст"; + // + // button1 + // + this.button1.Location = new System.Drawing.Point(6, 45); + this.button1.Name = "button1"; + this.button1.Size = new System.Drawing.Size(124, 29); + this.button1.TabIndex = 0; + this.button1.Text = "Создать"; + this.button1.UseVisualStyleBackColor = true; + this.button1.Click += new System.EventHandler(this.button1_Click); + // + // groupBox3 + // + this.groupBox3.Controls.Add(this.button3); + this.groupBox3.Location = new System.Drawing.Point(331, 12); + this.groupBox3.Name = "groupBox3"; + this.groupBox3.Size = new System.Drawing.Size(141, 80); + this.groupBox3.TabIndex = 1; + this.groupBox3.TabStop = false; + this.groupBox3.Text = "Линейная диаграмма"; + // + // button3 + // + this.button3.Location = new System.Drawing.Point(6, 45); + this.button3.Name = "button3"; + this.button3.Size = new System.Drawing.Size(127, 29); + this.button3.TabIndex = 0; + this.button3.Text = "Создать"; + this.button3.UseVisualStyleBackColor = true; + this.button3.Click += new System.EventHandler(this.button3_Click); + // + // groupBox2 + // + this.groupBox2.Controls.Add(this.button2); + this.groupBox2.Location = new System.Drawing.Point(171, 12); + this.groupBox2.Name = "groupBox2"; + this.groupBox2.Size = new System.Drawing.Size(142, 80); + this.groupBox2.TabIndex = 1; + this.groupBox2.TabStop = false; + this.groupBox2.Text = "Таблица"; + // + // button2 + // + this.button2.Location = new System.Drawing.Point(6, 45); + this.button2.Name = "button2"; + this.button2.Size = new System.Drawing.Size(130, 29); + this.button2.TabIndex = 0; + this.button2.Text = "Создать"; + this.button2.UseVisualStyleBackColor = true; + this.button2.Click += new System.EventHandler(this.button2_Click); + // + // FormWord + // + this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 20F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(493, 108); + this.Controls.Add(this.groupBox2); + this.Controls.Add(this.groupBox3); + this.Controls.Add(this.groupBox1); + this.Name = "FormWord"; + this.Text = "Невизуальные компоненты"; + this.groupBox1.ResumeLayout(false); + this.groupBox3.ResumeLayout(false); + this.groupBox2.ResumeLayout(false); + this.ResumeLayout(false); + + } + + #endregion + + private VisualComponentsLib.Components.WordText wordText; + private GroupBox groupBox1; + private Button button1; + private VisualComponentsLib.Components.WordLineChart wordLineChart; + private GroupBox groupBox3; + private Button button3; + private GroupBox groupBox2; + private Button button2; + private VisualComponentsLib.Components.WordTable wordTable; + } +} \ No newline at end of file diff --git a/WinForms/WinForms/FormWord.cs b/WinForms/WinForms/FormWord.cs new file mode 100644 index 0000000..828f8d7 --- /dev/null +++ b/WinForms/WinForms/FormWord.cs @@ -0,0 +1,129 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; +using VisualComponentsLib.Components.SupportClasses.Enums; +using VisualComponentsLib.Components.SupportClasses; +using VisualComponentsLib.Object; + +namespace WinForms +{ + public partial class FormWord : Form + { + string[] testArray = { "Вселенная оценивается в возрасте около 13,8 миллиарда лет.", "Пчелы могут видеть ультрафиолетовый свет, что помогает им находить нектар.", "Гепард - самое быстрое наземное животное, способное развивать скорость до 100 километров в час.", "Всего 12 человек посетили Луну, и ни один человек не был там с 1972 года.", "Крокодилы существуют на Земле более 200 миллионов лет и остаются одними из самых древних видов" }; + public FormWord() + { + InitializeComponent(); + } + + private void button1_Click(object sender, EventArgs e) + { + //фильтрация файлов для диалогового окна + using var dialog = new SaveFileDialog + { + Filter = "docx|*.docx" + }; + if (dialog.ShowDialog() == DialogResult.OK) + { + try + { + LargeText largeText = new(dialog.FileName, "Немножечко фактов.", testArray); + wordText.CreateWordText(largeText); + + MessageBox.Show("Выполнено", "Успех", MessageBoxButtons.OK, MessageBoxIcon.Information); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + } + + private void button2_Click(object sender, EventArgs e) + { + List mergedColumns = new() + { + new int[] { 0, 1, 2 } + }; + + + + List columnDefinitions = new List + { + new ColumnDefinition { Header = "Образование", PropertyName = "Eduction", Weight = 35 }, + new ColumnDefinition { Header = "", PropertyName = "Education1", Weight = 35 }, + new ColumnDefinition { Header = "", PropertyName = "Education2", Weight = 10 }, + new ColumnDefinition { Header = "Фамилия", PropertyName = "Name", Weight = 20 } + }; + + List columnDefinitions2 = new List + { + new ColumnDefinition { Header = "Группа", PropertyName = "Group", Weight = 35 }, + new ColumnDefinition { Header = "Факультатив", PropertyName = "Faculty", Weight = 35 }, + new ColumnDefinition { Header = "Курс", PropertyName = "Course", Weight = 10 }, + new ColumnDefinition { Header = "Фамилия", PropertyName = "Name", Weight = 20 } + }; + + List data = new List + { + new Student { Group = "ПИбд-32", Faculty = "ФИСТ", Course = 3, Name = "Багиров" }, + new Student { Group = "РТбд-11", Faculty = "РТФ", Course = 1, Name = "Ласков" }, + new Student { Group = "ЛМККбд-41", Faculty = "ГФ", Course = 4, Name = "Тейпова" } + }; + + using var dialog = new SaveFileDialog + { + Filter = "docx|*.docx" + }; + if (dialog.ShowDialog() == DialogResult.OK) + { + try + { + BigTable bigTable = new(dialog.FileName, "Задание 2", columnDefinitions, columnDefinitions2, data, mergedColumns); + wordTable.CreateTable(bigTable); + MessageBox.Show("Выполнено", "Успех", MessageBoxButtons.OK, MessageBoxIcon.Information); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + } + + private void button3_Click(object sender, EventArgs e) + { + //фильтрация файлов для диалогового окна + using var dialog = new SaveFileDialog + { + Filter = "docx|*.docx" + }; + + if (dialog.ShowDialog() == DialogResult.OK) + { + try + { + string[] month = { "Январь", "Февраль", "Март" }; + double[] profit1 = { 300, 440, 270 }; + double[] profit2 = { 500, 620, 310 }; + double[] profit3 = { 420, 189, 430 }; + SimpleLineChart lineChart = new(dialog.FileName, "Третье задание", "График прибыли", EnumAreaLegend.Right, new List { + new DataLineChart("Компания 1", month, profit1), new DataLineChart("Компания 2", month, profit2), new DataLineChart("Компания 3", month, profit3), + }); + + wordLineChart.AddLineChart(lineChart); + + MessageBox.Show("Выполнено", "Успех", MessageBoxButtons.OK, MessageBoxIcon.Information); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + } + } +} diff --git a/WinForms/WinForms/FormWord.resx b/WinForms/WinForms/FormWord.resx new file mode 100644 index 0000000..577dfc6 --- /dev/null +++ b/WinForms/WinForms/FormWord.resx @@ -0,0 +1,69 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 17, 17 + + + 133, 17 + + + 285, 17 + + \ No newline at end of file diff --git a/WinForms/WinForms/Program.cs b/WinForms/WinForms/Program.cs index 09cad38..c1b2fb8 100644 --- a/WinForms/WinForms/Program.cs +++ b/WinForms/WinForms/Program.cs @@ -11,7 +11,7 @@ namespace WinForms // To customize application configuration such as set high DPI settings or default font, // see https://aka.ms/applicationconfiguration. ApplicationConfiguration.Initialize(); - Application.Run(new FormForComponents()); + Application.Run(new FormWord()); } } } \ No newline at end of file