[RESOLVIDO] [ATUALIZADO] Conectar excel jdbc com outro driver

2 respostas
A

Oi pessoal, alguém ja conseguiu conectar em um excel, sem utilizar o odbc, ou até mesmo utilizando, porém apontando manualmente a base do excel, sem ter que mapear o arquivo excel no DSN?

2 Respostas

A

Para cuecas e calcinhas de plantão que têm a necessidade deste código também:

  1. O driver de conexão é o base da JVM, o rt.jar, é comum que ele já esteja na lib;
  2. O código:
public static void main(String[] args) {
		try {
	            Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
	            //ainda não funciona pra xlsx, estou averiguando, não basta apenas colocar ",*.xlsx" porque depende da leitura do driver também
		    String myDB = "jdbc:odbc:Driver={Microsoft Excel Driver (*.xls)};DBQ=c:/base.xls;"
		        + "DriverID=22;READONLY=false";
		    Connection con = DriverManager.getConnection(myDB, "", "");
			
		    Statement st = con.createStatement();
		    
		    ResultSet rs = st.executeQuery( "Select id from [Plan1$]" );  
		    //se a planilha se chamar minhaPlanilha, então, o nome seria [minhaPlanilha$]
            
            //Apenas exibir todos os dados que estiverem lá
            ResultSetMetaData rsmd = rs.getMetaData();  
            int numberOfColumns = rsmd.getColumnCount();  
                  
            while (rs.next()) {  
                for (int i = 1; i <= numberOfColumns; i++) {  
                    if (i > 1)   
                        System.out.print(", ");  
                    String columnValue = rs.getString(i);  
                    System.out.print(columnValue);  
                }  
                System.out.println("");   
            }  
                          
            st.close();  
            con.close();  
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
A

Atualizando:

Para conseguir trabalhar com o excel 2007, o java trabalha com a biblioteca odbc que está instalada no computador, no meu caso, eu tinha somente a biblioteca 2000, para fazer funcionar, instale este programa da microsoft que atualiza o odbc da máquina e atuelize o código para este aqui:

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;

public class ConectaExcel {
	
	public static void main(String[] args) {
		try {
			Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
		    String myDB = "jdbc:odbc:Driver={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)};DBQ=c:/base.xlsx;"
		        + "DriverID=22;READONLY=false";
		    Connection con = DriverManager.getConnection(myDB, "", "");
			
		    Statement st = con.createStatement();
		    
		    ResultSet rs = st.executeQuery( "Select prefixo from [Plan1$]" );  
            
            ResultSetMetaData rsmd = rs.getMetaData();  
            int numberOfColumns = rsmd.getColumnCount();  
                  
            while (rs.next()) {  
                for (int i = 1; i <= numberOfColumns; i++) {  
                    if (i > 1)   
                        System.out.print(", ");  
                    String columnValue = rs.getString(i);  
                    System.out.print(columnValue);  
                }  
                System.out.println("");   
            }  
                          
            st.close();  
            con.close();  
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}	
}
Criado 30 de agosto de 2012
Ultima resposta 30 de ago. de 2012
Respostas 2
Participantes 1