Это не совсем сложно в PHP, начиная с массива
$startArray = array(
array('Animal','','',''),
array('Mamals','','Birds',''),
array('Whales','Humans','Eagle','Hen'),
);
$result = array();
foreach ($startArray as $key => $value) {
foreach($value as $key2 => $value2) {
$result[$key2][$key] = $value2;
}
}
var_dump($result);
Если вы начинаете с файла Excel, вам нужна библиотека, например PHPExcel , чтобы прочитать ячейки в массиве, обновить рабочий лист после транспонирования и снова записать файл