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?
[RESOLVIDO] [ATUALIZADO] Conectar excel jdbc com outro driver
A
2 Respostas
A
Para cuecas e calcinhas de plantão que têm a necessidade deste código também:
- O driver de conexão é o base da JVM, o rt.jar, é comum que ele já esteja na lib;
- 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
Alura Git Flow: entenda o que é, como e quando utilizar Entenda o que é Git Flow, como funciona seu fluxo com branches como Master, Develop, Feature, Release e Hotfix, além de vantagens e desvantagens.
Casa do Codigo Desmistificando WebAssembly: Alta performance,... Por Raphael Amorim — Casa do Codigo