Не поддерживает русский язык, формат xls?
Разумеется, Excel прекрасно поддерживает русский язык. Вот только работает он на старой, как экскремент мамонта, операционной системе Виндоус, где до сих пор стандартной считается кодировка 1251. И думает, что данные всегда лежат в ней. 

Плюс формируете вы не xls, а HTML, замаскированный под xls. 
И из-за этой маскировки Excel не предлагает поменять кодировку при импорте. 

Поэтому есть два пути
1. Сохранять данные как CSV.  Тогда при импорте можно будет выбрать кодировку.
2. Перекодировать данные перед сохранением, mb_convert_encoding($output, "windows-1251", "utf-8");
Во первых, ты создаешь html а не excel, да офис умеет открывать такие файлы и даже не ругается, но если хочешь работать с документами напрямую, работай с .xlsx или .ods (open document стандарт поддерживается везде и всеми, это стандарт для документооборота, пользуйся лучше  им) - это по факту архив с текстовыми xml документами

По факту, настрой кодировку, с которой ты будешь общаться с базой данных set_charset либо поменяй свою кодировку в php коде на ту же что выдает база данных (utf-8) и пропиши в твоем html в  в заголовке