Busca SQL dentro do EXCEL
1. O Excel possui o
"Assistente de Conexão de Dados" que permite importar ou vincular de
outra fonte de dados ou até mesmo dentro do mesmo arquivo Excel.
2. Como parte do Microsoft
Office (e dos sistemas operacionais), há dois provedores de interesse: o antigo
"Microsoft.Jet.OLEDB" e o mais recente
"Microsoft.ACE.OLEDB". Procure-os ao configurar uma conexão (como com
o Assistente para Conexão de Dados).
3. Depois de conectado a
uma pasta de trabalho do Excel, uma planilha ou intervalo é equivalente a uma
tabela ou exibição. O nome da tabela de uma planilha é o nome da planilha com
um cifrão ("$") anexado a ela e entre colchetes ("[" and
"]"); de um intervalo, é simplesmente o nome do intervalo. Para
especificar um intervalo de células sem nome como sua fonte de registro, anexe
a notação de linha / coluna padrão do Excel ao final do nome da planilha entre
colchetes.
4. O SQL nativo será (mais
ou menos) o SQL do Microsoft Access. (No passado, era chamado de JET SQL; no
entanto, o Access SQL evoluiu e acredito que o JET é uma tecnologia antiga e obsoleta.)
5. Exemplo, lendo uma
planilha: SELECT * FROM [Sheet1 $]
6. Exemplo, lendo um
intervalo: SELECT * FROM MyRange
7. Exemplo, leitura de um
intervalo de células sem nome: SELECT * FROM [Sheet1 $ A1: B10]
8. Existem muitos livros e
sites da web disponíveis para ajudá-lo a trabalhar com os detalhes.
=== Notas adicionais ===
Por padrão, presume-se que
a primeira linha de sua fonte de dados do Excel contém títulos de coluna que
podem ser usados como nomes de campo. Se este não for o caso, você deve
desativar essa configuração ou sua primeira linha de dados
"desaparecerá" para ser usada como nomes de campo. Isso é feito
adicionando a configuração opcional HDR = às Propriedades estendidas da string
de conexão. O padrão, que não precisa ser especificado, é HDR = Sim. Se você
não tiver títulos de coluna, será necessário especificar HDR = Não; o provedor
nomeia seus campos F1, F2, etc.
Um cuidado sobre a
especificação de planilhas: O provedor assume que sua tabela de dados começa
com a célula mais superior, mais à esquerda e não em branco na planilha
especificada. Em outras palavras, sua tabela de dados pode começar na Linha 3,
Coluna C sem problemas. No entanto, você não pode, por exemplo, digitar um
título de folha de trabalho acima e à esquerda dos dados na célula A1.
Um
cuidado sobre a especificação de intervalos: Quando você especifica uma
planilha como sua fonte de registros, o provedor adiciona novos registros
abaixo dos registros existentes na planilha conforme o espaço permite. Quando
você especifica um intervalo (nomeado ou não nomeado), o Jet também adiciona
novos registros abaixo dos registros existentes no intervalo, conforme o espaço
permitir. No entanto, se você repetir a consulta no intervalo original, o
conjunto de registros resultante não incluirá os registros recém-adicionados
fora do intervalo.
Tipos de dados (vale a pena tentar) para CREATE TABLE: Short, Long, Single, Double, Currency,
DateTime, Bit, Byte, GUID, BigBinary, LongBinary, VarBinary, LongText, VarChar,
Decimal.
Conectando
ao Excel "antigos" (arquivos com a extensão xls): Provider=Microsoft.Jet.OLEDB.4.0;Data
Source=C:\MyFolder\MyWorkbook.xls;Extended Properties=Excel 8.0;. Use o
tipo de banco de dados de origem do Excel 5.0 para pastas de trabalho do
Microsoft Excel 5.0 e 7.0 (95) e use o tipo de banco de dados de origem do
Excel 8.0 para pastas de trabalho do Microsoft Excel 8.0 (97), 9.0 (2000) e
10.0 (2002).
Conectando-se
ao Excel "mais recente" (arquivos com a extensão xlsx): Provider=Microsoft.ACE.OLEDB.12.0;Data
Source=Excel2007file.xlsx;Extended Properties="Excel 12.0
Xml;HDR=YES;"
Tratamento
de dados como texto: a configuração IMEX trata todos os dados como texto. Provider=Microsoft.ACE.OLEDB.12.0;Data
Source=Excel2007file.xlsx;Extended Properties="Excel 12.0
Xml;HDR=YES;IMEX=1";
Comentários
Postar um comentário