Witam wszystkich, potrzebuje stworzyć funkcjonalność która będzie przechodziła przez wszystkie wiersze pliku excel'owego(xls) i dla każdego mojego wewnętrznego id sprawdzała czy pozycja o tym id w tym samym pliku się powtarza, jeżeli tak to w wierszu z pierwszym wystąpieniem danego id w kolumnie obok o nazwie "Ilość"(double) dodaje wartość z każdego kolejnego wystąpienia, a w każdym kolejnym wystąpieniu zmienia wartość na ujemną(tak żeby potem te wszystkie powtórzone wiersze usunąć). Funkcjonalność na razie wygląda tak:
for (int row = 1; row <= sheet.LastRowNum; row++)
{
string cellValue = GetStringCellValue(sheet.GetRow(row).Cells[kolumnaPorownania]);
if (cellValue == null)
{
break;
}
for (int j = row; j < sheet.LastRowNum; j++)
{
if (row == j)
{
continue;
}
ICell compareCell = sheet.GetRow(j).GetCell(kolumnaPorownania);
if (compareCell == null)
{
break;
}
string compareCellValue = GetStringCellValue(compareCell);
if (cellValue == compareCellValue)
{
double cellIloscValue = sheet.GetRow(row).Cells[kolumnaIlosc].NumericCellValue;
double compareCelIlosclValue = sheet.GetRow(j).Cells[kolumnaIlosc].NumericCellValue;
if (cellIloscValue > 0 || compareCelIlosclValue > 0)
{
sheet.GetRow(row).Cells[kolumnaIlosc].SetCellValue(cellIloscValue + compareCelIlosclValue);
sheet.GetRow(j).Cells[kolumnaIlosc].SetCellValue(-100);
}
}
}
}
Pętle mieli bardzo bardzo długo, nawet nie że wynik z jeden i drugiej, ale prawie każda iteracja pierwszej(głównej) pętli trwa sekunde-dwie.
Mój problem polega na tym że nie mam pojęcia czemu. Wierszy jest jakieś 450, a iteracja idzie wolno nawet przy jednorazowym przejściu, debug'uje ale z tego mi nic nie wychodzi.
Czy jest w tym kodzie może jakiś błąd którego ja po prostu nie widzę albo nie rozumiem?
Liczę na pomoc, bardzo zależy mi żeby naprawić ten problem.