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) public void CreateWordText(TextWord textWord)
{ {
if (string.IsNullOrEmpty(textWord.FilePath) || string.IsNullOrEmpty(textWord.DocumentTitle) || !CheckData(textWord.TextData))
{
throw new Exception("Не все данные заполнены");
}
// Создание документа // Создание документа
Document document = new Document(); Document document = new Document();
DocumentBuilder builder = new DocumentBuilder(document); DocumentBuilder builder = new DocumentBuilder(document);

View File

@ -25,16 +25,16 @@ namespace COPWinForms
InitializeComponent(); 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"); 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)) if (string.IsNullOrEmpty(columnDefinition.Header) || string.IsNullOrEmpty(columnDefinition.PropertyName))
{ {
@ -52,13 +52,21 @@ namespace COPWinForms
// Установка заголовка документа // Установка заголовка документа
builder.ParagraphFormat.Style = titleStyle; builder.ParagraphFormat.Style = titleStyle;
builder.Writeln(documentTitle); builder.Writeln(tableWord.DocumentTitle);
// Создание таблицы // Создание таблицы
Table table = builder.StartTable(); 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.InsertCell();
builder.Write(columnDefinition.Header); builder.Write(columnDefinition.Header);
@ -66,10 +74,10 @@ namespace COPWinForms
builder.EndRow(); 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(); builder.InsertCell();
// Получение значения свойства/поля объекта по заданному имени // Получение значения свойства/поля объекта по заданному имени
@ -88,7 +96,7 @@ namespace COPWinForms
builder.EndTable(); builder.EndTable();
// Сохранение документа в файл // Сохранение документа в файл
document.Save(filePath); document.Save(tableWord.FilePath);
} }
public class ColumnDefinition public class ColumnDefinition

View File

@ -39,13 +39,35 @@ namespace COPWinForms
InitializeComponent(); 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(); Document document = new Document();
DocumentBuilder builder = new DocumentBuilder(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); Shape chartShape = builder.InsertChart(ChartType.Line, 400, 300);
@ -53,21 +75,21 @@ namespace COPWinForms
// Настройка заголовка диаграммы // Настройка заголовка диаграммы
ChartTitle title = chart.Title; ChartTitle title = chart.Title;
title.Text = chartTitle; title.Text = diagramWord.ChartTitle;
ChartSeriesCollection seriesColl = chart.Series; ChartSeriesCollection seriesColl = chart.Series;
seriesColl.Clear(); // Очищаем существующие серии перед добавлением новых 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 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); MessageBox.Show("Äèàãðàììà ñîçäàíà óñïåøíî", "Ðåçóëüòàò", MessageBoxButtons.OK, MessageBoxIcon.Information);
} }
catch (Exception ex) catch (Exception ex)
@ -182,7 +183,8 @@ namespace WinFormsTest
{ {
try 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); MessageBox.Show("Ôàéë ñîçäàí", "Ðåçóëüòàò", MessageBoxButtons.OK, MessageBoxIcon.Information);
} }
catch (Exception ex) catch (Exception ex)