COP_labs/Labs/WordLineChart.cs

105 lines
3.9 KiB
C#
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using Aspose.Words;
using Aspose.Words.Drawing.Charts;
using DocumentFormat.OpenXml.Packaging;
using Labs.HelperClasses;
using Labs.HelperClasses.WordLineChart;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Diagnostics;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Labs
{
public partial class WordLineChart : Component
{
public WordLineChart()
{
InitializeComponent();
}
public WordLineChart(IContainer container)
{
container.Add(this);
InitializeComponent();
}
public void CreateLineChart(WordLineChartConfig config)
{
// Проверка наличия заголовка, пути и названия диаграммы
if (string.IsNullOrEmpty(config.LineChartTitle) || string.IsNullOrEmpty(config.FilePath) || string.IsNullOrEmpty(config.DocumentTitle))
{
throw new ArgumentException("Были переданы пустые параметры");
}
//Проверка, что данные не пустые
foreach (var _data in config.Data)
{
if (string.IsNullOrEmpty(_data.SeriaName) || string.IsNullOrEmpty(_data.Data.ToString()))
{
throw new ArgumentException("Были переданы пустые данные");
}
}
Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);
//Стиль для заголовка док-а
Style titleStyle = builder.Document.Styles.Add(StyleType.Paragraph, "Title");
titleStyle.Font.Size = 16;
titleStyle.Font.Bold = true;
titleStyle.ParagraphFormat.SpaceAfter = 12;
// Добавление заголовка документа
builder.ParagraphFormat.Style = titleStyle;
builder.Writeln(config.DocumentTitle);
// Вставка диаграммы
Aspose.Words.Drawing.Shape chartShape = builder.InsertChart(ChartType.Line, 500, 300);
Chart chart = chartShape.Chart;
// Заголовок диаграммы
chart.Title.Text = config.LineChartTitle;
//Расположение легенды
switch (config.LegendLocation)
{
case LegendLocation.Left:
//LegendPosition - класс Aspose
chart.Legend.Position = LegendPosition.Left;
break;
case LegendLocation.Top:
chart.Legend.Position = LegendPosition.Top;
break;
case LegendLocation.Right:
chart.Legend.Position = LegendPosition.Right;
break;
case LegendLocation.Bottom:
chart.Legend.Position = LegendPosition.Bottom;
break;
}
//chart.Legend.Position = (Aspose.Words.Drawing.Charts.LegendPosition)config.LegendLocation;
ChartSeriesCollection seriesColl = chart.Series;
seriesColl.Clear();
// Заполнение сериями и подписями снизу
foreach (var diagramDatas in config.Data)
{
ChartSeries seria = seriesColl.Add(diagramDatas.SeriaName, config.Categories, diagramDatas.Data);
// Настройка маркера
seria.Marker.Symbol = MarkerSymbol.Circle; // круг
seria.Marker.Size = 4; // размер
}
// Сохранение док-а
doc.Save(config.FilePath);
//Удаление вотермарки и текста от Aspose
new Remover().Remove(config.FilePath);
}
}
}