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 по запросу, выраженному в свободной форме.
Помощь в обработке клиентских заявок путем поиска продукции 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)

View File

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

View File

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

View File

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

View File

@ -74,14 +74,32 @@ 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()
{
Dispose(true);

View File

@ -22,25 +22,58 @@ namespace RehauSku.PriceListTools
foreach (string file in files)
{
Workbook wb = ExcelApp.Workbooks.Open(file);
try
{
PriceList priceList = new PriceList(wb);
if (priceList.IsValid())
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();
}
}
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()
{
Dispose(true);

View File

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