Excel

Strings de conexão para Excel

Microsoft ACE OLEDB 12.0

Arquivos Excel 97-2003 Xls com ACE OLEDB 12.0

Você pode usar esta string de conexão para usar o driver OLEDB do Office 2007 (ACE 12.0) para se conectar a workbooks Excel 97-2003 mais antigos.

Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Diretorio\Arquivo.xls;Extended Properties="Excel 8.0;HDR=YES";

"HDR=Yes;" indica que a primeira linha contém nomes de colunas, não dados. "HDR=No;" indica o oposto.

Arquivos Xlsb

Conecte-se a arquivos do Excel 2007 (e posteriores) com a extensão de arquivo Xlsb. Esse é o formato Office Open XML salvo em formato binário. Ou seja, a estrutura é semelhante, mas não é salva em um formato de texto legível como os arquivos Xlsx e pode melhorar o desempenho se o arquivo contiver muitos dados.

Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Diretorio\Arquivo.xlsb;Extended Properties="Excel 12.0;HDR=YES";

Você também pode usar essa string de conexão para se conectar a workbooks mais antigos de 97-2003.

"HDR=Yes;" indica que a primeira linha contém nomes de colunas, não dados. "HDR=No;" indica o oposto.

Arquivos Xlsm

Conecte-se a arquivos Excel 2007 (e posteriores) com a extensão de arquivo Xlsm. Esse é o formato Office Open XML com macros ativadas.

Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Diretorio\Arquivo.xlsm;Extended Properties="Excel 12.0 Macro;HDR=YES";

"HDR=Yes;" indica que a primeira linha contém nomes de colunas, não dados. "HDR=No;" indica o oposto.

Arquivos Xlsx

Conecte-se a arquivos do Excel 2007 (e posteriores) com a extensão de arquivo Xlsx. Esse é o formato Office Open XML com macros desativadas.

Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Diretorio\Arquivo.xlsx;Extended Properties=Arquivo.0 Xml;HDR=YES";

"HDR=Yes;" indica que a primeira linha contém nomes de colunas, não dados. "HDR=No;" indica o oposto.

Tratando dados como texto

Use esta quando quiser tratar todos os dados no arquivo como texto, sobrescrevendo o tipo de coluna "General" do Excel para adivinhar que tipo de dado está na coluna.

Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Diretorio\Arquivo.xlsx;Extended Properties=Arquivo.0 Xml;HDR=YES;IMEX=1";

Se você deseja ler os cabeçalhos das colunas no conjunto de resultados (usando HDR=NO mesmo havendo um cabeçalho) e os dados da coluna são numéricos, use IMEX=1 para evitar falhas.

Sempre usar IMEX=1 é uma maneira mais segura de recuperar dados para colunas de dados mistos. Considere o cenário em que um arquivo Excel pode funcionar bem porque os dados desse arquivo fazem o driver adivinhar um tipo de dado enquanto outro arquivo, contendo outros dados, faz o driver adivinhar outro tipo de dado. Isso pode causar falha em sua aplicação.

Microsoft Jet OLE DB 4.0

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.

OLEDB;Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Diretorio\Arquivo.xls;Extended Properties="Excel 8.0;HDR=Yes;IMEX=1";

"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"

Padrão (Excel)

Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Diretorio\Arquivo.xls;Extended Properties="Excel 8.0;HDR=Yes;IMEX=1";

Como usar JET em ambientes de 64 bits

.NET xlReader for Microsoft Excel

Arquivo Excel com linha de cabeçalho

Data Source =C:\Diretorio\Arquivo.xlsx;HDR=yes;Format=xlsx;

Arquivo Excel sem linha de cabeçalho

Data Source =C:\Diretorio\Arquivo.xlsx;HDR=no;Format=xlsx;

CData ADO.NET Provider for Excel

Cache de dados

Excel File=C:\Diretorio\Arquivo.xlsx;Cache Location=C:\Diretorio\Arquivo.db;Auto Cache=true;Offline=false;

Para recuperar dados do cache, adicione "#Cache" ao nome da tabela. Por exemplo, para consultar dados em cache da tabela "Sheet", execute "SELECT * FROM [Sheet#Cache]".

Cache de dados e metadados

Excel File=C:\Diretorio\Arquivo.xlsx;Cache Location=C:\Diretorio\Arquivo.db;Auto Cache=true;Offline=false;Cache Metadata=true;

Células vazias sempre NULL

Excel File=C:\Diretorio\Arquivo.xlsx;Empty Text Mode=EmptyAsNull;

Não usar fórmulas, apenas valores

Não trate valores que começam com igual (=) como fórmulas durante inserções e atualizações.

Excel File=C:\Diretorio\Arquivo.xlsx;Allow Formula=false;

Sem cabeçalhos na planilha Excel

Excel File=C:\Diretorio\Arquivo.xlsx;Header=False;

Nomes de colunas pseudo (A,B,C) são usados em vez disso.

Somente dados em cache / Modo offline

Excel File=C:\Diretorio\Arquivo.xlsx;Offline=true;Query Passthrough=true;Cache Location=C:\Diretorio\Arquivo.db;

As declarações SELECT sempre recuperarão dados do cache. As declarações DELETE/UPDATE/INSERT não são permitidas e lançarão uma exceção.

Usando um Provedor de Cache Externo

Os drivers RSSBus têm a capacidade de armazenar dados em cache em um banco de dados separado, como SQL Server ou MySQL, em vez de em um arquivo local usando a seguinte sintaxe:

Cache Provider=Provider.Namespace;Cache Connection='Connection String to Cache Database';

Acima é apenas um exemplo para mostrar como funciona. Pode ser usado tanto com "Auto Cache" quanto com "Dados em Cache Apenas / Modo Offline".

Microsoft Excel 2007 ODBC Driver

Padrão

Driver={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)};DBQ=C:\Diretorio\Arquivo.xlsx;

Padrão (para versões 97 - 2003)

Driver={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)};DBQ=C:\Diretorio\Arquivo.xls;

Microsoft Excel ODBC Driver

Padrão

Driver={Microsoft Excel Driver (*.xls)};DriverId=790;Dbq=C:\Diretorio\Arquivo.xls;DefaultDir=c:\mypath;

Sintaxe SQL "SELECT [Nome da Coluna Um], [Nome da Coluna Dois] FROM [Folha Um$]". Ou seja, nome da planilha do excel seguido de um "$" e envolvido em colchetes "[" "]".

Especificar Somente Leitura

[Microsoft][ODBC Excel Driver] A operação deve usar uma consulta atualizável. Use esta string de conexão para evitar o erro.

Driver={Microsoft Excel Driver (*.xls)};Dbq=C:\Diretorio\Arquivo.xls;ReadOnly=0;

ReadOnly = 0 especifica que a conexão pode ser atualizada.