JTable e Excel

Como envio uma tabela ja criada para o excel, por exemplo: minha JTable esta conectada para receber informação do banco de dados, e quero enviar minha JTable para o excel, poderiam me ajudar por favor?

Estou com essa mesma duvida

conseguiu resolver o seu???

não man e vc ?

tambem nao

Ou você salva os dados em um formato legível ao excel, como csv, por exemplo, ou utiliza um biblioteca como o Apache POI que permite criar arquivos com a extensão .xls ou .xlsx

então cara estou utilizando a biblioteca gera arquivos excel. No meu caso
Ele gera o arquivo excel, mas ele pega o ultimo registro no banco e substitui dos outros elementos.Exemplo:

Tenho um relatorio com 4 registros, ele pega o ultimo registro e substitui nos outros arquivos existentes 4 registros

Muito provavelmente a tua implementação possua algum erro na lógica que acaba replicando o último registro.
Tem como mostrar o código que funciona incorretamente?

Minha classe Excel onde pego o objeto e coloco em uma estrutura de repetição , pra cada arquivo no excel que quero gerar criei um método expExcelFornecedor, expExcel

public class Excel {
   public void expExcel(String nomeArquivo) {

HSSFWorkbook workbook = new HSSFWorkbook();
HSSFSheet firstSheet = workbook.createSheet(“RelatoriosClientes.xlsx”);
firstSheet.setColumnWidth((short) (0), (short) (10 * 700));
FileOutputStream fos = null;

try {
fos = new FileOutputStream(new File(“RelatoriosClientes.xlsx”));

// Este trecho obtem uma lista de objetos do tipo CD

// do banco de dados através de um DAO e itera sobre a lista

// criando linhas e colunas em um arquivo Excel com o conteúdo

// dos objetos.

ClientesDAO dao = new ClientesDAO();
List lista = new ArrayList();
lista = dao.mostrarClientes();

//List lista = dao.mostrarClientes();

int i = 0;

for (Clientes1 cli : lista) {
HSSFRow row = firstSheet.createRow(i);

row.createCell(0).setCellValue(cli.getCli_codigo());
row.createCell(1).setCellValue(cli.getCli_nome());
row.createCell(2).setCellValue(cli.getCli_email());
row.createCell(3).setCellValue(cli.getCli_datanasc());
row.createCell(4).setCellValue(cli.getCli_cep());
row.createCell(5).setCellValue(cli.getCli_rua());
row.createCell(6).setCellValue(cli.getCli_bairro());
row.createCell(7).setCellValue(cli.getCli_estado());
row.createCell(8).setCellValue(cli.getCli_cpf());
row.createCell(9).setCellValue(cli.getCli_rg());
row.createCell(10).setCellValue(cli.getCli_telefone());
row.createCell(11).setCellValue(cli.getCli_celular());
row.createCell(12).setCellValue(cli.getCli_datacad());
row.createCell(13).setCellValue(cli.getCli_numero());
row.createCell(14).setCellValue(cli.getCli_uf());

i++;

} // fim do for

workbook.write(fos);
Desktop.getDesktop().open(new File(“RelatoriosClientes.xlsx”));

} catch (Exception e) {
//e.printStackTrace();
System.out.println(“Erro ao exportar arquivo”+e);
} finally {
try {
fos.flush();
fos.close();
} catch (Exception e) {
e.printStackTrace();
}
}
} // fim do metodo exp

public void expExcelFornecedor(String nomeArquivo) {

HSSFWorkbook workbook = new HSSFWorkbook();
HSSFSheet firstSheet = workbook.createSheet(“RelatoriosFornecedor.xlsx”);
firstSheet.setColumnWidth((short) (0), (short) (10 * 700));
FileOutputStream fos = null;

try {
fos = new FileOutputStream(new File(“RelatoriosFornecedor.xlsx”));

// Este trecho obtem uma lista de objetos do tipo CD

// do banco de dados através de um DAO e itera sobre a lista

// criando linhas e colunas em um arquivo Excel com o conteúdo

// dos objetos.

FornecedorDAO dao = new FornecedorDAO();
List lista = new ArrayList();
lista = dao.mostrarfornecedorExcel();

//List lista = dao.mostrarClientes();

int i = 0;

for (Fornecedor1 fornecedor : lista) {
HSSFRow row = firstSheet.createRow(i++);
int cellnum = 0;
row.createCell(cellnum++).setCellValue(fornecedor.getFor_id());
row.createCell(cellnum++).setCellValue(fornecedor.getFor_fantasia());
row.createCell(cellnum++).setCellValue(fornecedor.getFor_razaosocial());
row.createCell(cellnum++).setCellValue(fornecedor.getFor_cnpj());
row.createCell(cellnum++).setCellValue(fornecedor.getFor_complemento());
row.createCell(cellnum++).setCellValue(fornecedor.getFor_bairro());
row.createCell(cellnum++).setCellValue(fornecedor.getFor_cidade());
row.createCell(cellnum++).setCellValue(fornecedor.getFor_email());
row.createCell(cellnum++).setCellValue(fornecedor.getFor_cep());
row.createCell(cellnum++).setCellValue(fornecedor.getFor_rua());
row.createCell(cellnum++).setCellValue(fornecedor.getFor_numero());
row.createCell(cellnum++).setCellValue(fornecedor.getFor_telefone());
row.createCell(cellnum++).setCellValue(fornecedor.getFor_telefone2());
row.createCell(cellnum++).setCellValue(fornecedor.getFor_uf());

} // fim do for

workbook.write(fos);
Desktop.getDesktop().open(new File(“RelatoriosFornecedor.xlsx”));

} catch (Exception e) {
//e.printStackTrace();
System.out.println(“Erro ao exportar arquivo”+e);
} finally {
try {
fos.flush();
fos.close();
} catch (Exception e) {
e.printStackTrace();
}
}
} // fim do metodo exp

Fim da classe Excel

Classe FornecedorDAO dao = new FornecedorDAO();

metodo mostrarfornecedorExcel();

Classe FornecedorDAO metodo mostrarFornecedorExcel

    public List<Fornecedor1> mostrarfornecedorExcel(){
    try {
        con = Conecta.conexao();
    } catch (ClassNotFoundException ex) {
        Logger.getLogger(ProdutoDAO.class.getName()).log(Level.SEVERE, null, ex);
    }

    try {
       String sql="Select * from tb_fornecedor ";
        Statement statement = con.createStatement();     

ResultSet rs = statement.executeQuery(sql);
List lista = new ArrayList();
Fornecedor1 forne= new Fornecedor1();
while(rs.next()){
forne.setFor_id((rs.getInt(“for_id”)));
forne.setFor_fantasia(rs.getString(“for_fantasia”));
forne.setFor_razaosocial(rs.getString(“for_razaosocial”));
forne.setFor_cnpj(rs.getString(“for_cnpj”));
forne.setFor_complemento(rs.getString(“for_complemento”));
forne.setFor_bairro(rs.getString(“for_bairro”));
forne.setFor_cidade(rs.getString(“for_cidade”));
forne.setFor_email(rs.getString(“for_email”));
forne.setFor_cep(rs.getString(“for_cep”));
forne.setFor_rua(rs.getString(“for_rua”));
forne.setFor_numero(rs.getInt(“for_numero”));
forne.setFor_telefone(rs.getString(“for_telefone”));
forne.setFor_telefone2(rs.getString(“for_telefone2”));
forne.setFor_uf(rs.getString(“for_uf”));
lista.add(forne);

        }
        
        return lista;
    } catch (Exception e) {
        JOptionPane.showConfirmDialog(null,e);
        return null;
    }

Visualização do arquivo excel gerado

No caso ele gera 3 registros gravados no banco de dados, o ultimo registro é claro, ele pega o ultimo registro e substitui nos outros3 registros

Você sabe que uma collection, seja ela uma List ou um Set não armazenam objetos, apenas as referências aos mesmos?
Sendo assim, quando você tem estas linhas:
Fornecedor1 forne= new Fornecedor1(); while(rs.next()){
E esta lista.add(forne);, está inserindo a referência ao mesmo objeto da classe Fornecedor1, em todas as posições da tua lista.
Apenas inverta e coloque assim:
while(rs.next()){ Fornecedor1 forne= new Fornecedor1();
O resto mantenha como está (exceto se quiser deixar teu código de acordo com a convenção de nomenclatura, que determina a nomenclatura de classes, atributos e métodos para a programação java, aí siga o que está aqui)

Cara funcionou o erro era isso mesmo mas man uma outra duvida, ele gera o arquivo excel com todos os registros, mas como faço para colocar nome nas colunas do excel ?

Este link pode ajudar