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 ?