Exemplo de string de conexão
Essa é uma string de conexão do provider Microsoft Jet OLE DB 4.0 para se conectar com Excel 2003, Excel 2002, Excel 2000 ou Excel 97.
Alternativa padrão
Tente esta se a acima não estiver funcionando. Alguns relatos de que o Excel 2003 precisa da seção extra OLEDB; no início da string.
"HDR=Yes;" indica que a primeira linha contém nomes de coluna, não dados. "HDR=No;" indica o oposto.
"IMEX=1;" instrui o driver a sempre ler colunas de dados "intercalados" (números, datas, strings etc.) como texto. Observe que essa opção pode afetar negativamente o acesso de gravação à planilha do Excel.
Sintaxe SQL "SELECT [Nome da Coluna Um], [Nome da Coluna Dois] FROM [Planilha Um$]". Ou seja, o nome da planilha do Excel seguido por um "$" e envolto em colchetes "[" "]".
"SELECT * FROM [Planilha1$a5:d]", comece a selecionar os dados a partir da linha 5 e até a coluna D.
Consulte a chave do registro localizada em [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\4.0\Engines\Excel], chamada REG_DWORD "TypeGuessRows". Essa é a chave para evitar que o Excel use apenas as primeiras 8 linhas para adivinhar o tipo de dados das colunas. Defina esse valor como 0 para examinar todas as linhas. Isso pode afetar o desempenho. Observe também que adicionar a opção IMEX=1 pode fazer com que o recurso IMEX seja ativado após apenas 8 linhas. Use IMEX=0 em vez disso para garantir que a chave TypeGuessRows do registro seja definida como 0 (examinar todas as linhas).
Se a pasta de trabalho do Excel estiver protegida por senha, você não poderá abri-la para acessar dados, mesmo fornecendo a senha correta na sua string de conexão. Se você tentar, receberá a seguinte mensagem de erro: "Não foi possível descriptografar o arquivo".
Uma solução alternativa para o problema "não foi possível descriptografar o arquivo"
Conexão através de diferentes linguagens
C#
Exemplo de código em C# de conexão com Excel usando Microsoft Jet OLE DB 4.0:
using System;
using System.Data.OleDb;
class DatabaseConnection {
static void Main() {
// Define a string de conexão Excel usando Microsoft Jet OLE DB 4.0
string connectionString = "OLEDB;Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\\Diretorio\\Arquivo.xls;Extended Properties=\"Excel 8.0;HDR=Yes;IMEX=1\";";
using (OleDbConnection connection = new OleDbConnection(connectionString)) {
try {
// Abre a conexão
connection.Open();
Console.WriteLine("Conexão aberta com sucesso!");
//
// INSIRA SEU CÓDIGO AQUI
//
} catch (OleDbException ex) {
// Erros específicos do OleDbException
Console.WriteLine("Erro: " + ex.Message);
} catch (Exception ex) {
// Outros erros
Console.WriteLine("Erro: " + ex.Message);
} finally {
// Fecha a conexão
if (connection != null) {
connection.Close();
Console.WriteLine("Conexão fechada.");
}
}
}
}
}
Se estiver usando .NET Core, você precisa antes instalar o pacote System.Data.OleDb com o seguinte comando:
dotnet add package System.Data.OleDb
VB.NET
Exemplo de código em VB.NET de conexão com Excel usando Microsoft Jet OLE DB 4.0:
Imports System
Imports System.Data.OleDb
Module DatabaseConnection
Sub Main()
Dim connectionString As String
' Define a string de conexão Excel usando Microsoft Jet OLE DB 4.0
connectionString = "OLEDB;Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Diretorio\Arquivo.xls;Extended Properties="Excel 8.0;HDR=Yes;IMEX=1";"
Using connection As New OleDbConnection(connectionString)
Try
' Abre a conexão
connection.Open()
Console.WriteLine("Conexão aberta com sucesso!")
'
' INSIRA SEU CÓDIGO AQUI
'
Catch ex As OleDbException
' Erros específicos do OleDbException
Console.WriteLine("Erro: " & ex.Message)
Catch ex As Exception
' Outros erros
Console.WriteLine("Erro: " & ex.Message)
Finally
' Fecha a conexão
If connection IsNot Nothing Then
connection.Close()
Console.WriteLine("Conexão fechada.")
End If
End Try
End Using
End Sub
End Module
ASP Clássico
Exemplo de código em ASP Clássico de conexão com Excel usando Microsoft Jet OLE DB 4.0:
<%
Dim conn, connectionString
' Cria a string de conexão para Excel usando Microsoft Jet OLE DB 4.0
connectionString = "OLEDB;Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Diretorio\Arquivo.xls;Extended Properties="Excel 8.0;HDR=Yes;IMEX=1";"
Set conn = Server.CreateObject("ADODB.Connection")
' Abre a conexão
On Error Resume Next
conn.Open connectionString
' Verifica se a conexão foi aberta
If conn.State = 1 Then
Response.Write "Conexão aberta com sucesso!"
'
' INSIRA SEU CÓDIGO AQUI
'
Else
If Err.Number <> 0 Then
Response.Write "Erro: " & Server.HTMLEncode(Err.Description)
Else
Response.Write "Erro: A conexão não pode ser estabelecida."
End If
End If
On Error GoTo 0
' Fecha a conexão
conn.Close
Set conn = Nothing
%>
VBScript
Exemplo de código em VBScript de conexão com Excel usando Microsoft Jet OLE DB 4.0:
Dim conn, connectionString
' Define a string de conexão Excel usando Microsoft Jet OLE DB 4.0
connectionString = "OLEDB;Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Diretorio\Arquivo.xls;Extended Properties="Excel 8.0;HDR=Yes;IMEX=1";"
Set conn = CreateObject("ADODB.Connection")
' Abre a conexão
On Error Resume Next
conn.Open connectionString
' Verifica se a conexão foi aberta
If conn.State = 1 Then
Wscript.Echo "Conexão aberta com sucesso!"
'
' INSIRA SEU CÓDIGO AQUI
'
Else
If Err.Number <> 0 Then
WScript.Echo "Erro: " & Err.Description
Else
WScript.Echo "Erro: A conexão não pode ser estabelecida."
End If
End If
On Error GoTo 0
' Fecha a conexão
conn.Close
Set conn = Nothing
Wscript.Echo "Conexão fechada."
JScript
Exemplo de código em JScript de conexão com Excel usando Microsoft Jet OLE DB 4.0:
var conn, connectionString;
// Define a string de conexão Excel usando Microsoft Jet OLE DB 4.0
connectionString = "OLEDB;Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\\Diretorio\\Arquivo.xls;Extended Properties=\"Excel 8.0;HDR=Yes;IMEX=1\";";
conn = new ActiveXObject("ADODB.Connection");
// Abre a conexão
try {
// Abre a conexão
conn.Open(connectionString);
if (conn.State === 1) {
WScript.Echo("Conexão aberta com sucesso!");
//
// INSIRA SEU CÓDIGO AQUI
//
} else {
WScript.Echo("Erro: A conexão não pode ser estabelecida.");
}
} catch (e) {
// Exibe a mensagem de erro
WScript.Echo("Erro: " + e.description);
} finally {
// Fecha a conexão
conn.Close();
conn = null;
}
C++
Exemplo de código em C++ de conexão com Excel usando Microsoft Jet OLE DB 4.0:
#include <iostream>
#include <cstdlib>
#include <string>
#include <atldbcli.h>
int main() {
// Inicializa COM
HRESULT hr = CoInitialize(NULL);
if (FAILED(hr)) {
std::cout << "Falha ao inicializar COM. Erro: " << hr << std::endl;
return EXIT_FAILURE; // Encerra se a COM não puder ser inicializada
}
// Define a string de conexão Excel usando Microsoft Jet OLE DB 4.0
std::wstring connectionString = L"OLEDB;Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\\Diretorio\\Arquivo.xls;Extended Properties=\"Excel 8.0;HDR=Yes;IMEX=1\";";
CDataSource dataSource;
CSession session;
hr = dataSource.OpenFromInitializationString(connectionString.c_str());
if (SUCCEEDED(hr)) {
// Abre uma sessão
hr = session.Open(dataSource);
if (SUCCEEDED(hr)) {
std::cout << "Conexão aberta com sucesso!" << std::endl;
//
// INSIRA SEU CÓDIGO AQUI
//
// Fecha a sessão e a conexão com o banco de dados
session.Close();
dataSource.Close();
} else {
std::cout << "Falha ao abrir sessão. Erro: " << hr << std::endl;
}
} else {
std::cout << "Falha ao abrir conexão. Erro: " << hr << std::endl;
}
// Finaliza COM
CoUninitialize();
return EXIT_SUCCESS;
}