Como consultas e dados de actualização do Excel com o ADO a partir do ASP

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

Nesta página

Sumário

Este artigo demonstra como consultar e actualizar informações numa folha de cálculo do Excel utilizando o ActiveX Data Objects (ADO) de uma página ASP (Active Server Pages). O artigo também descreve as limitações associadas a este tipo de aplicação.

Importante: Quando aplicações de ASP/ADO suportar acesso multi-utilizador, uma folha de cálculo do Excel não suporta. Por conseguinte, este método de consulta e actualizar as informações não suporta acesso simultâneo multi-utilizador.

Mais Informação

Para aceder aos dados na folha de cálculo do Excel para que este exemplo, utilize o controlador ODBC da Microsoft para o Excel. Crie uma tabela para aceder aos dados criando um intervalo com nome na folha de cálculo da Excel.

Passos para criar a aplicação de exemplo

  • Crie o ficheiro do Excel ADOtest.xls com os seguintes dados na Folha1:

    Reduzir esta tabelaExpandir esta tabela
    column1column2column3
    RR Isto15
    bbteste20
    eefunciona25

    Nota Se uma coluna na folha de cálculo Excel contiver texto e números, o controlador de ODBC do Excel não é possível interpretar correctamente o tipo de dados deve ser a coluna. Certifique-se que todas as células numa coluna de estarem do mesmo tipo de dados. Os seguintes três erros podem ocorrer se cada célula de uma coluna não é do mesmo tipo ou tiver tipos mistos entre "texto" e "gerais":
    1. Fornecedor Microsoft OLE DB para controladores de ODBC erro '80040e21'
      As propriedades do pedido não podem ser suportadas por este controlador de ODBC.
    2. Fornecedor Microsoft OLE DB para controladores de ODBC erro '80004005'
      A consulta não é actualizável porque não contém nenhuma coluna pesquisável para utilizar como uma chave esperançoso.
    3. Fornecedor Microsoft OLE DB para controladores de ODBC erro '80004005'
      Consulta baseada actualização falhou. Não foi possível encontrar a linha para actualizar.
  • Crie um intervalo com nome, myRange1, a folha de cálculo:

    1. Realce a área de linhas e colunas onde residem os dados.
    2. No menu Inserir, aponte para nome e clique em definir.
    3. Introduza myRange1 nome para o intervalo com nome nome.
    4. Clique em OK.
    O intervalo com nome myRange1 contém os seguintes dados:

    Reduzir esta tabelaExpandir esta tabela
    column1column2column3
    RRIsto15
    bbteste20
    eefunciona25


    Nota ADO assume que a primeira linha numa consulta Excel contém os cabeçalhos das colunas. Por conseguinte, o intervalo com nome tem de incluir os cabeçalhos das colunas. Este é comportamento diferente do DAO.

    Nota Cabeçalhos de coluna não podem ser um número. O controlador do Excel não pode interpretá-las e, em vez disso, devolve uma referência de célula. Interpretado por exemplo, um cabeçalho de coluna de "F1" deverá ser incorrectamente.
  • Crie um ODBC sistema origem de dados Name (DSN) apontam para o ficheiro ADOTest.xls.
    1. No painel de controlo, abrir o ODBC Administrator.
    2. No separador DSN de sistema, clique em Adicionar.
    3. Seleccione o controlador do Microsoft Excel (*.xls) e clique em ' Concluir '. Se esta opção não existir, terá de instalar o controlador Microsoft ODBC para o Excel a partir do programa de configuração do Excel.
    4. Escolha ADOExcel para o nome da origem de dados.
    5. Certifique-se que a versão está definida para a versão correcta do Excel.
    6. Clique em "Seleccionar livro...", navegue para o ADOTest.xls ficheiro e clique em OK.
    7. Faça clique sobre o "Opções >>" botão e desmarque a caixa de verificação "Ler apenas".
    8. Clique em OK e, em seguida, clique novamente em OK.
  • Definir permissões num ficheiro ADOTest.xls.
Se o Active Server Page é acedida anonimamente, é necessário garantir que a conta de anónimo (IUSR_ <machinename>) tem, pelo menos, acesso de leitura/escrita (RW) para a folha de cálculo. Se pretende eliminar informações da folha de cálculo, terá de conceder as permissões em conformidade.

Se estiver a autenticar acesso para o Active Server Page, terá de Certifique-se que todos os utilizadores a aceder a sua aplicação têm as permissões adequadas.

Nota Se não definir as permissões adequadas na folha de cálculo, obtém uma mensagem de erro semelhante à seguinte:

Fornecedor Microsoft OLE DB para controladores de ODBC erro '80004005'

[Microsoft][Controlador ODBC do Excel] O Microsoft Jet motor de base de dados não é possível abrir o ficheiro '(desconhecido)'. Já está aberto em modo exclusivo por outro utilizador ou ter permissão para ver os dados.
  1. Criar uma nova página ASP e colar no seguinte código:
          <!-- Begin ASP Source Code -->
          <%@ LANGUAGE="VBSCRIPT" %>
          <%
            Set objConn = Server.CreateObject("ADODB.Connection")
            objConn.Open "ADOExcel"
    
            Set objRS = Server.CreateObject("ADODB.Recordset")
            objRS.ActiveConnection = objConn
            objRS.CursorType = 3                    'Static cursor.
            objRS.LockType = 2                      'Pessimistic Lock.
            objRS.Source = "Select * from myRange1"
            objRS.Open
       %>
       <br>
       <%
          Response.Write("Original Data")
    
          'Printing out original spreadsheet headings and values.
    
          'Note that the first recordset does not have a "value" property
          'just a "name" property.  This will spit out the column headings.
    
          Response.Write("<TABLE><TR>")
          For X = 0 To objRS.Fields.Count - 1
             Response.Write("<TD>" & objRS.Fields.Item(X).Name & "</TD>")
          Next
          Response.Write("</TR>")
          objRS.MoveFirst
    
          While Not objRS.EOF
             Response.Write("<TR>")
             For X = 0 To objRS.Fields.Count - 1
                Response.write("<TD>" & objRS.Fields.Item(X).Value)
             Next
             objRS.MoveNext
             Response.Write("</TR>")
          Wend
          Response.Write("</TABLE>")
    
          'The update is made here
    
          objRS.MoveFirst
          objRS.Fields(0).Value = "change"
          objRS.Fields(1).Value = "look"
          objRS.Fields(2).Value = "30"
          objRS.Update
    
          'Printing out spreadsheet headings and values after update.
    
          Response.Write("<br>Data after the update")
          Response.Write("<TABLE><TR>")
          For X = 0 To objRS.Fields.Count - 1
             Response.Write("<TD>" & objRS.Fields.Item(X).Name & "</TD>")
          Next
          Response.Write("</TR>")
          objRS.MoveFirst
    
          While Not objRS.EOF
             Response.Write("<TR>")
             For X = 0 To objRS.Fields.Count - 1
                Response.write("<TD>" & objRS.Fields.Item(X).Value)
             Next
             objRS.MoveNext
             Response.Write("</TR>")
          Wend
          Response.Write("</TABLE>")
    
          'ADO Object clean up.
    
          objRS.Close
          Set objRS = Nothing
    
          objConn.Close
          Set objConn = Nothing
       %>
       <!-- End ASP Source Code -->
    					
  2. Guardar e atribua o Active Server Page e visualizar no browser. Verá o seguinte:
          Original Data:
    
          column1    column2    column3
          -----------------------------
    
          rr         this       30
          bb         test       20
          tt         works      25
    
    
          Data after the update:
    
          column1    column2    column3
          -----------------------------
    
          change     look       30
          bb         test       20
          tt         works      25
    					
Nota Uma actualização foi efectuada em primeira linha do intervalo com nome (após os títulos).

Referências

Para obter informações adicionais, clique no número de artigo que se segue para visualizar o artigo na Microsoft Knowledge Base:
190195Como ExtractInformation de folha de Excel com DAO

Propriedades

Artigo: 195951 - Última revisão: 1 de julho de 2004 - Revisão: 5.2
A informação contida neste artigo aplica-se a:
  • Microsoft ActiveX Data Objects 1.0
  • Microsoft ActiveX Data Objects 1.5
  • Microsoft ActiveX Data Objects 2.0
  • Microsoft ActiveX Data Objects 2.1 Service Pack 2
  • Microsoft ActiveX Data Objects 2.5
  • Microsoft Active Server Pages 4.0
  • Microsoft Data Access Components 2.5
Palavras-chave: 
kbmt kbcode kbhowto kbmdacnosweep KB195951 KbMtpt
Tradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine translation ou MT), não tendo sido portanto revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática? erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 195951

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