Можно придумать десяток способов, но у вас достаточно простой, читаемый и понятный код получился, я бы его оставил.
Для примера, вот альтернативы:
$notInResult = [0,1,2,4,5,7,8];
$all = range(0, $nColumn); //массив всех чисел от 0 до $nColumn
$inResult = array_diff($all, $notInResult); //убираем из массива всех чисел те, которые указаны в $notInResult
foreach ($inResult as $j) {
echo $sheet->getCellByColumnAndRow($j, $i)->getValue();
}
Второй вариант очень похож на ваш, но вместо медленной проверки in_array используется быстрая проверка isset
$notInResult = [0 => true, 1 => true, 2 => true, 4 => true, 5 => true, 7 => true, 8 => true]; //номера скрываемых колонок будем хранить в ключах массива, а значениями массива сделаем заглушку true
for ($j = 0; $j < $nColumn; $j++) {
if (!isset($notInResult[$j])) {
echo $sheet->getCellByColumnAndRow($j, $i)->getValue();
}
}