Exportar arquivos com valor !=null para uma tabela Excel

Bom dia, estou com uma dúvida, tenho campos null no banco de dados SQLServer e quando exporto para uma planilha excel o valor sai como “null”, gostaria que ficasse em branco. Segue abaixo o código que uso para exportar da minha tabela para um arquivo .xls não sei se o erro é no meu banco ou no meu código.

if (this.masterTable.getRowCount() == 0) {
        JOptionPane.showMessageDialog(null, "Não existem dados para exportar!");

        return;
    }
    JFileChooser selecionar = new JFileChooser();
    File archivo;
    if (selecionar.showDialog(null, "Exportar Excel") == JFileChooser.APPROVE_OPTION) {
        archivo = selecionar.getSelectedFile();
        int cantFila = masterTable.getRowCount();
        int cantColumna = masterTable.getColumnCount();
        Workbook wb;
        wb = new XSSFWorkbook();
        Sheet folha = wb.createSheet("Nova Folha");

        try {
            for (int i = -1; i < cantFila; i++) {
                Row fila = folha.createRow(i + 1);

                for (int j = 0; j < cantColumna; j++) {
                    Cell celda = fila.createCell(j);
                    if (i == -1) {
                        celda.setCellValue(String.valueOf(masterTable.getColumnName(j)));
                    } else {
                        celda.setCellValue(String.valueOf(masterTable.getValueAt(i, j)));
                    }
                    wb.write(new FileOutputStream(archivo +".xlsx"));
                }
            }
            JOptionPane.showMessageDialog(null, "Exportado com sucesso!");

        } catch (Exception e) {
            JOptionPane.showMessageDialog(null, "Problema ao exportar!");
        }

    } else {

    }

Você não poderia, simplesmente, verificar se o valor é nulo, não?

No banco o campo pode ser nulo, ex:

Funcionario / atividade / idade /
Everton / nulo / 27 /

O valor no banco sai como nulo pois esse campo não é obrigatório, mas quando clico em exportar ele motra na planilha exatamente como esta no banco.

Gostaria que ficasse assim:

Funcionario / atividade / idade
Everton / / 27

Se o retorno do método retornar vazio, vc coloca uma string vazia.
Você pode fazer a inicialização da string como vazia, é só faz a atribuição do this se o valor não for nulo
Existem n formas

Sim, eu entendi isso.
O que eu não entendo é a razão pela qual você não faz a validação de valores que virão de colunas que aceitam valores nulos e faz a substituição por uma string vazia.

Usando o codigo que informei, pode dar um exemplo ? ou essa validação seria no banco?

Usando o código que você postou? Os dados estão no mastertable? Se sim, então você precisa fazer algo assim:
masterTable.getValueAt(i, j) == null ? "" : masterTable.getValueAt(i, j)

1 curtida

Muito obrigado, você respondeu minha duvida! Segue abaixo como o meu código ficou:

if (this.masterTable.getRowCount() == 0) {
JOptionPane.showMessageDialog(null, “Não existem dados para exportar!”);
return;
}
JFileChooser selecionar = new JFileChooser();
File archivo;
if (selecionar.showDialog(null, “Exportar Excel”) == JFileChooser.APPROVE_OPTION) {
archivo = selecionar.getSelectedFile();
int cantFila = masterTable.getRowCount();
int cantColumna = masterTable.getColumnCount();
Workbook wb;
wb = new XSSFWorkbook();
Sheet folha = wb.createSheet(“Nova Folha”);

        try {
            for (int i = -1; i < cantFila; i++) {
                Row fila = folha.createRow(i + 1);

                for (int j = 0; j < cantColumna; j++) {
                    Cell celda = fila.createCell(j);
                    if (i == -1) {
                        celda.setCellValue(String.valueOf(masterTable.getColumnName(j)));

                    } else {
                        //   celda.setCellValue(String.valueOf(masterTable.getValueAt(i, j))); valor antigo
                        celda.setCellValue(String.valueOf(masterTable.getValueAt(i, j) == null ? "" : masterTable.getValueAt(i, j)));
                    }
                    wb.write(new FileOutputStream(archivo + ".xlsx"));
                }
            }

            JOptionPane.showMessageDialog(null, "Exportado com sucesso!");

        } catch (Exception e) {
            JOptionPane.showMessageDialog(null, "Problema ao exportar!");
        }

    } else {

    }