Está generando CSV, que es básicamente un archivo de texto sin formato. No hay forma de especificar la información de codificación en este tipo de archivos. La mayoría de los editores de texto implementan (mejor o peor) la detección automática de codificación. Excel no. Excel simplemente asumirá ANSI cuando haga clic derecho en un archivo CSV. (Debe usar el menú "Abrir" para que se le pregunte sobre la codificación).
Su única opción (aparte de cambiar a otro formato de salida) es convertir datos a ANSI, ya sea con mb_convert_encoding() o con iconv() . Pero ahora tiene otro problema:ANSI no es una codificación real, básicamente significa "cualquiera que sea la codificación establecida en my Computadora con Windows". Primero debe averiguar la codificación típica que tienen la mayoría de sus usuarios. Eso depende principalmente del país. Por ejemplo, muchos países de Europa Occidental usan Win-1252.