From 20cfbfcca3a779c04aecdca5e4b465651e2be42a Mon Sep 17 00:00:00 2001 From: Sergey Chebotar Date: Fri, 24 Dec 2021 17:42:20 +0300 Subject: [PATCH] New release --- README.md | 18 ++++++++---- RehauSku.Assist.csproj | 4 +-- Source/AddIn/RegistryUtil.cs | 6 ++++ Source/Forms/Dialog.cs | 4 +-- Source/PriceListTools/ExportTool.cs | 22 ++++++++++++-- Source/PriceListTools/MergeTool.cs | 45 +++++++++++++++++++++++++---- Source/Ribbon/RibbonController.cs | 14 ++++----- 7 files changed, 86 insertions(+), 27 deletions(-) diff --git a/README.md b/README.md index 4f9b62b..a12e67c 100644 --- a/README.md +++ b/README.md @@ -1,14 +1,20 @@ # REHAU SKU плагин для MS Excel ## Назначение -Служит для помощи в обработке клиентских заявок путем поиска продукции REHAU по запросу, выраженному в свободной форме. +Помощь в обработке клиентских заявок путем поиска продукции REHAU по запросу, выраженному в свободной форме, и в работе с прайс-листом BS REHAU ## Принцип работы -Плагин делает поисковый запрос в интернет-магазине REHAU, выполняет парсинг полученного ответа и выдает результат +Плагин делает поисковый запрос в интернет-магазин REHAU, выполняет парсинг полученного ответа и выдает результат ## Реализованные функции -- Отображение наименования найденного по запросу продукта с помощью формулы `=RAUNAME()` -- Отображение артикула с помощью формулы `=RAUSKU()` -- Отображение цены найденного продукта с помощью формулы `=RAUPRICE()` +- Формулы для поиска информации + - Отображение наименования с помощью `=RAUNAME()` + - Отображение артикула с помощью `=RAUSKU()` + - Отображение цены с помощью формулы `=RAUPRICE()` +- Экспорт массива ячеек вида "Артикул - Количество" в прайс-лист +- Объединение нескольких прайс-листов в один файл + +*Для работы функций "Экспорт" и "Объединение" требуется указать путь к файлу пустого прайс-листа REHAU* + ## Работа без установки 1. Запустить файл `RehauSku.Assist-AddIn-packed.xll` или `RehauSku.Assist-AddIn64-packed.xll` в зависимости от архитектуры приложения @@ -24,7 +30,7 @@ Файл -> Параметры -> Надстройки -> Управление: Надстройки Excel -> Перейти... -> Обзор - Выбрать и включить файл плагина. + Выбрать и включить файл плагина ## Использованные библиотеки - [ExcelDna](https://github.com/Excel-DNA/ExcelDna) diff --git a/RehauSku.Assist.csproj b/RehauSku.Assist.csproj index 8783034..e8ba584 100644 --- a/RehauSku.Assist.csproj +++ b/RehauSku.Assist.csproj @@ -131,9 +131,7 @@ - - - + diff --git a/Source/AddIn/RegistryUtil.cs b/Source/AddIn/RegistryUtil.cs index 3e7c120..40d0ec2 100644 --- a/Source/AddIn/RegistryUtil.cs +++ b/Source/AddIn/RegistryUtil.cs @@ -47,6 +47,12 @@ namespace RehauSku return _priceListPath; } } + + set + { + _priceListPath = value; + _RootKey.SetValue("PriceListPath", value); + } } public static ResponseOrder StoreResponseOrder diff --git a/Source/Forms/Dialog.cs b/Source/Forms/Dialog.cs index 1953816..170cc81 100644 --- a/Source/Forms/Dialog.cs +++ b/Source/Forms/Dialog.cs @@ -11,7 +11,7 @@ namespace RehauSku.Forms using (OpenFileDialog dialog = new OpenFileDialog()) { - dialog.Filter = "Все файлы (*.*)|*.*"; + dialog.Filter = "Файлы Excel (*.xls;*.xlsx;*.xlsm)|*.xls;*.xlsx;*.xlsm"; if (dialog.ShowDialog() == DialogResult.OK) { @@ -28,7 +28,7 @@ namespace RehauSku.Forms using (OpenFileDialog dialog = new OpenFileDialog()) { - dialog.Filter = "Все файлы (*.*)|*.*"; + dialog.Filter = "Файлы Excel (*.xls;*.xlsx;*.xlsm)|*.xls;*.xlsx;*.xlsm"; dialog.Multiselect = true; if (dialog.ShowDialog() == DialogResult.OK) diff --git a/Source/PriceListTools/ExportTool.cs b/Source/PriceListTools/ExportTool.cs index 02def5b..0a28bf3 100644 --- a/Source/PriceListTools/ExportTool.cs +++ b/Source/PriceListTools/ExportTool.cs @@ -74,12 +74,30 @@ namespace RehauSku.PriceListTools public void ExportToNewFile() { + if (SkuAmount.Count < 1) + { + return; + } + string exportFile = PriceListUtil.CreateNewExportFile(); Workbook wb = ExcelApp.Workbooks.Open(exportFile); - PriceList priceList = new PriceList(wb); - if (priceList.IsValid()) + try + { + PriceList priceList = new PriceList(wb); priceList.Fill(SkuAmount); + } + + catch(Exception ex) + { + System.Windows.Forms.MessageBox.Show + ($"{RegistryUtil.PriceListPath} не является файлом прайслиста \n\n {ex.Message}", + "Неверный файл прайс-листа!", + System.Windows.Forms.MessageBoxButtons.OK, + System.Windows.Forms.MessageBoxIcon.Error); + + wb.Close(); + } } public void Dispose() diff --git a/Source/PriceListTools/MergeTool.cs b/Source/PriceListTools/MergeTool.cs index 21da41d..6b0644d 100644 --- a/Source/PriceListTools/MergeTool.cs +++ b/Source/PriceListTools/MergeTool.cs @@ -22,23 +22,56 @@ namespace RehauSku.PriceListTools foreach (string file in files) { Workbook wb = ExcelApp.Workbooks.Open(file); - PriceList priceList = new PriceList(wb); - if (priceList.IsValid()) + try + { + PriceList priceList = new PriceList(wb); SkuAmount.AddValues(priceList); + } - wb.Close(); + catch (Exception ex) + { + System.Windows.Forms.MessageBox.Show + ( $"{wb.Name} не является файлом прайслиста \n\n {ex.Message}", + "Неверный файл прайс-листа!", + System.Windows.Forms.MessageBoxButtons.OK, + System.Windows.Forms.MessageBoxIcon.Error); + } + + finally + { + wb.Close(); + } } ExcelApp.ScreenUpdating = true; } public void ExportToNewFile(string exportFile) { - Workbook wb = ExcelApp.Workbooks.Open(exportFile); - PriceList priceList = new PriceList(wb); + if (SkuAmount.Count < 1) + { + return; + } - if (priceList.IsValid()) + Workbook wb = ExcelApp.Workbooks.Open(exportFile); + PriceList priceList; + + try + { + priceList = new PriceList(wb); priceList.Fill(SkuAmount); + } + + catch (Exception ex) + { + System.Windows.Forms.MessageBox.Show + ($"{RegistryUtil.PriceListPath} не является файлом прайслиста \n\n {ex.Message}", + "Неверный файл прайс-листа!", + System.Windows.Forms.MessageBoxButtons.OK, + System.Windows.Forms.MessageBoxIcon.Error); + + wb.Close(); + } } public void Dispose() diff --git a/Source/Ribbon/RibbonController.cs b/Source/Ribbon/RibbonController.cs index 0090761..df6f327 100644 --- a/Source/Ribbon/RibbonController.cs +++ b/Source/Ribbon/RibbonController.cs @@ -17,11 +17,11 @@ namespace RehauSku.Ribbon -