Он устал от гудения проводов, устал он мерцания мониторов

(я над этой лабой бился не знаю сколько времени. Я капец устал, но она готова)
This commit is contained in:
Никита Волков 2024-10-29 10:43:03 +04:00
parent 7b0038a08f
commit fb17f2b58d
3 changed files with 81 additions and 83 deletions

View File

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

View File

@ -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
{ {
@ -94,14 +95,23 @@ namespace InternetShopOrdersApp
} }
private void документToolStripMenuItem_Click(object sender, EventArgs e) private void документToolStripMenuItem_Click(object sender, EventArgs e)
{
using (SaveFileDialog saveFileDialog = new SaveFileDialog())
{
saveFileDialog.Filter = "Excel Workbook (*.xlsx)|*.xlsx";
saveFileDialog.Title = "Сохранить Excel файл";
if (saveFileDialog.ShowDialog() == DialogResult.OK)
{ {
List<string> orderImages = new List<string>(); List<string> orderImages = new List<string>();
foreach (var order in _logic.ReadList(null)) foreach (var order in _logic.ReadList(null))
{ {
orderImages.Add(order.OrderImage); orderImages.Add(order.OrderImage);
} }
string path = AppDomain.CurrentDomain.BaseDirectory + "Фотокарточки заказов с интернет-магазина.xlsx"; string path = saveFileDialog.FileName;
if (excelImagesComponent.createWithImages(new ExcelImageInfo(path, "Фотокарточки заказов", orderImages.ToArray()))) MessageBox.Show("Документ был создан"); excelImagesComponent.createWithImages(new ExcelImageInfo(path, "Фотокарточки заказов", orderImages.ToArray()));
}
MessageBox.Show("Excel успешно создан!", "Успех", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
} }
private void выбранныеТоварыToolStripMenuItem_Click(object sender, EventArgs e) private void выбранныеТоварыToolStripMenuItem_Click(object sender, EventArgs e)
@ -115,59 +125,45 @@ 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)>
{ {
(0, 0, "Идентификатор", nameof(OrderViewModel.Id)), var orders = _logic.ReadList(null);
(1, 0, "Личные данные", null), // Adjusting to show a single header for the merged fields componentDocumentWithTableHeaderRowWord.CreateDoc(new ComponentDocumentWithTableHeaderDataConfig<OrderViewModel>
(2, 0, "Выбранный товар", nameof(OrderViewModel.SelectedItemName))
};
// Задайте количество данных и заголовков
var dataCount = orders.Count; // Количество строк данных
var headerCount = headers.Count; // Количество заголовков
// Определение ширины колонок
var columnsRowsWidth = new List<(int Column, int Row)>
{ {
(0, 1), // Ширина для "Идентификатор" FilePath = saveFileDialog.FileName,
(1, 1), // Ширина для "Личные данные" (объединение ФИО и Эл. почты) Header = "Заказы",
(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, UseUnion = true,
FilePath = path, ColumnsRowsWidth = new List<(int, int)> { (5, 0), (10, 0), (10, 0), (10, 0) },
Data = orders // Передаем данные заказов в виде OrderViewModel 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);
}
}
} }
private void документСДиаграммойToolStripMenuItem_Click(object sender, EventArgs e) private void документСДиаграммойToolStripMenuItem_Click(object sender, EventArgs e)
{
using (SaveFileDialog saveFileDialog = new SaveFileDialog())
{
saveFileDialog.Filter = "PDF Document (*.pdf)|*.pdf";
saveFileDialog.Title = "Сохранить PDF файл";
if (saveFileDialog.ShowDialog() == DialogResult.OK)
{ {
try try
{ {
@ -190,7 +186,7 @@ namespace InternetShopOrdersApp
new ChartData { SeriesName = "Заказы по товарам", Data = itemCounts.ToDictionary(kvp => kvp.Key, kvp => (double)kvp.Value) } new ChartData { SeriesName = "Заказы по товарам", Data = itemCounts.ToDictionary(kvp => kvp.Key, kvp => (double)kvp.Value) }
}; };
string filePath = AppDomain.CurrentDomain.BaseDirectory + "Какие товары сколько раз заказывали.pdf"; string filePath = saveFileDialog.FileName;
histogramGenerator.CreateHistogramPdf(filePath, "Какие товары сколько раз заказывали", "Диаграмма заказов", OxyPlot.Legends.LegendPosition.BottomCenter, chartData); histogramGenerator.CreateHistogramPdf(filePath, "Какие товары сколько раз заказывали", "Диаграмма заказов", OxyPlot.Legends.LegendPosition.BottomCenter, chartData);
@ -201,6 +197,8 @@ namespace InternetShopOrdersApp
MessageBox.Show($"Ошибка: {ex.Message}", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); MessageBox.Show($"Ошибка: {ex.Message}", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
} }
} }
}
}
} }
} }

View File

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