Well the excel 2003 can open the csv files and if the the delimiter is tab it can automatically transform data into correct columns.
Well the problem is with the characters which aren't the ascii ones. The libreoffice opens the dialog for selecting charset but the excel 2003 does not and imports the characters into wrong charset.
<?php
$filename ="excelreport.xls";
$contents1 = "Name \t Location (where from) \t Age \t \n";
$contents = "testdata1 \t testdata2 \t testdata3 \t \n";
$problematicData = array('ä', 'ö', 'õ', 'ü');
header('Content-type: application/ms-excel');
header('Content-Disposition: attachment; filename='.$filename);
echo $contents1;
echo $contents;
echo implode(" \t ", $problematicData);
// EDIT Probably i found a fix added this header('Content-type: application/ms-excel; charset=utf-8; encoding=utf-8'); But i haven't tested it with the excel 2003.