New release

This commit is contained in:
Sergey Chebotar 2021-12-24 17:42:20 +03:00
parent 24024b5729
commit 20cfbfcca3
7 changed files with 86 additions and 27 deletions

View File

@ -1,14 +1,20 @@
# REHAU SKU плагин для MS Excel # REHAU SKU плагин для MS Excel
## Назначение ## Назначение
Служит для помощи в обработке клиентских заявок путем поиска продукции REHAU по запросу, выраженному в свободной форме. Помощь в обработке клиентских заявок путем поиска продукции REHAU по запросу, выраженному в свободной форме, и в работе с прайс-листом BS REHAU
## Принцип работы ## Принцип работы
Плагин делает поисковый запрос в интернет-магазине REHAU, выполняет парсинг полученного ответа и выдает результат Плагин делает поисковый запрос в интернет-магазин REHAU, выполняет парсинг полученного ответа и выдает результат
## Реализованные функции ## Реализованные функции
- Отображение наименования найденного по запросу продукта с помощью формулы `=RAUNAME()` - Формулы для поиска информации
- Отображение артикула с помощью формулы `=RAUSKU()` - Отображение наименования с помощью `=RAUNAME()`
- Отображение цены найденного продукта с помощью формулы `=RAUPRICE()` - Отображение артикула с помощью `=RAUSKU()`
- Отображение цены с помощью формулы `=RAUPRICE()`
- Экспорт массива ячеек вида "Артикул - Количество" в прайс-лист
- Объединение нескольких прайс-листов в один файл
*Для работы функций "Экспорт" и "Объединение" требуется указать путь к файлу пустого прайс-листа REHAU*
## Работа без установки ## Работа без установки
1. Запустить файл `RehauSku.Assist-AddIn-packed.xll` или `RehauSku.Assist-AddIn64-packed.xll` в зависимости от архитектуры приложения 1. Запустить файл `RehauSku.Assist-AddIn-packed.xll` или `RehauSku.Assist-AddIn64-packed.xll` в зависимости от архитектуры приложения
@ -24,7 +30,7 @@
Файл -> Параметры -> Надстройки -> Файл -> Параметры -> Надстройки ->
Управление: Надстройки Excel -> Перейти... -> Обзор Управление: Надстройки Excel -> Перейти... -> Обзор
Выбрать и включить файл плагина. Выбрать и включить файл плагина
## Использованные библиотеки ## Использованные библиотеки
- [ExcelDna](https://github.com/Excel-DNA/ExcelDna) - [ExcelDna](https://github.com/Excel-DNA/ExcelDna)

View File

@ -131,9 +131,7 @@
<None Include="packages.config" /> <None Include="packages.config" />
<None Include="Properties\ExcelDna.Build.props" /> <None Include="Properties\ExcelDna.Build.props" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup />
<Folder Include="Source\Settings\" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> <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')" /> <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"> <Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">

View File

@ -47,6 +47,12 @@ namespace RehauSku
return _priceListPath; return _priceListPath;
} }
} }
set
{
_priceListPath = value;
_RootKey.SetValue("PriceListPath", value);
}
} }
public static ResponseOrder StoreResponseOrder public static ResponseOrder StoreResponseOrder

View File

@ -11,7 +11,7 @@ namespace RehauSku.Forms
using (OpenFileDialog dialog = new OpenFileDialog()) using (OpenFileDialog dialog = new OpenFileDialog())
{ {
dialog.Filter = "Все файлы (*.*)|*.*"; dialog.Filter = "Файлы Excel (*.xls;*.xlsx;*.xlsm)|*.xls;*.xlsx;*.xlsm";
if (dialog.ShowDialog() == DialogResult.OK) if (dialog.ShowDialog() == DialogResult.OK)
{ {
@ -28,7 +28,7 @@ namespace RehauSku.Forms
using (OpenFileDialog dialog = new OpenFileDialog()) using (OpenFileDialog dialog = new OpenFileDialog())
{ {
dialog.Filter = "Все файлы (*.*)|*.*"; dialog.Filter = "Файлы Excel (*.xls;*.xlsx;*.xlsm)|*.xls;*.xlsx;*.xlsm";
dialog.Multiselect = true; dialog.Multiselect = true;
if (dialog.ShowDialog() == DialogResult.OK) if (dialog.ShowDialog() == DialogResult.OK)

View File

@ -74,14 +74,32 @@ namespace RehauSku.PriceListTools
public void ExportToNewFile() public void ExportToNewFile()
{ {
if (SkuAmount.Count < 1)
{
return;
}
string exportFile = PriceListUtil.CreateNewExportFile(); string exportFile = PriceListUtil.CreateNewExportFile();
Workbook wb = ExcelApp.Workbooks.Open(exportFile); Workbook wb = ExcelApp.Workbooks.Open(exportFile);
PriceList priceList = new PriceList(wb);
if (priceList.IsValid()) try
{
PriceList priceList = new PriceList(wb);
priceList.Fill(SkuAmount); 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() public void Dispose()
{ {
Dispose(true); Dispose(true);

View File

@ -22,25 +22,58 @@ namespace RehauSku.PriceListTools
foreach (string file in files) foreach (string file in files)
{ {
Workbook wb = ExcelApp.Workbooks.Open(file); Workbook wb = ExcelApp.Workbooks.Open(file);
try
{
PriceList priceList = new PriceList(wb); PriceList priceList = new PriceList(wb);
if (priceList.IsValid())
SkuAmount.AddValues(priceList); SkuAmount.AddValues(priceList);
}
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(); wb.Close();
} }
}
ExcelApp.ScreenUpdating = true; ExcelApp.ScreenUpdating = true;
} }
public void ExportToNewFile(string exportFile) public void ExportToNewFile(string exportFile)
{ {
Workbook wb = ExcelApp.Workbooks.Open(exportFile); if (SkuAmount.Count < 1)
PriceList priceList = new PriceList(wb); {
return;
}
if (priceList.IsValid()) Workbook wb = ExcelApp.Workbooks.Open(exportFile);
PriceList priceList;
try
{
priceList = new PriceList(wb);
priceList.Fill(SkuAmount); 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() public void Dispose()
{ {
Dispose(true); Dispose(true);

View File

@ -17,11 +17,11 @@ namespace RehauSku.Ribbon
<tabs> <tabs>
<tab id='rau' label='REHAU'> <tab id='rau' label='REHAU'>
<group id='priceList' label='Прайс-лист'> <group id='priceList' label='Прайс-лист'>
<button id='exportToPrice' label='Экспорт' size='large' imageMso='PivotExportToExcel' onAction='OnExportPressed'/> <button id='exportToPrice' label='Экспорт в новый файл' size='normal' imageMso='PivotExportToExcel' onAction='OnExportPressed'/>
<button id='mergeFiles' label='Объединить' size='large' imageMso='Copy' onAction='OnMergePressed'/> <button id='mergeFiles' label='Объединить' size='normal' imageMso='Copy' onAction='OnMergePressed'/>
</group> </group>
<group id='rausettings' label='Настройки'> <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> </group>
</tab> </tab>
</tabs> </tabs>
@ -60,12 +60,10 @@ namespace RehauSku.Ribbon
} }
} }
public void OnSettingsPressed(IRibbonControl control) public void OnSetPricePressed(IRibbonControl control)
{ {
Form settingsForm = new SettingsForm(); string path = Dialog.GetFilePath();
RegistryUtil.PriceListPath = path;
settingsForm.Show();
} }
} }
} }