Pessoal,
Desenvolvi uma aplicação aqui utilizando o excel e estou desejando carregar alguns dados dessa planinha no meu programa em java, porém não estou conseguindo encontrar a planilha, gerando uma exceção. Espero que o código possa ajudar a esclarecer minha dúvida.
ps: Estou utilizando um jFileChooser para selecionar o arquivo no drive.
Segue class de abertura de conexão com o excel:
import java.sql.*;
public class ConexaoExcel{
static public Connection conexao = null;
private String caminho = "";
public ConexaoExcel(){
if( conexao == null )
abreConexao();
}
public void setCaminho(String caminho){
this.caminho = caminho;
}
public void abreConexao(){
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
conexao = DriverManager.getConnection("jdbc:odbc:Driver={Microsoft Excel Driver (*.xls)};DBQ="+caminho+"");
} catch(ClassNotFoundException e){
System.out.println("Não achei a classe: " + e.getMessage());
} catch(Exception e){
System.err.println("Erro no acesso a planilha!");
}
}
public void fechaConexao(){
try{
conexao.close();
} catch(SQLException e){
System.err.println("Erro no fechamento da conexão...");
}
}
}
Segue abaixo a classe em que crio o objeto e realizo as instruções em SQL:
chooser.setCurrentDirectory(new File("."));
chooser.setFileFilter(new javax.swing.filechooser.FileFilter() {
public boolean accept(File f) {
return f.getName().toLowerCase().endsWith(".xls")
|| f.isDirectory();
}
public String getDescription() {
return "XLS Documents";
}
});
ConexaoExcel objetoCaminho = new ConexaoExcel();
objetoCaminho.setCaminho(chooser.getSelectedFile().getAbsolutePath());
try{
ConexaoExcel objetoExcel = new ConexaoExcel();
Statement st = objetoExcel.conexao.createStatement();
PreparedStatement ps = objetoExcel.prepareStatement("SELECT * FROM [Área$]");
ResultSet rs = ps.executeQuery();
DefaultTableModel modelo1 = (DefaultTableModel)tabelaPendenciasArea.getModel();
int i = 0;
while (modelo1.getRowCount() > 0){
modelo1.removeRow(i);
}
while(rs.next()){
String status = rs.getString(17);
System.out.println(status);
if(status.equals("Pendente")){
String id = rs.getString(1);
String descricao = rs.getString(2);
String[] novaLinha = new String[2];
novaLinha[0] = id;
novaLinha[1] = descricao;
modelo1.addRow( novaLinha );
}
}
} catch(Exception e){
System.out.println(e);
}
e Segue a exceção que está ocorrendo:
[color=red]"Erro no acesso a planilha![/color]