1 и 3 все супер, но 2..........

This commit is contained in:
Екатерина Рогашова 2023-10-12 22:42:25 +04:00
parent 1980650439
commit e15e9c2088
6 changed files with 115 additions and 18 deletions

View File

@ -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);

View File

@ -25,16 +25,16 @@ namespace COPWinForms
InitializeComponent();
}
public void CreateTable(string filePath, string documentTitle, List<ColumnDefinition> columnDefinitions, List<object> 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

View File

@ -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);
}

View File

@ -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;
}
}
}

29
COPWinForms/TableWord.cs Normal file
View File

@ -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<ColumnDefinition> ColumnDefinitions;
public List<object> Data;
public TableWord(string filePath, string documentTitle, List<ColumnDefinition> columnDefinitions, List<object> data)
{
FilePath = filePath;
DocumentTitle = documentTitle;
ColumnDefinitions = columnDefinitions;
Data = data;
}
}
}

View File

@ -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)