Exportar arquivos com valor !=null para uma tabela Excel

7 respostas Resolvido
exceljava
E

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 {

    }

7 Respostas

D

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

E

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

I

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

D

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.

E

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

D
Solucao aceita

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)

E

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 {

    }
Criado 5 de outubro de 2016
Ultima resposta 5 de out. de 2016
Respostas 7
Participantes 3