Az én két centem (amellett, hogy egyetértek azokkal, akik szerint eleve őrültség millió sort akármilyen excelben tartani):
Én perlben csinálnám. A MySQL részére a dolognak ott van a DBI, ami bejáratott és jól dokumentált dolog, az XLSX-re pedig az Excel::Writer::XLSX, ami ugyan új, de aktívan fejlesztett és nagyrészt működik. A kettő között pedig ízlés szerint lehet a karakter-kódolást kijavítani (az Encode::* modulokkal például).