Move Autofilter method to abstract class

This commit is contained in:
Sergey Chebotar 2022-01-26 18:37:24 +03:00
parent 55bbd801a5
commit 94e0c84ce1
5 changed files with 20 additions and 50 deletions

View File

@ -17,6 +17,14 @@ namespace RehauSku.PriceListTools
sourcePriceLists = new List<PriceList>(); sourcePriceLists = new List<PriceList>();
} }
protected private void FilterByAmount()
{
AutoFilter filter = NewPriceList.Sheet.AutoFilter;
filter.Range.AutoFilter(NewPriceList.amountCell.Column, "<>");
NewPriceList.Sheet.Range["A1"].Activate();
}
public void OpenNewPrice(string path) public void OpenNewPrice(string path)
{ {
Workbook wb = ExcelApp.Workbooks.Open(path); Workbook wb = ExcelApp.Workbooks.Open(path);

View File

@ -7,9 +7,6 @@ namespace RehauSku.PriceListTools
{ {
public override void FillPriceList() public override void FillPriceList()
{ {
PriceList offer = NewPriceList;
offer.Sheet.Activate();
int exportedValues = 0; int exportedValues = 0;
foreach (var sheet in sourcePriceLists) foreach (var sheet in sourcePriceLists)
@ -17,13 +14,13 @@ namespace RehauSku.PriceListTools
if (sheet.SkuAmount.Count == 0) if (sheet.SkuAmount.Count == 0)
continue; continue;
offer.Sheet.Columns[offer.amountCell.Column] NewPriceList.Sheet.Columns[NewPriceList.amountCell.Column]
.EntireColumn .EntireColumn
.Insert(XlInsertShiftDirection.xlShiftToRight, XlInsertFormatOrigin.xlFormatFromRightOrBelow); .Insert(XlInsertShiftDirection.xlShiftToRight, XlInsertFormatOrigin.xlFormatFromRightOrBelow);
foreach (var kvp in sheet.SkuAmount) foreach (var kvp in sheet.SkuAmount)
{ {
Range cell = offer.Sheet.Columns[offer.skuCell.Column].Find(kvp.Key); Range cell = NewPriceList.Sheet.Columns[NewPriceList.skuCell.Column].Find(kvp.Key);
if (cell == null) if (cell == null)
{ {
@ -36,8 +33,8 @@ namespace RehauSku.PriceListTools
else else
{ {
offer.Sheet.Cells[cell.Row, offer.amountCell.Column - 1].Value2 = kvp.Value; NewPriceList.Sheet.Cells[cell.Row, NewPriceList.amountCell.Column - 1].Value2 = kvp.Value;
Range sumCell = offer.Sheet.Cells[cell.Row, offer.amountCell.Column]; Range sumCell = NewPriceList.Sheet.Cells[cell.Row, NewPriceList.amountCell.Column];
if (sumCell.Value2 == null) if (sumCell.Value2 == null)
sumCell.Value2 = kvp.Value; sumCell.Value2 = kvp.Value;
@ -47,17 +44,12 @@ namespace RehauSku.PriceListTools
exportedValues++; exportedValues++;
} }
offer.Sheet.Cells[offer.amountCell.Row, offer.amountCell.Column - 1].Value2 = $"{sheet.Name}"; NewPriceList.Sheet.Cells[NewPriceList.amountCell.Row, NewPriceList.amountCell.Column - 1].Value2 = $"{sheet.Name}";
} }
} }
AutoFilter filter = offer.Sheet.AutoFilter; FilterByAmount();
filter.Range.AutoFilter(offer.amountCell.Column, "<>");
offer.Sheet.Range["A1"].Activate();
AddIn.Excel.StatusBar = $"Экспортировано {exportedValues} строк из {sourcePriceLists.Count} файлов"; AddIn.Excel.StatusBar = $"Экспортировано {exportedValues} строк из {sourcePriceLists.Count} файлов";
Forms.Dialog.SaveWorkbookAs(); Forms.Dialog.SaveWorkbookAs();
} }

View File

@ -107,14 +107,8 @@ namespace RehauSku.PriceListTools
exportedValues++; exportedValues++;
} }
} }
FilterByAmount();
AutoFilter filter = offer.Sheet.AutoFilter; AddIn.Excel.StatusBar = $"Экспортировано {exportedValues} строк из {SkuAmount.Count}";
int firstFilterColumn = filter.Range.Column;
filter.Range.AutoFilter(offer.amountCell.Column - firstFilterColumn + 1, "<>");
offer.Sheet.Range["A1"].Activate();
AddIn.Excel.StatusBar = $"Экспортировано {exportedValues} строк из {SkuAmount.Count}";
Forms.Dialog.SaveWorkbookAs(); Forms.Dialog.SaveWorkbookAs();
} }

View File

@ -7,9 +7,6 @@ namespace RehauSku.PriceListTools
{ {
public override void FillPriceList() public override void FillPriceList()
{ {
PriceList offer = NewPriceList;
offer.Sheet.Activate();
int exportedValues = 0; int exportedValues = 0;
foreach (var sheet in sourcePriceLists) foreach (var sheet in sourcePriceLists)
@ -19,7 +16,7 @@ namespace RehauSku.PriceListTools
foreach (var kvp in sheet.SkuAmount) foreach (var kvp in sheet.SkuAmount)
{ {
Range cell = offer.Sheet.Columns[offer.skuCell.Column].Find(kvp.Key); Range cell = NewPriceList.Sheet.Columns[NewPriceList.skuCell.Column].Find(kvp.Key);
if (cell == null) if (cell == null)
{ {
@ -32,7 +29,7 @@ namespace RehauSku.PriceListTools
else else
{ {
Range sumCell = offer.Sheet.Cells[cell.Row, offer.amountCell.Column]; Range sumCell = NewPriceList.Sheet.Cells[cell.Row, NewPriceList.amountCell.Column];
if (sumCell.Value2 == null) if (sumCell.Value2 == null)
sumCell.Value2 = kvp.Value; sumCell.Value2 = kvp.Value;
@ -44,12 +41,8 @@ namespace RehauSku.PriceListTools
} }
} }
AutoFilter filter = offer.Sheet.AutoFilter; FilterByAmount();
filter.Range.AutoFilter(offer.amountCell.Column, "<>");
offer.Sheet.Range["A1"].Activate();
AddIn.Excel.StatusBar = $"Экспортировано {exportedValues} строк из {sourcePriceLists.Count} файлов"; AddIn.Excel.StatusBar = $"Экспортировано {exportedValues} строк из {sourcePriceLists.Count} файлов";
Forms.Dialog.SaveWorkbookAs(); Forms.Dialog.SaveWorkbookAs();
} }

View File

@ -18,24 +18,7 @@ namespace RehauSku.PriceListTools
public readonly Range skuCell; public readonly Range skuCell;
public readonly Range groupCell; public readonly Range groupCell;
public Dictionary<PriceListPosition, Range> Map { get; private set; } //public Dictionary<PriceListPosition, Range> Map { get; private set; }
public PriceList(Worksheet sheet)
{
Sheet = sheet;
Name = sheet.Name;
amountCell = Sheet.Cells.Find(amountHeader);
skuCell = Sheet.Cells.Find(skuHeader);
groupCell = Sheet.Cells.Find(groupHeader);
if (amountCell == null || skuCell == null || groupCell == null)
{
throw new ArgumentException($"Лист { Name } не распознан");
}
FillSkuAmount();
}
public PriceList(Workbook workbook) public PriceList(Workbook workbook)
{ {