ExcelADO demonstra como utilizar ADO para ler e escrever dados em livros do Excel

Traduções de Artigos Traduções de Artigos
Artigo: 278973 - Ver produtos para os quais este artigo se aplica.
Expandir tudo | Reduzir tudo

Sumário

O exemplo ExcelADO.exe ilustra como pode utilizar ADO (ActiveX Data Objects) com o fornecedor de OLE DB 4.0 do Microsoft Jet para ler e escrever dados em livros do Microsoft Excel.

Este artigo poderá conter hiperligações para conteúdo em inglês (ainda não traduzido).

Mais Informação

O ficheiro que se segue está disponível para transferência a partir do centro de transferências da Microsoft:
ExcelADO.exe
Data de edição: 12 de Dezembro de 2000

Para obter informações adicionais sobre como transferir ficheiros de suporte da Microsoft, clique no número de artigo que se segue para visualizar o artigo na base de dados de conhecimento da Microsoft (KB, Microsoft Knowledge Base):
119591 Como obter ficheiros de suporte da Microsoft a partir de serviços online
A Microsoft procedeu à detecção de vírus neste ficheiro. A Microsoft utilizou o software de detecção de vírus mais actual, disponível na data de publicação do ficheiro. O ficheiro está armazenado em servidores com segurança melhorada, que ajudam a impedir quaisquer alterações não autorizadas ao ficheiro.

Porquê utilizar ADO?

A utilização de ADO para transferir dados ou para obter dados de um livro do Excel dá ao programador várias vantagens em relação a automatização do Excel:
  • Desempenho. O Microsoft Excel é um servidor de ActiveX independente (out-of-process). O ADO é executado de forma integrada (in-process), e evita a sobrecarga de chamadas a processos independentes.
  • Escalabilidade. Em aplicações Web, nem sempre é aconselhável automatizar o Microsoft Excel. O ADO proporciona uma solução escalável para o processamento dos dados de um livro.
O ADO pode ser utilizado estritamente para transferir dados não processados para um livro. Não pode utilizar ADO para aplicar formatação ou fórmulas a células. No entanto, pode transferir dados para um livro pré-formatado, sendo esta formatação mantida. Se necessitar de formatação "condicional" após a inserção dos dados, pode aplicá-la, no livro, com automatização ou com uma macro.

Especificidades do fornecedor de OLE DB do Jet para livros do Excel

O motor de bases de dados Microsoft Jet pode ser utilizado para aceder a dados noutros formatos de ficheiro de base de dados, como livros do Excel, através de controladores de método de acesso sequencial indexado (ISAM, Indexed Sequential Access Method) instaláveis. Para abrir formatos externos suportados pelo fornecedor de OLE DB do Microsoft Jet 4.0, especifique o tipo de base de dados nas propriedades expandidas da ligação. O fornecedor de OLE DB do Jet suporta os seguintes tipos de bases de dados de livros do Microsoft Excel:
  • Excel 3.0
  • Excel 4.0
  • Excel 5.0
  • Excel 8.0
NOTA: utilize o tipo de base de dados de origem Excel 5.0 para livros do Microsoft Excel 5.0 e 7.0 (95) e utilize o tipo de base de dados de origem Excel 8.0 para livros do Microsoft Excel 8.0 (97) e 9.0 (2000). O exemplo ExcelADO.exe utiliza livros do Excel com o formato do Excel 97 e do Excel 2000.

Os exemplos que se seguem demonstram uma ligação ADO a um livro do Excel 97 (ou 2000):
Dim oConn As New ADODB.Connection
With oConn
    .Provider = "Microsoft.Jet.OLEDB.4.0"
    .Properties("Extended Properties").Value = "Excel 8.0"
    .Open "C:\Book1.xls"
    '....
    .Close
End With
				
      - ou -
Dim oConn As New ADODB.Connection
oConn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
           "Data Source=C:\Book1.xls;" & _
           "Extended Properties=""Excel 8.0;"""
oConn.Close
				
Convenções de nomenclatura de tabelas

Existem várias formas de referenciar uma tabela (ou conjunto) num livro do Excel:
  • Utilize o nome da folha seguido de um cifrão (por exemplo, [Folha1$] ou [Minha Folha$]). Uma tabela de um livro que seja referenciada desta forma é constituída por toda a parte utilizada da folha.
    oRS.Open "Select * from [Sheet1$]", oConn, adOpenStatic
    					
  • Utilize um conjunto com um nome definido (por exemplo, [Tabela1]).
    oRS.Open "Select * from Table1", oConn, adOpenStatic
    					
  • Utilize um conjunto com um endereço específico (por exemplo, [Folha1$A1:B10]).
    oRS.Open "Select * from [Sheet1$A1:B10]", oConn, adOpenStatic
    					
Cabeçalhos de tabelas

Em livros do Excel, a primeira linha de um conjunto é considerada a linha de cabeçalho (ou nomes dos campos) por predefinição. Se o primeiro conjunto não contiver cabeçalhos, pode especificar HDR=NO nas propriedades expandidas da cadeia de ligação. Se a primeira linha não contiver cabeçalhos, o fornecedor de OLE DB atribuirá automaticamente nomes aos campos (em que F1 representaria o primeiro campo, F2 o segundo, etc.).

Tipos de dados

Ao contrário de uma base de dados tradicional, não existe uma forma directa de especificar os tipos de dados das colunas de tabelas do Excel. Em vez disso, o fornecedor de OLE DB verifica um número limitado de linhas de uma coluna para "adivinhar" o tipo de dados do campo. O número de linhas a verificar é, por predefinição, oito (8); pode alterar o número de linhas a verificar especificando um valor entre um (1) e dezasseis (16) para a definição MAXSCANROWS nas propriedades expandidas da cadeia de ligação.

Ficheiros incluídos no exemplo

O ficheiro ExcelADO.exe contém um projecto executável padrão do Visual Basic, Active Server Pages (ASP), livros do Excel 97 e do Excel 2000 que funcionam como modelos e uma base de dados do Microsoft Access 2000. Os ficheiros incluídos são os seguintes:

Ficheiros de projecto executável padrão do Visual Basic
  • ExcelADO.vbp
  • Form1.frm
  • Form1.frx
Active Server Pages
  • EmpData.asp
  • Orders.asp
Livros do Microsoft Excel
  • OrdersTemplate.xls
  • EmpDataTemplate.xls
  • ProductsTemplate.xls
  • SourceData.xls
Base de dados do Microsoft Access
  • Data.mdb

Como utilizar o exemplo

Extraia o conteúdo do ficheiro .exe para uma pasta.

Para utilizar o projecto do Visual Basic:
  1. No Visual Basic, abra o ficheiro ExcelADO.vbp.
  2. No menu Project, seleccione References e defina referências para Microsoft ADO Ext. for DDL and Security e Microsoft ActiveX Data Objects Library. Este código de exemplo funciona com o ADO 2.5 e o ADO 2.6, pelo que deve seleccionar a versão adequada ao computador.
  3. Prima a tecla F5 para executar o programa. É apresentado um formulário para a demonstração.
  4. Clique em Sample 1. Este exemplo cria uma cópia de OrdersTemplate.xls. Em seguida, utiliza ADO para ligar ao livro e abre um Recordset numa tabela que consiste de um conjunto definido no livro. O nome do conjunto é Orders_Table. Utiliza métodos AddNew/Update de ADO para adicionar registos (ou linhas) ao conjunto definido no livro. Após a conclusão da adição de linhas, a Connection de ADO é fechada e o livro é apresentado no Microsoft Excel. Siga estes passos:
    1. No menu Inserir do Excel, seleccione Nome e seleccione Definir.
    2. Na lista de nomes definidos, seleccione Orders_Table. Note que o nome definido cresceu para incluir os registos recém-adicionados. O nome definido é utilizado, em conjunto com a função DESLOCAMENTO do Excel, para calcular um total relativamente aos dados adicionados à folha.
    3. Saia do Microsoft Excel e volte à aplicação do Visual Basic.
  5. Clique em Sample 2. Este exemplo cria uma cópia de EmpDataTemplate.xls. Utiliza ADO para ligar ao livro e utiliza o método Execute da ligação ADO para inserir dados (INSERT INTO no SQL) no livro. São adicionados dados a conjuntos (ou tabelas) definidos no livro. Quando os dados forem transferidos, a ligação é fechada e o livro resultante é apresentado no Excel. Depois de examinar o livro, saia do Microsoft Excel e volte à aplicação do Visual Basic.

  6. Clique em Sample 3. Este exemplo cria uma cópia de ProductsTemplate.xls. Utiliza a biblioteca de objectos Microsoft ADO Extensions 2.1 for DDL and Security (ADOX) para adicionar uma nova tabela (ou uma nova folha) ao livro. É, então, obtido um Recordset de ADO para a nova tabela e são adicionados dados utilizando os métodos AddNew/Update. Após a conclusão da adição de linhas, a Connection de ADO é fechada e o livro é apresentado no Excel. O livro contém código de macro do Visual Basic for Applications (VBA) no evento Open do livro. A macro é executada quando o livro é aberto; se a nova folha "Products" existir no livro, o código da macro formata a folha e, em seguida, é eliminado. Esta técnica proporciona, ao programador da Web, uma forma de retirar código de formatação do servidor da Web e colocá-lo no cliente. Uma aplicação Web poderia transmitir em sequência um livro formatado com dados para o cliente e permitir código de macro que efectuaria qualquer formatação "condicional" que poderia não ser possível num único modelo a executar no cliente.

    NOTA: para examinar o código de macro, visualize o módulo EsteLivro no VBAProject de ProductsTemplate.xls.

  7. Clique em Sample 4. Este exemplo produz os mesmos resultados que Sample 1, mas a técnica utilizada para transferir os dados é ligeiramente diferente. Em Sample 1, os registos (ou linhas) são adicionados à folha um a um. O Sample 4 adiciona todos os registos de uma só vez anexando a tabela do Excel a uma base de dados do Access e executando uma consulta de acrescentar (ou INSERT INTO..SELECT FROM) para acrescentar registos de uma tabela da tabela do Access à tabela do Excel. Após a conclusão da transferência, a tabela do Excel é desanexada da base de dados do Access e o livro resultante é apresentado no Excel. Saia do Excel e volte à aplicação do Visual Basic.

  8. O último exemplo ilustra como pode ler dados de um livro do Excel. Seleccione uma tabela na lista pendente e clique em Sample 5. A janela Immediate apresenta o conteúdo da tabela seleccionada. Se seleccionar uma folha completa ("Folha1$" ou "Folha2$") para a tabela, a janela Immediate apresentará o conteúdo do conjunto utilizado nessa folha. Note que o conjunto utilizado não começa necessariamente na linha 1, coluna 1 da folha. O conjunto utilizado começa na célula mais acima e à esquerda que contém dados.

    Se seleccionar um conjunto de endereços específico ou um conjunto definido, a janela Immediate apresentará apenas o conteúdo desse conjunto da folha.
Para utilizar as Active Server Pages (ASP):
  1. Crie uma nova pasta denominada ExcelADO no directório inicial do servidor da Web. Note que o caminho predefinido do directório inicial é C:\InetPut\WWWRoot.
  2. Copie os seguintes ficheiros para a pasta criada no passo anterior:
    • EmpData.asp
    • Orders.asp
    • Data.mdb
    • EmpDataTemplate.xls
    • OrdersTemplate.xls

  3. Os scripts ASP deste exemplo criam cópias dos modelos de livro com o método Copy de FileSystemObject. Para que o método Copy tenha êxito, o cliente que está a aceder ao script tem de ter acesso de escrita à pasta que contém as ASP.
  4. Navegue para Orders.asp (isto é, http://SeuServidor/ExcelADO/Orders.ASP) e note que o browser apresenta um livro do Excel semelhante ao de Sample 1 da aplicação do Visual Basic.
  5. Navegue para EmpData.asp (isto é, http://SeuServidor/ExcelADO/EmpData.ASP) e note que o browser apresenta um livro do Excel semelhante ao de Sample 2 da aplicação do Visual Basic.
(c) Microsoft Corporation 2000, Todos os direitos reservados. Contribuições de Lori B. Turner, Microsoft Corporation.

Referências

Para obter informações adicionais, clique nos números de artigo que se seguem para visualizar os artigos na base de dados de conhecimento da Microsoft (KB, Microsoft Knowledge Base):
195951 HOWTO: Query and Update Excel Data Using ADO From ASP
194124 PRB: Excel Values Returned as NULL Using DAO OpenRecordset
193998 HOWTO: Read and Display Binary Data in ASP
247412 INFO: Methods for Transferring Data to Excel from Visual Basic
257819 HOWTO: Use ADO with Excel Data from Visual Basic or VBA

Propriedades

Artigo: 278973 - Última revisão: 3 de março de 2006 - Revisão: 6.0
A informação contida neste artigo aplica-se a:
  • Microsoft Excel 2000 Standard Edition
  • Microsoft ActiveX Data Objects 2.5
  • Microsoft ActiveX Data Objects 2.6
  • Microsoft Visual Basic 6.0 Professional Edition
  • Microsoft Visual Basic 6.0 Enterprise Edition
  • Microsoft Active Server Pages 4.0
Palavras-chave: 
kbdownload kbdownload kbautomation kbfile kbprogramming KB278973

Submeter comentários

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com