What your issue says to me, is, you need to learn how to use the debugger or learn other methods for debugging. You have 2 areas of concern in your LINQ statement.
1)
Quote:
row.Cells[0].FormattedValue.ToString() == xlRange.Cells[xlRow, 1].Text
is NEVER true and/or
2) this
Quote:
Convert.ToDecimal(row.Cells["AMOUNT"].FormattedValue, new CultureInfo("en-US"))
never produces a value that can be summed, although, I'd expect the compiler to tell you 'no can do'
So, I'd eliminate (1) first - if you can't for some reason check the data using a breakpoint and inspect the relevant items, before your LINQ sum, put a foreach and loop through the data and write it out - to the console for example, eg
foreach (DataGridViewRow row in dataGridView1.Rows)
{
Console.WriteLine("row.Cells[0].FormattedValue.ToString() : {0}", row.Cells[0].FormattedValue.ToString());
Console.WriteLine("xlRange.Cells[xlRow, 1].Text : {0}", xlRange.Cells[xlRow, 1].Text);
Console.WriteLine("Convert.ToDecimal...: {0}", Convert.ToDecimal(row.Cells["AMOUNT"].FormattedValue, new CultureInfo("en-US")));
Console.WriteLine("--");
}
If the first two items in each row don't 'match' then that's the first issue, and if the second doesn't produce a 'number' representation, then, that's the second