Vou dar uma refatorada no seu primeiro laço de repetição, veja se já melhora:
for (String column : selectedColunas){
Integer value = Integer.parseInt(column);
switch (value) {
case 0:
tituloTabela.createCell(contadorCelula).setCellValue(new HSSFRichTextString("PONTO DE VENDA"));
colunas[Integer.valueOf(selectedColunas.get(y))]="T";
contadorCelula ++;
break;
case 1:
tituloTabela.createCell(contadorCelula).setCellValue(new HSSFRichTextString("CIDADE"));
colunas[Integer.valueOf(selectedColunas.get(y))]="T";
contadorCelula ++;
break;
}
}
Aqui eu fiz o case 0 e 1, faça até o 7, pois é essa sua necessidade. Veja, quando se coloca apenas if, ele sai procurando em todos os if´s, mas o valor não pode ser 0 e 1 ao mesmo tempo, concorda ? O mínimo ali, é por um continue caso ele entre em algum if, para pular para a próxima iteração. Veja se essa minha modificação já lhe traz melhores resultados e aplique algo assim no seu segundo laço.
Não faça ‘==’ para Strings !!! Use o equals colega. E no teu segundo laço, tu verifica se é “T” para todos, mas vi no seu primeiro laço de repetição que tu atribuiu “T” a todas as colunas, está bem sem sentido as coisas por ai !
Por fim, poste o código modificado.