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?
JTable e Excel
12 Respostas
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) {
<a href="//e.printStackTrace">//e.printStackTrace</a>();
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) {
<a href="//e.printStackTrace">//e.printStackTrace</a>();
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;
}
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
