Я не знаю, где ошибка в вашем коде, так как я не загружал файлы, близкие к этому.
Я всегда использовал пример на W3Schools http://w3schools.com/php/php_file_upload.asp
А затем отредактировал его, чтобы заставить его обрабатывать файлы нужного типа (в которых вы, похоже, застряли).
Способ, которым вы хотите проверить тип файла, использует $_POST['file']['type']
Я вижучто вы действительно используете это, но, возможно, не правильно.
Вы можете посмотреть на W3S, как они выполняют проверку типов файлов для изображений, это также можно использовать для xls.
Способ выяснитьто, что ваш браузер отправляет как тип файла, это просто trigger_error("File type is: ".$_POST['file']['type']);
Теперь вы можете сделать оператор if, как они использовали в W3S для проверки файла, используя тип файла, о котором сообщал trigger_error.
ПожалуйстаИмейте в виду, что некоторые браузеры (особенно IE) могут использовать другое имя.
(извините за невозможность дать вам ответ на ваш собственный сценарий, но, возможно, есть некоторые вещи, которые я сказал, которые могут помочь)