The first thing that comes to mind when seeing your code is changing this
if (sheet.GetRow(i).Cells[col].ToString() == "ATM") ATM = col;
else if (sheet.GetRow(i).Cells[col].ToString() == "Card-AMEX") AMEX = col;
else if (sheet.GetRow(i).Cells[col].ToString() == "Card-MASTER") MASTER = col;
else if (sheet.GetRow(i).Cells[col].ToString() == "Card-VISA") VISA = col;
else if (sheet.GetRow(i).Cells[col].ToString() == "Cash") CASH = col;
To the following (it might seem like more lines of code, but its way more readable and doesn't repeat sheet.GetRow(i).Cells[col].ToString()
5 times.
switch(sheet.GetRow(i).Cells[col].ToString())
{
case "ATM": ATM = col; break;
case "Card-AMEX": AMEX = col; break;
case "Card-MASTER": MASTER = col; break;
case "Card-VISA": VISA = col; break;
case "Cash": CASH = col; break;
}
Also, try not to repeat doing the same thing over and over again.
ie. you call sheet.GetRow(k)
so many times. Instead create a variable and call it once and use that variable. Same concept as above and as a bonus, you will get a performance increase.
Edit
As per the question, you want a way to clean up all the if statements (the nesting)
Instead of
if(A == B)
{
//50 lines of code
}
do
if(A != B)
{
//return/exit/...
}
//50 lines of code
The other option to get "rid" of all the complex if logic, is to break your code blocks into their own functions/methods. I personally don't like code blocks bigger than 15 lines (incl spacing/bracers), but of course this is my opinion.
Visual studio has a really nice extension, called CodeMaid
which gives you a value based on the complexity of the method. This will also teach you to create smaller, more readable, code blocks.