Este guia passo a passo descreve como conectar-se ao Microsoft Excel, recuperar dados da planilha e habilitar a edição dos dados usando o DBGrid. Você também encontrará uma lista dos erros mais comuns que podem aparecer no processo, além de como lidar com eles.
O que é coberto abaixo:
- Métodos para transferir dados entre Excel e Delphi. Como se conectar ao Excel com ALVOROÇO (ActiveX Data Objects) e Delphi.
- Criando um editor de planilha do Excel usando Delphi e ADO
- Recuperando os dados do Excel. Como referenciar uma tabela (ou intervalo) em uma pasta de trabalho do Excel.
- Uma discussão sobre os tipos de campo (coluna) do Excel
- Como modificar folhas do Excel: edite, adicione e exclua linhas.
- Transferindo dados de um aplicativo Delphi para o Excel. Como criar uma planilha e preenchê-la com dados personalizados de um banco de dados do MS Access.
Como se conectar ao Microsoft Excel
O Microsoft Excel é uma poderosa calculadora de planilha e ferramenta de análise de dados. Como as linhas e colunas de uma planilha do Excel estão intimamente relacionadas às linhas e colunas de uma tabela de banco de dados, muitos desenvolvedores acham apropriado transportar seus dados para uma pasta de trabalho do Excel para fins de análise; e recuperar dados de volta para o aplicativo posteriormente.
A abordagem mais usada para troca de dados entre seu aplicativo e o Excel é Automação. A automação fornece uma maneira de ler dados do Excel usando o Modelo de Objetos do Excel para mergulhar na planilha, extrair seus dados e exibi-los em um componente semelhante a uma grade, a saber DBGrid ou StringGrid.
A automação oferece a maior flexibilidade para localizar os dados na pasta de trabalho, além da capacidade de formatar a planilha e fazer várias configurações em tempo de execução.
Para transferir seus dados de e para o Excel sem automação, você pode usar outros métodos, como:
- Grave dados em um arquivo de texto delimitado por vírgulas e permita que o Excel analise o arquivo em células
- Transferir dados usando o DDE (Dynamic Data Exchange)
- Transfira seus dados para e de uma planilha usando o ADO
Transferência de dados usando o ADO
Como o Excel é compatível com JET OLE DB, você pode se conectar a ele com o Delphi usando o ADO (dbGO ou AdoExpress) e, em seguida, recuperar o dados da planilha em um conjunto de dados ADO emitindo uma consulta SQL (assim como você abriria um conjunto de dados em qualquer banco de dados mesa).
Dessa maneira, todos os métodos e recursos do objeto ADODataset estão disponíveis para processar os dados do Excel. Em outras palavras, o uso dos componentes do ADO permite criar um aplicativo que pode usar uma pasta de trabalho do Excel como banco de dados. Outro fato importante é que o Excel está fora de processo Servidor ActiveX. O ADO é executado em processo e economiza a sobrecarga de chamadas caras e fora de processo.
Quando você se conecta ao Excel usando o ADO, você só pode trocar dados brutos para e de uma pasta de trabalho. Uma conexão ADO não pode ser usada para formatar planilhas ou implementar fórmulas para células. No entanto, se você transferir seus dados para uma planilha pré-formatada, o formato será mantido. Depois que os dados são inseridos do seu aplicativo no Excel, você pode executar qualquer formatação condicional usando uma macro (pré-gravada) na planilha.
Você pode se conectar ao Excel usando o ADO com os dois provedores OLE DB que fazem parte do MDAC: Microsoft OLE DB Provider ou Microsoft OLE DB Provider para drivers ODBC. Vamos nos concentrar no Jet OLE DB Provider, que pode ser usado para acessar dados nas pastas de trabalho do Excel por meio de drivers ISAM (Indexed Sequential Access Method) instaláveis.
Gorjeta: Veja o Curso para iniciantes em Delphi Programação de banco de dados do ADO, se você não conhece o ADO.
O ConnectionString Magic
A propriedade ConnectionString informa ao ADO como se conectar à fonte de dados. O valor usado para ConnectionString consiste em um ou mais argumentos que o ADO usa para estabelecer a conexão.
No Delphi, o componente TADOConnection encapsula o objeto de conexão ADO; ele pode ser compartilhado por vários componentes do conjunto de dados ADO (TADOTable, TADOQuery etc.) por meio de suas propriedades de Conexão.
Para se conectar ao Excel, uma seqüência de conexão válida envolve apenas duas informações adicionais - o caminho completo para a pasta de trabalho e a versão do arquivo do Excel.
Uma cadeia de conexão legítima pode ser assim:
ConnectionString: = 'Fornecedor = Microsoft. Jato. OLEDB.4.0; Fonte de dados = C: \ MyWorkBooks \ myDataBook.xls; Propriedades estendidas = Excel 8.0; ';
Ao conectar-se a um formato de banco de dados externo suportado pelo Jet, as propriedades estendidas da conexão precisam ser definidas. No nosso caso, ao conectar-se a um "banco de dados" do Excel, as propriedades estendidas são usadas para definir a versão do arquivo do Excel.
Para uma pasta de trabalho do Excel95, esse valor é "Excel 5.0" (sem as aspas); use "Excel 8.0" para Excel 97, Excel 2000, Excel 2002 e ExcelXP.
Importante: Você deve usar o provedor Jet 4.0, pois o Jet 3.5 não oferece suporte aos drivers ISAM. Se você definir o Jet Provider para a versão 3.5, receberá o erro "Não foi possível encontrar o ISAM instalável".
Outra propriedade estendida do Jet é "HDR =". "HDR = Yes" significa que há uma linha de cabeçalho no intervalo, portanto o Jet não incluirá a primeira linha da seleção no conjunto de dados. Se "HDR = Não" for especificado, o provedor incluirá a primeira linha do intervalo (ou intervalo nomeado) no conjunto de dados.
A primeira linha de um intervalo é considerada a linha de cabeçalho por padrão ("HDR = Sim"). Portanto, se você tiver um cabeçalho de coluna, não precisará especificar esse valor. Se você não tiver títulos de coluna, precisará especificar "HDR = Não".
Agora que você está pronto, esta é a parte em que as coisas se tornam interessantes, pois agora estamos prontos para algum código. Vamos ver como criar um simples editor de planilha do Excel usando Delphi e ADO.
Nota: Você deve prosseguir mesmo se não tiver conhecimento sobre programação ADO e Jet. Como você verá, editar uma pasta de trabalho do Excel é tão simples quanto editar dados de qualquer banco de dados padrão.