Он устал от гудения проводов, устал он мерцания мониторов
(я над этой лабой бился не знаю сколько времени. Я капец устал, но она готова)
This commit is contained in:
parent
7b0038a08f
commit
fb17f2b58d
@ -42,7 +42,7 @@
|
|||||||
controlDataTable = new ControlsLibraryNet60.Data.ControlDataTableTable();
|
controlDataTable = new ControlsLibraryNet60.Data.ControlDataTableTable();
|
||||||
excelImagesComponent = new WinFormsLibraryVolkov.NonVisualComponents.ExcelImagesComponent(components);
|
excelImagesComponent = new WinFormsLibraryVolkov.NonVisualComponents.ExcelImagesComponent(components);
|
||||||
componentHistogramToPdf = new FormLibrary.ComponentHistogramToPdf(components);
|
componentHistogramToPdf = new FormLibrary.ComponentHistogramToPdf(components);
|
||||||
componentDocumentWithTableMultiHeaderWord = new ComponentsLibraryNet60.DocumentWithTable.ComponentDocumentWithTableMultiHeaderWord(components);
|
componentDocumentWithTableHeaderRowWord = new ComponentsLibraryNet60.DocumentWithTable.ComponentDocumentWithTableHeaderRowWord(components);
|
||||||
menuStrip.SuspendLayout();
|
menuStrip.SuspendLayout();
|
||||||
SuspendLayout();
|
SuspendLayout();
|
||||||
//
|
//
|
||||||
@ -168,6 +168,6 @@
|
|||||||
private ControlsLibraryNet60.Data.ControlDataTableTable controlDataTable;
|
private ControlsLibraryNet60.Data.ControlDataTableTable controlDataTable;
|
||||||
private WinFormsLibraryVolkov.NonVisualComponents.ExcelImagesComponent excelImagesComponent;
|
private WinFormsLibraryVolkov.NonVisualComponents.ExcelImagesComponent excelImagesComponent;
|
||||||
private FormLibrary.ComponentHistogramToPdf componentHistogramToPdf;
|
private FormLibrary.ComponentHistogramToPdf componentHistogramToPdf;
|
||||||
private ComponentsLibraryNet60.DocumentWithTable.ComponentDocumentWithTableMultiHeaderWord componentDocumentWithTableMultiHeaderWord;
|
private ComponentsLibraryNet60.DocumentWithTable.ComponentDocumentWithTableHeaderRowWord componentDocumentWithTableHeaderRowWord;
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -23,6 +23,7 @@ using FormLibrary.HelperClasses;
|
|||||||
using FormLibrary;
|
using FormLibrary;
|
||||||
using System.Diagnostics;
|
using System.Diagnostics;
|
||||||
using DocumentFormat.OpenXml.Drawing.Charts;
|
using DocumentFormat.OpenXml.Drawing.Charts;
|
||||||
|
using System.Runtime.CompilerServices;
|
||||||
|
|
||||||
namespace InternetShopOrdersApp
|
namespace InternetShopOrdersApp
|
||||||
{
|
{
|
||||||
@ -95,13 +96,22 @@ namespace InternetShopOrdersApp
|
|||||||
|
|
||||||
private void документToolStripMenuItem_Click(object sender, EventArgs e)
|
private void документToolStripMenuItem_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
List<string> orderImages = new List<string>();
|
using (SaveFileDialog saveFileDialog = new SaveFileDialog())
|
||||||
foreach (var order in _logic.ReadList(null))
|
|
||||||
{
|
{
|
||||||
orderImages.Add(order.OrderImage);
|
saveFileDialog.Filter = "Excel Workbook (*.xlsx)|*.xlsx";
|
||||||
|
saveFileDialog.Title = "Сохранить Excel файл";
|
||||||
|
if (saveFileDialog.ShowDialog() == DialogResult.OK)
|
||||||
|
{
|
||||||
|
List<string> orderImages = new List<string>();
|
||||||
|
foreach (var order in _logic.ReadList(null))
|
||||||
|
{
|
||||||
|
orderImages.Add(order.OrderImage);
|
||||||
|
}
|
||||||
|
string path = saveFileDialog.FileName;
|
||||||
|
excelImagesComponent.createWithImages(new ExcelImageInfo(path, "Фотокарточки заказов", orderImages.ToArray()));
|
||||||
|
}
|
||||||
|
MessageBox.Show("Excel успешно создан!", "Успех", MessageBoxButtons.OK, MessageBoxIcon.Information);
|
||||||
}
|
}
|
||||||
string path = AppDomain.CurrentDomain.BaseDirectory + "Фотокарточки заказов с интернет-магазина.xlsx";
|
|
||||||
if (excelImagesComponent.createWithImages(new ExcelImageInfo(path, "Фотокарточки заказов", orderImages.ToArray()))) MessageBox.Show("Документ был создан");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void выбранныеТоварыToolStripMenuItem_Click(object sender, EventArgs e)
|
private void выбранныеТоварыToolStripMenuItem_Click(object sender, EventArgs e)
|
||||||
@ -115,90 +125,78 @@ namespace InternetShopOrdersApp
|
|||||||
|
|
||||||
private void документСТаблицейToolStripMenuItem_Click(object sender, EventArgs e)
|
private void документСТаблицейToolStripMenuItem_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
string path = AppDomain.CurrentDomain.BaseDirectory + "Отчет по всем товарам.docx";
|
using (SaveFileDialog saveFileDialog = new SaveFileDialog())
|
||||||
|
|
||||||
// Получение списка заказов, который теперь должен возвращать список OrderViewModel
|
|
||||||
var orders = _logic.ReadList(null).Select(order => new OrderViewModel
|
|
||||||
{
|
{
|
||||||
Id = order.Id,
|
saveFileDialog.Filter = "Word Document (*.docx)|*.docx";
|
||||||
Fullname = order.Fullname,
|
saveFileDialog.Title = "Сохранить Word файл";
|
||||||
Email = order.Email,
|
|
||||||
SelectedItemName = order.SelectedItemName,
|
|
||||||
OrderImage = order.OrderImage
|
|
||||||
}).ToList(); // Преобразование в список OrderViewModel
|
|
||||||
|
|
||||||
// Настройка заголовков
|
if (saveFileDialog.ShowDialog() == DialogResult.OK)
|
||||||
var headers = new List<(int ColumnIndex, int RowIndex, string Header, string PropertyName)>
|
{
|
||||||
{
|
var orders = _logic.ReadList(null);
|
||||||
(0, 0, "Идентификатор", nameof(OrderViewModel.Id)),
|
componentDocumentWithTableHeaderRowWord.CreateDoc(new ComponentDocumentWithTableHeaderDataConfig<OrderViewModel>
|
||||||
(1, 0, "Личные данные", null), // Adjusting to show a single header for the merged fields
|
{
|
||||||
(2, 0, "Выбранный товар", nameof(OrderViewModel.SelectedItemName))
|
FilePath = saveFileDialog.FileName,
|
||||||
};
|
Header = "Заказы",
|
||||||
|
UseUnion = true,
|
||||||
|
ColumnsRowsWidth = new List<(int, int)> { (5, 0), (10, 0), (10, 0), (10, 0) },
|
||||||
|
ColumnUnion = new List<(int StartIndex, int Count)> { (1, 2) },
|
||||||
|
Headers = new List<(int ColumnIndex, int RowIndex, string Header, string PropertyName)>
|
||||||
|
{
|
||||||
|
(0, 0, "Id", "Id"),
|
||||||
|
(1, 0, "Личные данные", ""),
|
||||||
|
(1, 1, "ФИО заказчика", "Fullname"),
|
||||||
|
(2, 1, "Электронная почта", "Email"),
|
||||||
|
(3, 0, "Изображение заказа", "OrderImage"),
|
||||||
|
},
|
||||||
|
Data = orders
|
||||||
|
});
|
||||||
|
|
||||||
// Задайте количество данных и заголовков
|
MessageBox.Show("Word файл был успешно создан!", "Успех", MessageBoxButtons.OK, MessageBoxIcon.Information);
|
||||||
var dataCount = orders.Count; // Количество строк данных
|
}
|
||||||
var headerCount = headers.Count; // Количество заголовков
|
}
|
||||||
|
|
||||||
// Определение ширины колонок
|
|
||||||
var columnsRowsWidth = new List<(int Column, int Row)>
|
|
||||||
{
|
|
||||||
(0, 1), // Ширина для "Идентификатор"
|
|
||||||
(1, 1), // Ширина для "Личные данные" (объединение ФИО и Эл. почты)
|
|
||||||
(2, 1) // Ширина для "Выбранный товар"
|
|
||||||
};
|
|
||||||
|
|
||||||
// Определение объединения колонок
|
|
||||||
var columnUnion = new List<(int StartIndex, int Count)>
|
|
||||||
{
|
|
||||||
(1, 2) // Объединяем "ФИО" и "Эл. почта" в одну ячейку
|
|
||||||
};
|
|
||||||
|
|
||||||
// Создание документа
|
|
||||||
componentDocumentWithTableMultiHeaderWord.CreateDoc(new ComponentDocumentWithTableHeaderDataConfig<OrderViewModel>
|
|
||||||
{
|
|
||||||
Header = "Отчет по всем товарам",
|
|
||||||
Headers = headers,
|
|
||||||
ColumnsRowsDataCount = (headerCount, dataCount+1), // +1 для заголовка
|
|
||||||
ColumnsRowsWidth = columnsRowsWidth,
|
|
||||||
ColumnUnion = columnUnion,
|
|
||||||
UseUnion = true,
|
|
||||||
FilePath = path,
|
|
||||||
Data = orders // Передаем данные заказов в виде OrderViewModel
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void документСДиаграммойToolStripMenuItem_Click(object sender, EventArgs e)
|
private void документСДиаграммойToolStripMenuItem_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
try
|
using (SaveFileDialog saveFileDialog = new SaveFileDialog())
|
||||||
{
|
{
|
||||||
var histogramGenerator = new ComponentHistogramToPdf();
|
saveFileDialog.Filter = "PDF Document (*.pdf)|*.pdf";
|
||||||
|
saveFileDialog.Title = "Сохранить PDF файл";
|
||||||
var orders = _logic.ReadList(null);
|
if (saveFileDialog.ShowDialog() == DialogResult.OK)
|
||||||
|
|
||||||
var itemCounts = new Dictionary<string, int>();
|
|
||||||
foreach (var order in orders)
|
|
||||||
{
|
{
|
||||||
if (!itemCounts.ContainsKey(order.SelectedItemName))
|
try
|
||||||
{
|
{
|
||||||
itemCounts[order.SelectedItemName] = 0;
|
var histogramGenerator = new ComponentHistogramToPdf();
|
||||||
|
|
||||||
|
var orders = _logic.ReadList(null);
|
||||||
|
|
||||||
|
var itemCounts = new Dictionary<string, int>();
|
||||||
|
foreach (var order in orders)
|
||||||
|
{
|
||||||
|
if (!itemCounts.ContainsKey(order.SelectedItemName))
|
||||||
|
{
|
||||||
|
itemCounts[order.SelectedItemName] = 0;
|
||||||
|
}
|
||||||
|
itemCounts[order.SelectedItemName]++;
|
||||||
|
}
|
||||||
|
|
||||||
|
var chartData = new List<ChartData>
|
||||||
|
{
|
||||||
|
new ChartData { SeriesName = "Заказы по товарам", Data = itemCounts.ToDictionary(kvp => kvp.Key, kvp => (double)kvp.Value) }
|
||||||
|
};
|
||||||
|
|
||||||
|
string filePath = saveFileDialog.FileName;
|
||||||
|
|
||||||
|
histogramGenerator.CreateHistogramPdf(filePath, "Какие товары сколько раз заказывали", "Диаграмма заказов", OxyPlot.Legends.LegendPosition.BottomCenter, chartData);
|
||||||
|
|
||||||
|
MessageBox.Show("PDF успешно сгенерирован!", "Успех", MessageBoxButtons.OK, MessageBoxIcon.Information);
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
MessageBox.Show($"Ошибка: {ex.Message}", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||||
}
|
}
|
||||||
itemCounts[order.SelectedItemName]++;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
var chartData = new List<ChartData>
|
|
||||||
{
|
|
||||||
new ChartData { SeriesName = "Заказы по товарам", Data = itemCounts.ToDictionary(kvp => kvp.Key, kvp => (double)kvp.Value) }
|
|
||||||
};
|
|
||||||
|
|
||||||
string filePath = AppDomain.CurrentDomain.BaseDirectory + "Какие товары сколько раз заказывали.pdf";
|
|
||||||
|
|
||||||
histogramGenerator.CreateHistogramPdf(filePath, "Какие товары сколько раз заказывали", "Диаграмма заказов", OxyPlot.Legends.LegendPosition.BottomCenter, chartData);
|
|
||||||
|
|
||||||
MessageBox.Show("PDF успешно сгенерирован!", "Успех", MessageBoxButtons.OK, MessageBoxIcon.Information);
|
|
||||||
}
|
|
||||||
catch (Exception ex)
|
|
||||||
{
|
|
||||||
MessageBox.Show($"Ошибка: {ex.Message}", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -126,8 +126,8 @@
|
|||||||
<metadata name="componentHistogramToPdf.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
<metadata name="componentHistogramToPdf.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||||
<value>734, 22</value>
|
<value>734, 22</value>
|
||||||
</metadata>
|
</metadata>
|
||||||
<metadata name="componentDocumentWithTableMultiHeaderWord.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
<metadata name="componentDocumentWithTableHeaderRowWord.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||||
<value>347, 18</value>
|
<value>328, 20</value>
|
||||||
</metadata>
|
</metadata>
|
||||||
<metadata name="$this.TrayHeight" type="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
<metadata name="$this.TrayHeight" type="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||||
<value>177</value>
|
<value>177</value>
|
||||||
|
Loading…
Reference in New Issue
Block a user