Como utilizar o ADO.NET para obter e modificar registos num livro do Excel com o Visual Basic .NET

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

Nesta página

Sumário

Este artigo explica como pode utilizar o ADO.NET para obter dados de um livro do Microsoft Excel, modificar dados de um livro existente, ou Adicione dados a um livro novo. Para aceder a livros do Excel com o ADO.NET, pode utilizar o fornecedor de Jet OLE DB; Este artigo fornece as informações necessárias que pode utilizar o fornecedor de Jet OLE DB quando o Excel é a origem de dados de destino.

Como utilizar o fornecedor de OLE DB do Jet com livros do Microsoft Excel

O motor de base de dados Microsoft Jet pode aceder a dados noutros formatos de ficheiro de base de dados, como livros do Excel, através de instalável indexado Controladores de método de acesso (ISAM) sequencial. Para abrir formatos externos suportados pelo o Microsoft Jet 4.0 OLE DB Provider, especifique o tipo de base de dados a propriedades expandidas da ligação. O Jet OLE DB Provider suporta o tipos de bases de dados seguintes para 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 o Microsoft Excel 5.0 e 7.0 (95) livros e utilizar o Excel 8.0 da origem de tipo de base de dados para o Microsoft Excel 8.0 (97), 9.0 (2000) e 10,0 livros (2002). Os exemplos deste artigo utilizar livros do Excel no formato Excel 2000 e Excel 2002.

Cadeia de ligação

Para aceder a um livro do Excel utilizando o Jet OLE DB Provider, utilizar uma cadeia de ligação que tem a seguinte sintaxe:
Provider Source=C:\Book1.xls;Propriedades alargadas = "Excel 8.0;INVT = YES; "
Na cadeia de ligação, especifique o nome de ficheiro e caminho completo para o livro no parâmetro de Origem de dados . O parâmetro de Propriedades expandidas pode conter duas propriedades: uma propriedade para o ISAM versão e de uma propriedade para indicar se é ou não incluir a tabela (s) cabeçalhos.

Livros do Excel, a primeira linha de um intervalo é o cabeçalho linha (ou nomes de campo) por predefinição. Se o primeiro intervalo não contiver cabeçalhos, Pode especificar INVT = não nas propriedades expandidas na cadeia da ligação. IF especificar INVT = não na cadeia de ligação, o fornecedor de Jet OLE DB nomes aos campos automaticamente (F1 representa o primeiro campo, F2 representa o segundo campo e assim sucessivamente).

Tipos de dados

Ao contrário de uma base de dados tradicional, não existe nenhuma forma directa para especificar os tipos de dados para colunas nas tabelas do Excel. Em vez disso, o fornecedor de OLE DB verifica Escreva oito linhas de uma coluna para estimativa os dados para o campo. Pode alterar o número de linhas para verificar especificando um valor entre um (1) e dezasseis (16) para o MAXSCANROWS a definição nas propriedades expandidas da cadeia da ligação.

Convenções de nomenclatura de tabela

Existem várias formas, pode fazer referência a uma tabela (ou intervalo) de um Livro do Excel:
  • Utilizar o nome da folha seguido de um cifrão (por exemplo, [Folha1$] ou [minha folha$]). Uma tabela de livro que está referenciada na presente forma inclui o intervalo de inteiros utilizado da folha de cálculo.
    Seleccione * from [Folha1$]
  • Utilizar um intervalo com um nome definido (por exemplo, [MyNamedRange]):
    Seleccionar * da [MyNamedRange]
  • Utilizar um intervalo com um endereço específico (por exemplo, [Folha1$ A1: B10]):
    Seleccionar * da [Folha1$ A1: B10]
Nota: O sinal de cifrão a seguir ao nome de folha de cálculo é uma indicação de que a tabela existe. Se estiver a criar uma nova tabela, tal como discutido no Criar novos livros e tabelassecção do presente artigo, não utilize o sinal de cifrão.

Como utilizar livros do Excel como fontes de dados do ADO.NET

Obter registos

Pode obter registos de uma base de dados utilizando um de dois abordagens no ADO.NET: com um conjunto de dados ou com um DataReader.

Um conjunto de dados é uma cache de registos obtidos de uma origem de dados. Os dados o conjunto de dados é normalmente uma versão reduzida de muito do que está na base de dados. No entanto, pode trabalhar com o mesmo da mesma forma que trabalha com o valor real dados e permanecer desligado da base de dados real. Para além da obtenção de dados Também pode utilizar um conjunto de dados para efectuar operações de actualização em subjacente base de dados.

Em alternativa, pode utilizar um DataReader para obter uma transmissão em sequência de só de leitura, só de reencaminhamento de dados a partir de um base de dados. Quando utiliza o programa DataReader , melhoria de desempenho e o sistema de custos gerais é diminui uma vez que apenas uma linha num momento nunca está na memória. Se tiver uma grande quantidade de dados para obter e não pretende efectuar alterações aos elementos subjacentes base de dados, um DataReader é uma opção a um conjunto de dados.

Adicionar e actualizar registos

Com o ADO.NET, pode inserir e actualizar registos num livro do um dos três formas:
  • Execute directamente um comando para inserir ou actualizar registos um a um data/hora. Para tal, pode criar um objecto de OLEDbCommand na ligação e defina a propriedade CommandText para um comando válido para inserir registos

    INSERT INTO [Sheet1$] (F1, F2) values ('111', 'ABC')
    ou um comando para actualizar os registos

    UPDATE [Sheet1$] SET F2 = 'XYZ' WHERE F1 = '111'
    e, em seguida, chamar o método de ExecuteNonQuery .
  • Efectuar alterações a um conjunto de dados que tiver preenchido com uma tabela de consulta de um livro do Excel e, em seguida, chamar o método de actualização do DataAdapter para resolver alterações do DataSet que a regressar ao livro. No entanto, para utilizar o método de actualização para alteração de resolução que tem de definir parametrizadas comandos para o DataAdapter InsertCommand
    INSERT INTO [Sheet1$] (F1, F2) values (?, ?)
    e UpdateCommand:
    UPDATE [Sheet1$] SET F2 = ? WHERE F1 = ?
    Comandos de actualização e inserção com parâmetros são necessários porque o OleDbDataAdapter não fornece informações de chave/índice para livros do Excel; sem campos de chave/índice, o CommandBuilder não é possível gerar automaticamente o comandos para si.
  • Exportar dados de outra origem de dados num livro do Excel fornecido que a origem de dados pode ser utilizada com o Jet OLE DB Provider. Dados incluem origens que pode utilizar com o Jet OLE DB Provider desta forma Ficheiros de texto, bases de dados do Microsoft Access e, naturalmente, outros livros do Excel. Com um único INSERT INTO comando, pode exportar dados de outra tabela/consulta no livro:
    INSERT INTO [Sheet1$] IN 'C:\Book1.xls' 'Excel 8.0;' SELECT * FROM MyTable"
    INSERT INTO requer que a tabela de destino (ou folha de cálculo) já Existem; dados são acrescentados à tabela de destino.

    Também pode utilizar SELECCIONAR..INTO para exportar a tabela/consulta para um livro:
    SELECT * INTO [Excel 8.0;Database=C:\Book1.xls].[Sheet1] FROM [MyTable]
    Quando utilizar seleccionar..INTO, se a tabela de destino ou o livro não existir, será criada para si. Se a tabela já existe antes da SELECCIONAR..PARA o comando é emitido, receberá um erro.
O Exemplo de códigosecção mais adiante neste artigo demonstra cada uma destas abordagens para adicionar e actualize registos num livro.

Eliminar registos

Apesar do Jet OLE DB Provider permite-lhe inserir e actualizar registos num livro do Excel, não permitir operações de eliminação. Se tentar para efectuar uma operação de eliminação num ou mais registos, recebe a seguinte mensagem de erro:
Eliminar dados numa tabela ligada não é suportada por este ISAM.
Esta limitação está inerente no tratamento de livros do Excel como bases de dados.

Criar livros e tabelas

Para criar um índice num livro do Excel, execute CREATE TABLE comando:
CREATE TABLE Sheet1 (F1 char(255), F2 char(255))
Quando executar este comando, uma nova folha de cálculo é criada com o nome do a tabela especificado no comando. Se o livro para a ligação não existe, demasiado será criado.

O Exemplo de código secção ilustra como Pode utilizar o comando CREATE TABLE para criar um novo livro e tabela.

Passo a passo

Exemplo de código

  1. Inicie um novo projecto de Aplicação do Windows do Visual Basic .NET.

    Por predefinição, é criado o Form1 .
  2. Adicione controlos de RadioButton seis e um controlo de botão ao Form1.
  3. Seleccione todos os controlos de RadioButton e defina a propriedade de tamanho para 200,24.
  4. No menu Ver , clique em código.
  5. Adicione a seguinte linha para o início do código módulo:
    Imports System.Data.OleDb
  6. Insira o seguinte código para a classe de formulário :
    Private m_sConn1 As String = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
                   "Data Source=C:\ExcelData1.xls;" & _
                   "Extended Properties=""Excel 8.0;HDR=YES"""
    
    Private m_sConn2 As String = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
                   "Data Source=C:\ExcelData2.xls;" & _
                   "Extended Properties=""Excel 8.0;HDR=YES"""
    
    Private m_sNorthwind = _
          "C:\Program Files\Microsoft Office\Office10\Samples\Northwind.mdb"
    
    Private m_sAction As String
    
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
          RadioButton1.Text = "Create_Workbook"
          RadioButton2.Text = "Retrieve_Records"
          RadioButton3.Text = "Add_Records"
          RadioButton4.Text = "Update_Records"
          RadioButton5.Text = "Update_Individual_Cells"
          RadioButton6.Text = "Use_External_Source"
          Button1.Text = "Go!"
    End Sub
    
    Private Sub RadioButtons_Click(ByVal sender As Object, ByVal e As System.EventArgs) _
          Handles RadioButton1.Click, RadioButton2.Click, RadioButton3.Click, _
          RadioButton4.Click, RadioButton5.Click, RadioButton6.Click
          m_sAction = sender.Text'Store the text for the selected radio button
    End Sub
    
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
          Try
             ' Call the associated routine to add/update/modify the workbook.
             Select Case m_sAction
                Case "Create_Workbook" : Create_Workbook()
                Case "Retrieve_Records" : Retrieve_Records()
                Case "Add_Records" : Add_Records()
                Case "Update_Records" : Update_Records()
                Case "Update_Individual_Cells" : Update_Individual_Cells()
                Case "Use_External_Source" : Use_External_Source()
             End Select
    
          Catch ex As OleDbException
             Dim er As OleDbError
             For Each er In ex.Errors
                MsgBox(er.Message)
             Next
          Catch ex2 As System.InvalidOperationException
             MsgBox(ex2.Message)
          End Try
    
    
    End Sub
    
    Public Sub Create_Workbook()
    
          ' If the workbooks already exist, prompt to delete.
          Dim answer As MsgBoxResult
          If Dir("C:\ExcelData1.xls") <> "" Or Dir("C:\ExcelData2.xls") <> "" Then
              answer = MsgBox("Delete existing workbooks (C:\ExcelData1.xls and " & _
                       "C:\ExcelData2.xls)?", MsgBoxStyle.YesNo)
              If answer = MsgBoxResult.Yes Then
                  If Dir("C:\ExcelData1.xls") <> "" Then Kill("C:\ExcelData1.xls")
                  If Dir("C:\ExcelData2.xls") <> "" Then Kill("C:\ExcelData2.xls")
              Else
                  Exit Sub
              End If
          End If
    
    '==========================================================================
          ' Create a workbook with a table named EmployeeData. The table has 3 
          ' fields: ID (char 255), Name (char 255) and Birthdate (date).  
    '==========================================================================
          Dim conn As New OleDbConnection()
          conn.ConnectionString = m_sConn1
          conn.Open()
          Dim cmd1 As New OleDbCommand()
          cmd1.Connection = conn
          cmd1.CommandText = "CREATE TABLE EmployeeData (Id char(255), Name char(255), BirthDate date)"
          cmd1.ExecuteNonQuery()
          cmd1.CommandText = "INSERT INTO EmployeeData (Id, Name, BirthDate) values ('AAA', 'Andrew', '12/4/1955')"
          cmd1.ExecuteNonQuery()
          conn.Close()
    
    '==========================================================================
          ' Create a workbook with a table named InventoryData. The table has 3 
          ' fields: Product (char 255), Qty (float) and Price (currency). 
    '==========================================================================
    
          conn.ConnectionString = m_sConn2
          conn.Open()
          Dim cmd2 As New OleDbCommand()
          cmd2.Connection = conn
          cmd2.CommandText = "CREATE TABLE InventoryData (Product char(255), Qty float, Price currency)"
          cmd2.ExecuteNonQuery()
          cmd2.CommandText = "INSERT INTO InventoryData (Product, Qty, Price) values ('Cola', 200, 1.35)"
          cmd2.ExecuteNonQuery()
          cmd2.CommandText = "INSERT INTO InventoryData (Product, Qty, Price) values ('Chips', 550, 0.89)"
          cmd2.ExecuteNonQuery()
          conn.Close()
    
          ' NOTE: You can ALTER and DROP tables in a similar fashion.
    
    End Sub
    
    Public Sub Retrieve_Records()
    
          '==========================================================
          'Use a DataReader to read data from the EmployeeData table.
          '==========================================================
    
          Dim conn1 As New System.Data.OleDb.OleDbConnection(m_sConn1)
          conn1.Open()
          Dim cmd1 As New System.Data.OleDb.OleDbCommand("Select * From [EmployeeData$]", conn1)
          Dim rdr As OleDbDataReader = cmd1.ExecuteReader
    
          Debug.WriteLine(vbCrLf & "EmployeeData:" & vbCrLf & "=============")
          Do While rdr.Read()
             Debug.WriteLine(System.String.Format("{0,-10}{1, -15}{2}", _
                rdr.GetString(0), rdr.GetString(1), _
                rdr.GetDateTime(2).ToString("d")))
          Loop
          rdr.Close()
          conn1.Close()
    
          '========================================================
          'Use a DataSet to read data from the InventoryData table.
          '========================================================
          Dim conn2 As New OleDbConnection(m_sConn2)
          Dim da As New OleDbDataAdapter("Select * From [InventoryData$]", conn2)
          Dim ds As DataSet = New DataSet()
          da.Fill(ds)
          Debug.WriteLine(vbCrLf & "InventoryData:" & vbCrLf & "==============")
          Dim dr As DataRow
          For Each dr In ds.Tables(0).Rows'Show results in output window
             Debug.WriteLine(System.String.Format("{0,-15}{1, -6}{2}", _
                dr("Product"), dr("Qty"), dr("Price")))
          Next
          conn2.Close()
    
    End Sub
    
    Public Sub Add_Records()
    
    '==========================================================================
          ' Run an INSERT INTO command to add new records to the workbook. 
    '==========================================================================
          Dim conn1 As New System.Data.OleDb.OleDbConnection(m_sConn1)
          conn1.Open()
          Dim cmd As New System.Data.OleDb.OleDbCommand()
          cmd.Connection = conn1
          cmd.CommandText = "INSERT INTO [EmployeeData$] (ID, Name, BirthDate) values ('CCC', 'Charlie', '10/14/48')"
          cmd.ExecuteNonQuery()
          cmd.CommandText = "INSERT INTO [EmployeeData$] (ID, Name, BirthDate) values ('DDD', 'Deloris', '7/19/98')"
          cmd.ExecuteNonQuery()
          conn1.Close()
    
          '====================================================================
          'Use the InsertCommand object to add new records to the InventoryData
          'table.
          '====================================================================
          Dim conn2 As New OleDbConnection(m_sConn2)
          Dim da As New OleDbDataAdapter("Select * From [InventoryData$]", conn2)
          Dim ds As DataSet = New DataSet()
          da.Fill(ds, "MyExcelTable")
    
          ' Generate the InsertCommand and add the parameters for the command.
          da.InsertCommand = New OleDbCommand( _
             "INSERT INTO [InventoryData$] (Product, Qty, Price) VALUES (?, ?, ?)", conn2)
          da.InsertCommand.Parameters.Add("@Product", OleDbType.VarChar, 255, "Product")
          da.InsertCommand.Parameters.Add("@Qty", OleDbType.Double).SourceColumn = "Qty"
          da.InsertCommand.Parameters.Add("@Price", OleDbType.Currency).SourceColumn = "Price"
    
          ' Add two new records to the dataset.
          Dim dr As DataRow
          dr = ds.Tables(0).NewRow
          dr("Product") = "Bread" : dr("Qty") = 390 : dr("Price") = 1.89 : ds.Tables(0).Rows.Add(dr)
          dr = ds.Tables(0).NewRow
          dr("Product") = "Milk" : dr("Qty") = 99 : dr("Price") = 2.59 : ds.Tables(0).Rows.Add(dr)
    
          ' Apply the dataset changes to the actual data source (the workbook).
          da.Update(ds, "MyExcelTable")
          conn2.Close()
    
    End Sub
    
    Public Sub Update_Records()
    
    '==========================================================================
          ' Run an UPDATE command to change a record in the EmployeeData
          ' table.
    '==========================================================================
          Dim conn1 As New System.Data.OleDb.OleDbConnection(m_sConn1)
          conn1.Open()
          Dim cmd As New System.Data.OleDb.OleDbCommand()
          cmd.Connection = conn1
          cmd.CommandText = "UPDATE [EmployeeData$] " & _
                        "SET NAME = 'Aaron', BirthDate = '5/4/1975' WHERE ID = 'AAA'"
          cmd.ExecuteNonQuery()
          conn1.Close()
    
          '====================================================================
          ' Use the UpdateCommand object to modify records in the InventoryData
          ' table.
          '====================================================================
          Dim conn2 As New OleDbConnection(m_sConn2)
          Dim da As New OleDbDataAdapter("Select * From [InventoryData$]", conn2)
          Dim ds As DataSet = New DataSet()
          da.Fill(ds, "MyInventoryTable")
    
          ' Generate the UpdateCommand and add the parameters for the command.
          da.UpdateCommand = New OleDbCommand( _
             "UPDATE [InventoryData$] SET Qty = ?, Price=? WHERE Product = ?", conn2)
          da.UpdateCommand.Parameters.Add("@Qty", OleDbType.Numeric).SourceColumn = "Qty"
          da.UpdateCommand.Parameters.Add("@Price", OleDbType.Currency).SourceColumn = "Price"
          da.UpdateCommand.Parameters.Add("@Product", OleDbType.VarChar, 255, "Product")
    
          ' Update the first two records.
          ds.Tables(0).Rows(0)("Qty") = 1000
          ds.Tables(0).Rows(0)("Price") = 10.1
          ds.Tables(0).Rows(1)("Qty") = 2000
          ds.Tables(0).Rows(1)("Price") = 20.2
    
          ' Apply the dataset changes to the actual data source (the workbook).
          da.Update(ds, "MyInventoryTable")
          conn2.Close()
    
    End Sub
    
    Public Sub Update_Individual_Cells()
    
    '==========================================================================
          ' Update individual cells on the EmployeeData worksheet; 
          ' specifically, cells F3, G3, and I4 are modified.
    '==========================================================================
    
          ' NOTE: The connection string indicates that the table does *NOT* 
          ' have a header row.
          Dim conn As New System.Data.OleDb.OleDbConnection(m_sConn1.Replace("HDR=YES", "HDR=NO"))
          conn.Open()
          Dim cmd As New System.Data.OleDb.OleDbCommand()
          cmd.Connection = conn
          cmd.CommandText = "UPDATE [EmployeeData$F3:G3] SET F1 = 'Cell F3', F2 = 'Cell G3'"
          cmd.ExecuteNonQuery()
          cmd.CommandText = "UPDATE [EmployeeData$I4:I4] SET F1 = 'Cell I4'"
          cmd.ExecuteNonQuery()
          conn.Close()
    
    End Sub
    
    Public Sub Use_External_Source()
    
          ' Open a connection to the sample Northwind Access database.
          Dim conn As New System.Data.OleDb.OleDbConnection( _
                "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & m_sNorthwind & ";")
          conn.Open()
          Dim cmd As New System.Data.OleDb.OleDbCommand()
          cmd.Connection = conn
    
    '=======================================================================
          ' Run an INSERT..INTO command on the Northwind database to append 
          ' the records from a table/query to an existing table in the Excel 
          ' workbook.
    '=======================================================================
          cmd.CommandText = "INSERT INTO [EmployeeData$] IN 'C:\ExcelData1.xls' 'Excel 8.0;'" & _
             "SELECT EmployeeID AS ID, FirstName AS Name, BirthDate FROM Employees"
          cmd.ExecuteNonQuery()
    
    '==========================================================================
          ' Run a SELECT..INTO command on the Northwind database to insert 
          ' all the records from a table/query into a new sheet in the Excel 
          ' workbook.
    '==========================================================================
          cmd.CommandText = "SELECT * INTO [Excel 8.0;Database=C:\ExcelData2.xls].[ProductSales]" & _
                          "FROM [Product Sales for 1997]"
          cmd.ExecuteNonQuery()
    
          conn.Close()
    
    End Sub
  7. Modifique o caminho para os dados de Access de exemplo, Adamastor, para o membro m_sNorthwind no código, se necessário.

Experimente!

  1. No menu Ver , aponte para Outro Windowse, em seguida, clique em saída para apresentar a janela de saída .
  2. Prima F5 para compilar e executar o programa.
  3. Clique em Create_Workbook e, em seguida, clique em Ir. O procedimento Create_Workbook executa os comandos de CREATE TABLE para criar dois novos livros: C:\ExcelData1.xls e C:\ExcelData2.xls. ExcelData1.xls contém uma folha (tabela) denominada EmployeeData e ExcelData2.xls contém uma folha (tabela) com o nome InventoryData. As tabelas são preenchidas com registos.

    Nota: em cada passo restante neste teste, abra os livros no Excel para examinar os resultados. Ou, clique em Retrieve_Records para ver o conteúdo da tabela (s) na saída janela do Visual Studio .NET.
  4. Clique em Retrieve_Records e, em seguida, clique em Ir. O procedimento Retrieve_Records extrai os registos das tabelas e apresenta-os na janela de saída , semelhante ao seguinte:
    EmployeeData:
    =============
    AAA       Andrew         12/4/1955
    
    InventoryData:
    ==============
    Cola           200   1.35
    Chips          550   0.89
  5. Clique em Add_Records e, em seguida, clique em Ir. A rotina Add_Records adiciona dois registos para cada tabela:
    EmployeeData:
    =============
    AAA       Andrew         12/4/1955
    CCC       Charlie        10/14/1948
    DDD       Deloris        7/19/1998
    
    InventoryData:
    ==============
    Cola           200   1.35
    Chips          550   0.89
    Bread          390   1.89
    Milk           99    2.59
  6. Clique em Update_Records e, em seguida, clique em Ir. A rotina Update_Records actualiza dois registos em cada livro:
    EmployeeData:
    =============
    AAA       Aaron          5/4/1975
    CCC       Charlie        10/14/1948
    DDD       Deloris        7/19/1998
    
    InventoryData:
    ==============
    Cola           1000  10.1
    Chips          2000  20.2
    Bread          390   1.89
    Milk           99    2.59
  7. Clique em Update_Individual_Cells e, em seguida, clique em Ir. A rotina Update_Individual_Cells modifica determinadas células na folha de cálculo em EmployeeData ExcelData1.xls; especificamente, as células I4, G3 e F3 são actualizadas.
  8. Clique em Use_External_Source e, em seguida, clique em Ir. Quando utiliza um INSERT..NO comando, a rotina Use_External_Source acrescenta registos da tabela 'Empregados' Adamastor a folha de EmployeeData do ExcelData1.xls. E, Use_External_Source utiliza um SELECT..NO comando para criar uma nova tabela (ou folha) ExcelData2.xls que contém todos os registos da tabela Adamastor «Produtos».

    Nota: Se clicar em Use_External_Source mais do que uma vez, a lista de empregados será acrescentada múltiplos vezes porque a chave primária não é reconhecida ou imposta.

Formatação de células

Se estiver a utilizar o ADO.NET para adicionar ou actualizar registos de um existente livro, pode aplicar formatação para o livro que irá ser utilizado com das células os registos novos ou actualizados. Quando actualizar um registo existente (ou linha) num livro, a formatação de células é mantido. E quando inserir um novo registo (ou linha) num livro, o novo registo herda a formatação de linha acima -lo.

O procedimento seguinte mostra como pode utilizar a formatação de um livro com o código de exemplo:
  1. Prima F5 para compilar e executar o exemplo.
  2. No Form1, clique em Create_Workbook e, em seguida, clique em Ir.
  3. Inicie o Microsoft Excel e abra C:\ExcelData1.xls.
  4. Aplica um estilo de tipo de letra negrito a célula A2.
  5. Aplicar um itálico, sublinhado estilo para a célula B2 e alinhar Centro.
  6. Aplica um formato de data por extenso para a célula C2.
  7. Guarde e feche o C:\ExcelData1.xls.
  8. No Form1, clique em Add_Records e, em seguida, clique em Ir.
  9. Abra C:\ExcelData1.xls no Excel e repare que os dois novos linhas tem herdado a formatação da primeira linha.

Limitações

Seguem-se algumas limitações do Jet OLE DB Provider no respeito origens de dados do Excel:
  • Não é possível inserir fórmulas nas células a utilizar ADO.NET.
  • O Jet OLE DB Provider não consegue fornecer/índice de chaves informações para as tabelas num livro do Excel. Por este motivo, não é possível utilizar CommandBuilder para gerar automaticamente actualizações e inserções para registos num livro do Excel.

Referências

Para obter informações adicionais, clique nos números de artigo que se segue para visualizar os artigos na Microsoft Knowledge Base:
316756Problema: O erro ocorre quando utiliza o ADO.NET OLEDbDataAdapter para modificar o livro do Excel
257819 Como utilizar ADO com dados de Excel do Visual Basic ou VBA
306022 Como transferir dados para um livro do Excel utilizando o Visual Basic .NET
306023 Como transferir dados para do Excel Livro utilizando o Visual c# .NET
311731 Como Consulta e apresentar dados do Excel utilizando ASP.NET, ADO.NET e Visual Basic .NET
306572 Como Consulta e apresentar dados do Excel utilizando ASP.NET, ADO.NET e Visual c# .NET
278973 EXEMPLO: ExcelADO demonstra como utilizar ADO para ler e escrever dados nos livros do Excel

Propriedades

Artigo: 316934 - Última revisão: 7 de junho de 2013 - Revisão: 8.0
A informação contida neste artigo aplica-se a:
  • Microsoft Excel 2002 Standard Edition
  • Microsoft Excel 2000 Standard Edition
  • Microsoft Visual Basic .NET 2002 Standard Edition
Palavras-chave: 
kbhowtomaster kbmt KB316934 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: 316934

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