aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSergey Chebotar <s.chebotar@gmail.com>2021-12-24 17:42:20 +0300
committerSergey Chebotar <s.chebotar@gmail.com>2021-12-24 17:42:20 +0300
commit20cfbfcca3a779c04aecdca5e4b465651e2be42a (patch)
tree5d9c814fd023395d894ce36a9040cf7f7330198c
parent24024b5729c1c44bb01cb29813868743d1753e31 (diff)
New release
-rw-r--r--README.md18
-rw-r--r--RehauSku.Assist.csproj4
-rw-r--r--Source/AddIn/RegistryUtil.cs6
-rw-r--r--Source/Forms/Dialog.cs4
-rw-r--r--Source/PriceListTools/ExportTool.cs22
-rw-r--r--Source/PriceListTools/MergeTool.cs43
-rw-r--r--Source/Ribbon/RibbonController.cs14
7 files changed, 85 insertions, 26 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 @@
<None Include="packages.config" />
<None Include="Properties\ExcelDna.Build.props" />
</ItemGroup>
- <ItemGroup>
- <Folder Include="Source\Settings\" />
- </ItemGroup>
+ <ItemGroup />
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<Import Project="packages\ExcelDna.AddIn.1.5.0\build\ExcelDna.AddIn.targets" Condition="Exists('packages\ExcelDna.AddIn.1.5.0\build\ExcelDna.AddIn.targets')" />
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
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)
{
+ if (SkuAmount.Count < 1)
+ {
+ return;
+ }
+
Workbook wb = ExcelApp.Workbooks.Open(exportFile);
- PriceList priceList = new PriceList(wb);
+ PriceList priceList;
- if (priceList.IsValid())
+ 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
<tabs>
<tab id='rau' label='REHAU'>
<group id='priceList' label='Прайс-лист'>
- <button id='exportToPrice' label='Экспорт' size='large' imageMso='PivotExportToExcel' onAction='OnExportPressed'/>
- <button id='mergeFiles' label='Объединить' size='large' imageMso='Copy' onAction='OnMergePressed'/>
+ <button id='exportToPrice' label='Экспорт в новый файл' size='normal' imageMso='PivotExportToExcel' onAction='OnExportPressed'/>
+ <button id='mergeFiles' label='Объединить' size='normal' imageMso='Copy' onAction='OnMergePressed'/>
</group>
<group id='rausettings' label='Настройки'>
- <button id='set' label='Настройки' size='large' imageMso='CurrentViewSettings' onAction='OnSettingsPressed'/>
+ <button id='setPriceList' label='Файл прайс-листа' size='normal' imageMso='CurrentViewSettings' onAction='OnSetPricePressed'/>
</group>
</tab>
</tabs>
@@ -60,12 +60,10 @@ namespace RehauSku.Ribbon
}
}
- public void OnSettingsPressed(IRibbonControl control)
+ public void OnSetPricePressed(IRibbonControl control)
{
- Form settingsForm = new SettingsForm();
-
- settingsForm.Show();
-
+ string path = Dialog.GetFilePath();
+ RegistryUtil.PriceListPath = path;
}
}
}