That's because you're using a hash table, and hash tables may not enumerate in the same order they were declared. If you have Powershell V3, you can use the [ordered] type accelerator to create an ordered hash table, and it will maintain the same order that the keys were created in:
$row = [ordered]@{}
Or you can use Select-Object on your object collection ($finalresult) to set the order that you want before you do the export.