2023-10-06 21:29:34 +04:00
|
|
|
|
using Aspose.Words;
|
|
|
|
|
using Aspose.Words.Drawing;
|
|
|
|
|
using Aspose.Words.Drawing.Charts;
|
2023-10-06 13:27:30 +04:00
|
|
|
|
using System.ComponentModel;
|
2023-10-06 21:29:34 +04:00
|
|
|
|
using VisualComponentsLib.Components.SupportClasses;
|
|
|
|
|
|
2023-10-06 13:27:30 +04:00
|
|
|
|
|
|
|
|
|
namespace VisualComponentsLib.Components
|
|
|
|
|
{
|
|
|
|
|
public partial class ComponentWordHistogram : Component
|
|
|
|
|
{
|
|
|
|
|
public ComponentWordHistogram()
|
|
|
|
|
{
|
|
|
|
|
InitializeComponent();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public ComponentWordHistogram(IContainer container)
|
|
|
|
|
{
|
|
|
|
|
container.Add(this);
|
|
|
|
|
|
|
|
|
|
InitializeComponent();
|
|
|
|
|
}
|
2023-10-06 21:29:34 +04:00
|
|
|
|
|
|
|
|
|
//создание таблицы
|
|
|
|
|
public void AddHistogram(SimpleHistogram simpleHistogram)
|
|
|
|
|
{
|
|
|
|
|
if (!CheckData(simpleHistogram.DataList))
|
|
|
|
|
{
|
|
|
|
|
throw new Exception("Не данные заполнены");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Initialize document
|
|
|
|
|
Document doc = new Document();
|
|
|
|
|
DocumentBuilder builder = new DocumentBuilder(doc);
|
|
|
|
|
|
|
|
|
|
// Specify font formatting
|
|
|
|
|
Aspose.Words.Font font = builder.Font;
|
|
|
|
|
font.Size = 24;
|
|
|
|
|
font.Bold = true;
|
|
|
|
|
font.Color = System.Drawing.Color.Black;
|
|
|
|
|
font.Name = "Times New Roman";
|
|
|
|
|
|
|
|
|
|
// Specify paragraph formatting
|
|
|
|
|
ParagraphFormat paragraphFormat = builder.ParagraphFormat;
|
|
|
|
|
paragraphFormat.FirstLineIndent = 8;
|
|
|
|
|
paragraphFormat.SpaceAfter = 24;
|
|
|
|
|
paragraphFormat.Alignment = ParagraphAlignment.Center;
|
|
|
|
|
paragraphFormat.KeepTogether = true;
|
|
|
|
|
|
2023-10-09 18:14:48 +04:00
|
|
|
|
builder.Writeln(simpleHistogram.FileHeader);
|
2023-10-06 21:29:34 +04:00
|
|
|
|
|
|
|
|
|
// Добавьте диаграмму с данными по умолчанию. Вы можете указать различные типы и размеры диаграмм.
|
|
|
|
|
Shape shape = builder.InsertChart(ChartType.Column, 500, 270);
|
|
|
|
|
|
|
|
|
|
// Свойство диаграммы формы содержит все параметры, связанные с диаграммой.
|
|
|
|
|
Chart chart = shape.Chart;
|
|
|
|
|
|
|
|
|
|
chart.Title.Text = simpleHistogram.HistogramName;
|
|
|
|
|
|
|
|
|
|
// Получите коллекцию серий диаграмм.
|
|
|
|
|
ChartSeriesCollection seriesColl = chart.Series;
|
|
|
|
|
|
|
|
|
|
// Проверьте количество серий.
|
|
|
|
|
Console.WriteLine(seriesColl.Count);
|
|
|
|
|
|
|
|
|
|
// Удалить серию, сгенерированную по умолчанию.
|
|
|
|
|
seriesColl.Clear();
|
|
|
|
|
|
|
|
|
|
// Создайте массив имен категорий
|
|
|
|
|
string[] categories = new string[] { simpleHistogram.DataList[0].NameSeries };
|
|
|
|
|
|
|
|
|
|
// Добавление новых серий. Обратите внимание, что массивы данных не должны быть пустыми, а массивы должны быть одного размера.
|
|
|
|
|
foreach (var data in simpleHistogram.DataList)
|
|
|
|
|
{
|
2023-10-11 12:14:23 +04:00
|
|
|
|
seriesColl.Add(data.NameData, categories, new double[] { data.Data });
|
2023-10-06 21:29:34 +04:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Move the chart's legend to the top right corner.
|
|
|
|
|
ChartLegend legend = chart.Legend;
|
|
|
|
|
|
|
|
|
|
legend.Position = (LegendPosition)simpleHistogram.AreaLegend;
|
|
|
|
|
|
|
|
|
|
// Give other chart elements, such as the graph, more room by allowing them to overlap the legend.
|
|
|
|
|
legend.Overlay = true;
|
|
|
|
|
|
|
|
|
|
// Сохраните документ
|
|
|
|
|
doc.Save(simpleHistogram.FilePath);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//проверка заполненности входных значений
|
|
|
|
|
static bool CheckData(List<DataHistogram> data)
|
|
|
|
|
{
|
|
|
|
|
foreach (var _data in data)
|
|
|
|
|
{
|
2023-10-11 12:14:23 +04:00
|
|
|
|
if(string.IsNullOrEmpty(_data.NameSeries) || string.IsNullOrEmpty(_data.Data.ToString()))
|
2023-10-06 21:29:34 +04:00
|
|
|
|
{
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return true;
|
|
|
|
|
}
|
2023-10-06 13:27:30 +04:00
|
|
|
|
}
|
|
|
|
|
}
|