Надо сказать, что Excel любит формат не csv, а tsv. Иными словами, в данном формате разделителем является символ табуляции.
Помимо этого файл должен быть в кодировке UTF-16LE и содержать битовый маркер (BOM) — «\xFF\xFE»
Итого, вот такой код у вас должен получиться, чтобы cvs, создаваемый вами успешно открылся в экселе:
echo "\xFF\xFE"; // $output - переменная, в которой записан весь csv, UTF-8 - исходная кодировка, в которой находится $output echo mb_convert_encoding($output, "UTF-16LE", "UTF-8");