Нашел решение в виде
ob_end_clean();
перед установкой заголовков.
До конца еще не разобрался, но до этого с выводом происходили странные вещи. Дебажил код и база оказалась вообще не при чем. Вручную прописывал ячейки таблицы и одно слово на русском отрабатывало удачно, в то время как другое в этой же ячейке не отображалось. Связи не выявил.
Если кто объяснит почему ob_end_clean() помогло, буду благодарен. Ниже привожу рабочий код. Лишнее поубирал.
require_once __DIR__ . '/../phpexcel/Classes/PHPExcel.php';
require_once(__DIR__ . '/../phpexcel/Classes/PHPExcel/Writer/Excel5.php');
$xls = new \PHPExcel();
$xls->setActiveSheetIndex(0);
$sheet = $xls->getActiveSheet();
$sheet->setCellValue("A1", 'Тест1');
$sheet->setCellValue("B1", 'Тест2');
$sheet->setCellValue("C1", 'Тест3');
$sheet->setCellValue("D1", 'Тест4');
$sheet->setCellValue("E1", 'Тест5');
$sheet->setCellValue("F1", 'Тест6');
$sheet->setCellValue("G1", 'Тест7');
$sheet->setCellValue("H1", 'Тест8');
ob_end_clean();
header ( "Expires: Mon, 1 Apr 1974 05:00:00 GMT" );
header ( "Last-Modified: " . gmdate("D,d M YH:i:s") . " GMT" );
header ( "Cache-Control: no-cache, must-revalidate" );
header ( "Pragma: no-cache" );
header ( "Content-type: application/vnd.ms-excel" );
header ( "Content-Disposition: attachment; filename=test.xls" );
$objWriter = new \PHPExcel_Writer_Excel5($xls);
$objWriter->save('php://output');
До появления в коде ob_end_clean() генерируемый excel файл то был пустым, то с текстом в ячейках, но при указании кодировки mb internal encoding("UTF-8") в начале кода.