Integration Services – Manipulando planilhas do Excel

Veja neste artigo como importar como texto, via Integration Services, todo o conteúdo uma planilha do Excel, independentemente do fato do arquivo conter diferentes tipos de dados em suas colunas.

Os grandes avanços da informática nas últimas décadas, sobretudo no tocante às tecnologias de redes, contribuíram sem sombra de dúvidas para a ocorrência de uma revolução no mundo dos negócios. Graças a uma série de inovações, viabilizou-se o compartilhamento de grandes volumes de dados de uma forma rápida e precisa, em cenários envolvendo companhias e agentes externos dos quais estas dependem (como fornecedores, clientes, instituições financeiras ou, mesmo, órgãos do governo). Este intercâmbio de informações é também conhecido como B2B (sigla do termo em inglês “Business-to-business”).

Para aqueles que estão ambientados com o desenvolvimento de sistemas no mundo corporativo, o termo “integração” traz quase sempre à mente a utilização de Web Services para a troca de dados. O uso destes componentes de software como serviços representa, basicamente, uma das principais maneiras para possibilitar a comunicação entre diferentes sistemas, muito embora esta não seja a única maneira.

Arquivos contendo um agrupamento de transações correspondem a outro meio de se alcançar este objetivo. Esta foi uma das iniciativas pioneiras na integração entre aplicações e, por mais que haja uma forte ênfase na adoção de Web Services, a manipulação de arquivos ainda é um mecanismo importante para o processamento de grandes quantidades de dados. Bancos, empresas de serviços e secretarias governamentais são alguns exemplos de entidades que se valem desta técnica.

A este processo em que dados são extraídos de um arquivo de origem, transformados de acordo com critérios pré-estabelecidos e, posteriormente, carregados em uma base de destino dá-se o nome de ETL (sigla do inglês “Extraction, Transformation and Load”). Embora seja comum o desenvolvimento de soluções próprias de ETL em muitas organizações, ferramentas mais flexíveis e práticas como o SQL Server Integration Services (ou simplesmente Integration Services) contam com ampla aceitação entre os profissionais de Tecnologia da Informação.

Em termos gerais, o Integration Services pode ser definido como um componente do SQL Server voltado à construção de soluções para a manipulação de dados, fazendo uso para isto de workflows. Já um workflow nada mais é do um fluxo de sequencial de atividades, sendo normalmente modelado através de uma ferramenta gráfica (ao se criar um projeto que faz uso do Integration Services, isto é feito a partir do Visual Studio).

A grande vantagem em se optar pelo Integration Services está no fato de que o mesmo não se restringe à manipulação de bases de dados SQL Server. Outros bancos de dados como Oracle podem ser utilizados, com isso acontecendo a partir do uso de um driver OLE DB ou ADO.NET. Existe também o suporte à leitura de informações provenientes de outros repositórios de dados como arquivos-texto, XML ou planilhas do Excel. Uma solução criada com o Integration Services pode inclusive contar com módulos .NET em sua implementação (empregando geralmente para isto C#), permitindo com isso até o consumo de informações providas por um Web Service.

No caso específico de arquivos gerados em Excel, a ferramenta Integration Services possibilita que as diferentes planilhas existentes sejam tratadas como se fossem tabelas de um banco de dados relacional. Isto acontece por meio do driver Microsoft Jet Database Engine, o qual serve de base para manipular informações de documentos gerados a partir de outros produtos da Microsoft (como o Access). Esta abordagem apresenta tanto vantagens, quanto desvantagens.

Um dos benefícios seria a facilidade de se portar o conteúdo de uma planilha para uma tabela equivalente numa base SQL Server. Já um provável problema seria o fato de alguma coluna em que se esperava um determinado tipo de dado (valor numérico ou data) conter, ao invés disto, uma informação inválida (texto normal, por exemplo): neste último caso, o Integration Services assumiria o valor nulo para a coluna/campo em questão, característica esta que pode resultar em um erro lógico quando a ausência de um valor for uma situação válida (ao se acessar a tabela de destino seria impossível determinar se um dado inválido constava ou não em um campo da mesma).

A possibilidade de se implementar um processo de validação com uma maior sofisticação também estaria comprometida, já que a substituição de valores incorretos por nulo impediria uma análise mais criteriosa na base-alvo.

O Microsoft Jet Database Engine disponibiliza uma alternativa para contornar o problema da substituição de dados inválidos por nulo: trata-se do parâmetro IMEX. Quando esse item estiver definido com o valor “1” em uma string de conexão para acesso a um arquivo Excel, as diferentes informações presentes na mesma serão encaradas como puramente texto, descartando assim se determinada coluna foi preenchida com um valor monetário, uma data ou ainda, um número inteiro.

A Listagem 1 apresenta um exemplo simples de como configurar uma string de conexão para acesso a um arquivo Excel (C:\Testes\ArquivoOrigem.xls). Nota-se que o parâmetro IMEX foi preenchido com “1”, sendo possível ainda constatar que o mesmo é declarado como parte do valor que é associado ao elemento “Extended Properties”.

Listagem 1: String de conexão para acesso ao Excel empregando o parâmetro IMEX

Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Testes\ArquivoOrigem.xls;Extended Properties="EXCEL 8.0;HDR=NO;IMEX=1";

Conforme indicado na Figura 1, este modelo de string pode ser atribuído sem maiores problemas a uma conexão de acesso ao Excel dentro de um projeto do Integration Services.


Figura 1: Configurando uma string de conexão para Excel no Integration Services

Este artigo demonstrou um caso bastante específico de utilização do Integration Services, envolvendo para isto a leitura de informações disponibilizadas a partir de arquivos Excel. Espero isto possa auxiliá-lo em suas atividades, sobretudo na implementação de mecanismos mais abrangentes para a validação de dados de planilhas. Até uma próxima oportunidade!

Artigos relacionados