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

Postagens mais visitadas deste blog

Usando o Controle MonthView com ADO e MSHFlexGrid

Busca SQL dentro do Excel

Microsoft ACE OLEDB 12.0 connection strings