Come utilizzare ADO.NET per recuperare e modificare i record in una cartella di lavoro di Excel con Visual Basic .NET

Traduzione articoli Traduzione articoli
Identificativo articolo: 316934 - Visualizza i prodotti a cui si riferisce l?articolo.
Espandi tutto | Chiudi tutto

In questa pagina

Sommario

In questo articolo viene descritto come Ŕ possibile utilizzare ADO.NET per recuperare dati da una cartella di lavoro di Microsoft Excel, modificare i dati in una cartella di lavoro esistente o aggiungere dati a una cartella di lavoro. Per accedere a cartelle di lavoro di Excel con ADO.NET, Ŕ possibile utilizzare il provider OLE DB per Jet; In questo articolo vengono fornite le informazioni necessarie in modo che Ŕ possibile utilizzare il provider OLE DB per Jet quando Excel Ŕ l'origine dati di destinazione.

Come utilizzare il Provider OLE DB di Jet con le cartelle di lavoro di Microsoft Excel

Il motore di database Microsoft Jet pu˛ accedere dati in altri formati di file di database, ad esempio cartelle di lavoro di Excel, tramite i driver installabili di accesso metodo ISAM (Indexed Sequential). Per aprire formati esterni supportati dal Provider OLE DB Microsoft Jet 4.0, Ŕ necessario specificare il tipo di database nelle proprietÓ estese per la connessione. Il Provider OLE DB Jet supporta i seguenti tipi di database per le cartelle di lavoro di Microsoft Excel:
Excel 3.0
Excel 4.0
Excel 5.0
Excel 8.0
Nota: utilizzare il tipo di database di origine Excel 5.0 per le cartelle di lavoro di Microsoft Excel 5.0 e 7.0 (95) e utilizzare il tipo di database di origine Excel 8.0 per Microsoft Excel 8.0 (97), 9.0 (2000) e 10.0 (2002) le cartelle di lavoro. Gli esempi in questo articolo utilizzano le cartelle di lavoro di Excel nel formato Excel 2000 ed Excel 2002.

Stringa di connessione

Per accedere a una cartella di lavoro di Excel utilizzando il Provider OLE DB Jet, utilizzare una stringa di connessione che ha la seguente sintassi:
Source=C:\Book1.xls del provider;ProprietÓ estese = "Excel 8.0;HDR = YES; "
Nella stringa di connessione, specificare il percorso e il nome completo della cartella di lavoro nel parametro Origine dati . Il parametro Extended Properties pu˛ contenere due proprietÓ: una proprietÓ per la versione ISAM e una proprietÓ per indicare se le tabelle includono intestazioni.

Con cartelle di lavoro di Excel, la prima riga in un intervallo Ŕ la riga di intestazione (o nomi di campo) per impostazione predefinita. Se il primo intervallo non contiene intestazioni, Ŕ possibile specificare HDR = NO le proprietÓ estese nella stringa di connessione. Se si specifica HDR = NO nella stringa di connessione, il provider OLE DB per Jet automaticamente i nomi di campi per l'utente (F1 rappresenta il primo campo, F2 rappresenta il secondo campo e cosý via).

Tipi di dati

A differenza di un database tradizionale, esiste un modo diretto per specificare i tipi di dati per le colonne nelle tabelle di Excel. Al contrario, il provider OLE DB esegue la scansione otto righe di una colonna a indovinare il tipo di dati per il campo. ╚ possibile modificare il numero di righe da esaminare specificando un valore compreso tra uno (1) e sedici (16) per l'impostazione di MAXSCANROWS nelle proprietÓ estese della stringa di connessione.

Convenzioni di denominazione tabella

Esistono diversi modi, Ŕ possibile fare riferimento a una tabella (o intervallo) in una cartella di lavoro di Excel:
  • Utilizzare il nome del foglio seguito da un segno di dollaro (ad esempio, [Sheet1$] o [$il foglio di lavoro]). Una tabella della cartella di lavoro a cui fa riferimento in thismanner include l'intervallo di interi utilizzato del foglio di lavoro.
    Selezionare * da [Sheet1$]
  • Utilizzare un intervallo con un nome definito (per example,[MyNamedRange]):
    Selezionare * da [MyNamedRange]
  • Utilizzare un intervallo con un indirizzo specifico (per example,[Sheet1$A1:B10]):
    Selezionare * da [Sheet1$ A1: B10]
Nota: il segno di dollaro dopo il nome del foglio di lavoro Ŕ un'indicazione che la tabella Ŕ presente. Se si crea una nuova tabella, come illustrato nella sezione i Creare tabelle e le nuove cartelle di lavoro sezione di questo articolo, non utilizzare il simbolo del dollaro.

Come utilizzare le cartelle di lavoro di Excel come origini dati ADO.NET

Recuperare record

╚ possibile recuperare i record da un database utilizzando uno dei due approcci di ADO.NET: con un Dataset o DataReader.

Un Dataset Ŕ una cache di record recuperati da un'origine dati. I dati nel Dataset sono in genere una versione molto ridotta di ci˛ che si trova nel database. Tuttavia, Ŕ possibile utilizzarli nello stesso modo di lavorare con i dati effettivi e rimanere disconnessi dal database effettivo. Oltre al recupero dei dati, Ŕ anche possibile utilizzare un Dataset per eseguire le operazioni di aggiornamento sul database sottostante.

In alternativa, Ŕ possibile utilizzare un DataReader per recuperare un flusso di dati di sola lettura forward-only da un database. Quando si utilizza il programma di DataReader , l'aumento delle prestazioni e sovraccarico del sistema Ŕ ridotto perchÚ in memoria si trova sempre solo una riga alla volta. Se si dispone di una grande quantitÓ di dati da recuperare e non si intende apportare modifiche al database sottostante, un DataReader Ŕ una soluzione migliore di un Dataset.

Aggiungere e aggiornare i record

Con ADO.NET, Ŕ possibile inserire e aggiornare i record in una cartella di lavoro in tre modi:
  • Eseguire direttamente un comando per inserire o aggiornare i record uno alla volta. A tale scopo, Ŕ possibile creare un oggetto OLEDbCommand sulla connessione e impostarne la proprietÓ CommandText su un comando valido per inserire record

    INSERT INTO [Sheet1$] (F1, F2) values ('111', 'ABC')
    o un comando per aggiornare i record

    UPDATE [Sheet1$] SET F2 = 'XYZ' WHERE F1 = '111'
    e quindi chiamare il metodo ExecuteNonQuery .
  • Apportare modifiche a un DataSet Ŕ riempito con una tabella/query da un workbookand di Excel, quindi chiamare il metodo Update di DataAdapter per risolvere le modifiche dal DataSet alla cartella di lavoro.Tuttavia, per utilizzare il metodo Update per modificare la risoluzione Ŕ necessario impostare commandsfor con parametri di DataAdapter InsertCommand
    INSERT INTO [Sheet1$] (F1, F2) values (?, ?)
    e UpdateCommand:
    UPDATE [Sheet1$] SET F2 = ? WHERE F1 = ?
    Comandi con parametri INSERT e UPDATE sono necessari perchÚ OleDbDataAdapter non fornisce informazioni di chiave con indice per le cartelle di lavoro di Excel, senza campi chiave/indice, CommandBuilder non pu˛ generare automaticamente thecommands automaticamente.
  • Esportare dati da un'altra origine dati in un providedthat di cartella di lavoro di Excel altra origine dati possono essere utilizzati con il Provider OLE DB Jet. Origini dati che Ŕ possibile utilizzare con il Provider OLE DB Jet nei file di includeText in questo modo, il database di Microsoft Access e, naturalmente, altre cartelle di lavoro di Excel.Con un singolo comando INSERT INTO, Ŕ possibile esportare dati da un'altra tabella/queryinto la cartella di lavoro:
    INSERT INTO [Sheet1$] IN 'C:\Book1.xls' 'Excel 8.0;' SELECT * FROM MyTable"
    INSERT INTO richiede che il alreadyexist di tabella (o un foglio di lavoro) destinazione; dati vengono aggiunti alla tabella di destinazione.

    ╚ inoltre possibile useSELECT..INTO per esportare la tabella/query in una cartella di lavoro:
    SELECT * INTO [Excel 8.0;Database=C:\Book1.xls].[Sheet1] FROM [MyTable]
    Quando si utilizza SELECT..IN, se la tabella di destinazione o la cartella di lavoro non notexist, verrÓ creato automaticamente. Se la tabella esiste giÓ prima di SELECT..NEL comando, verrÓ visualizzato un errore.
Il Codice di esempio pi¨ avanti in questo articolo viene illustrato ognuno di questi approcci per aggiungere e aggiornare i record in una cartella di lavoro.

Eliminare i record

Anche se il Provider OLE DB Jet consente di inserire e aggiornare i record in una cartella di lavoro di Excel, non consente le operazioni di eliminazione. Se si tenta di eseguire un'operazione di eliminazione su uno o pi¨ record, viene visualizzato il seguente messaggio di errore:
Eliminazione di dati in una tabella collegata non Ŕ supportato da questo ISAM.
Questa Ŕ una limitazione circa il trattamento delle cartelle di lavoro di Excel come database.

Creazione di tabelle e le cartelle di lavoro

Per creare una tabella in una cartella di lavoro di Excel, eseguire il comando CREATE TABLE:
CREATE TABLE Sheet1 (F1 char(255), F2 char(255))
Quando si esegue questo comando, viene creato un nuovo foglio di lavoro con il nome della tabella specificato nel comando. Se la cartella di lavoro per la connessione non esiste, troppo verrÓ creato.

Il Codice di esempio sezione di seguito viene illustrato come Ŕ possibile utilizzare il comando CREATE TABLE per creare una nuova cartella di lavoro e una tabella.

Dettagliate

Codice di esempio

  1. Avviare un nuovo progetto di Visual Basic .NET, Applicazione Windows .

    Per impostazione predefinita verrÓ creato Form1 .
  2. Aggiungere sei controlli RadioButton e un controllo pulsante a Form1.
  3. Selezionare tutti i controlli RadioButton e impostare la proprietÓ Size su 200,24.
  4. Scegliere codicedal menu Visualizza .
  5. Aggiungere la seguente riga all'inizio di codemodule:
    Imports System.Data.OleDb
  6. La classe del Form , inserire il codice riportato di seguito:
    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. Se necessario, modificare il percorso al database di Access di esempio Northwind, il membro m_sNorthwind nel codice.

Provalo

  1. Scegliere Altre finestredal menu Visualizza e quindi fare clic su Output per visualizzare la finestra di Output .
  2. Premere F5 per compilare ed eseguire il programma.
  3. Fare clic su Create_Workbook e quindi fare clic su Vai. I comandi CREATE TABLE per creare due nuove workbooks:C:\ExcelData1.xls e C:\ExcelData2.xls viene eseguita la routine di Create_Workbook . ExcelData1.xls contiene un sheet(table) denominato EmployeeData ed ExcelData2.xls namedInventoryData di un foglio (tabella). Le tabelle vengono riempite con i record.

    Nota: A ogni passaggio rimanente in questo test, aprire le cartelle di lavoro in Excelto esaminare i risultati. In alternativa, fare clic su Retrieve_Records per visualizzare il contenuto di tabelle nella finestra Output di Visual Studio .NET.
  4. Fare clic su Retrieve_Records e quindi fare clic su Vai. La procedura Retrieve_Records consente di estrarre i record dalle tabelle e Visualizza themin finestra di Output simile al seguente:
    EmployeeData:
    =============
    AAA       Andrew         12/4/1955
    
    InventoryData:
    ==============
    Cola           200   1.35
    Chips          550   0.89
  5. Fare clic su Add_Records e quindi fare clic su Vai. La routine Add_Records aggiunge due record per ogni tabella:
    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. Fare clic su Update_Records e quindi fare clic su Vai. La routine Update_Records consente di aggiornare due record in ogni cartella di lavoro:
    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. Fare clic su Update_Individual_Cells e quindi fare clic su Vai. La routine Update_Individual_Cells consente di modificare determinate celle di inExcelData1.xls di foglio di lavoro EmployeeData; in particolare, le celle F3, G3 e I4 vengono aggiornate.
  8. Fare clic su Use_External_Source e quindi fare clic su Vai. Quando si utilizza un'istruzione INSERT..NEL comando, la routine Use_External_Source consente di accodare i record dalla tabella Northwind źLavoratori dipendenti╗ al foglio di lavoro EmployeeData ExcelData1.xls. Quindi, Use_External_Source viene utilizzata un'istruzione SELECT...NEL comando per creare un nuovo inExcelData2.xls tabella (o il foglio) che contiene tutti i record da 'table'Products di Northwind.

    Nota: se si sceglie Use_External_Source pi¨ di una volta, l'elenco di dipendenti Ŕ accodato multipletimes perchÚ la chiave primaria non Ŕ riconosciuta o applicata.

Formattazione delle celle

Se si utilizza ADO.NET per aggiungere o aggiornare i record in una cartella di lavoro esistente, Ŕ possibile applicare la formattazione della cella in una cartella di lavoro che verrÓ utilizzato con i record nuovi o aggiornati. Quando si aggiorna un record esistente (o riga) in una cartella di lavoro, la formattazione della cella viene mantenuta. E quando si inserisce un nuovo record (o riga) in una cartella di lavoro, il nuovo record eredita la formattazione della riga precedente.

La procedura riportata di seguito viene illustrato come utilizzare la formattazione in una cartella di lavoro con il codice di esempio:
  1. Premere F5 per compilare ed eseguire l'esempio.
  2. Su Form1, fare clic su Create_Workbook e quindi fare clic su Vai.
  3. Avviare Microsoft Excel e openC:\ExcelData1.xls.
  4. Applicare uno stile di carattere in grassetto alla cella A2.
  5. Applicare il corsivo lo stile di sottolineatura e la cella B2 e aligncenter.
  6. Applicare un formato di data estesa alla cella C2.
  7. Salvare e chiudere la C:\ExcelData1.xls.
  8. Su Form1, fare clic su Add_Records e quindi fare clic su Vai.
  9. Aprire C:\ExcelData1.xls in Excel e osservare che i due newrows hanno ereditato la formattazione della prima riga.

Limitazioni

Di seguito sono elencate alcune limitazioni del Provider Jet OLE DB rispetto alle origini dati di Excel:
  • ╚ possibile inserire le formule nelle celle usingADO.NET.
  • Il Provider OLE DB Jet Ŕ in grado di fornire la chiave/indexinformation per le tabelle in una cartella di lavoro di Excel. Per questo motivo, non Ŕ possibile Collaboriamo CommandBuilder per generare automaticamente gli aggiornamenti e inserimenti per recordsin una cartella di lavoro di Excel.

Riferimenti

Per ulteriori informazioni, fare clic sui seguenti numeri di articolo per visualizzare gli articoli della Microsoft Knowledge Base:
316756 PRB: Errore si verifica quando si utilizza ADO.NET OLEDbDataAdapter per modificare la cartella di lavoro di Excel
257819 L'utilizzo di ADO con dati di Excel da Visual Basic o VBA
306022 Trasferimento dati a una cartella di lavoro di Excel tramite Visual Basic .NET
306023 Trasferimento dati a una cartella di lavoro di Excel tramite Visual C# .NET
311731 Come Query e visualizzare i dati di Excel con ASP.NET, ADO.NET e Visual Basic .NET
306572 Come Query e visualizzare i dati di Excel con ASP.NET, ADO.NET e Visual C# .NET
278973 ESEMPIO: Come utilizzare ADO per leggere e scrivere dati nelle cartelle di lavoro di Excel illustrato in ExcelADO

ProprietÓ

Identificativo articolo: 316934 - Ultima modifica: sabato 8 febbraio 2014 - Revisione: 10.0
Le informazioni in questo articolo si applicano a:
  • Microsoft Excel 2002 Standard Edition
  • Microsoft Excel 2000 Standard Edition
  • Microsoft Visual Basic .NET 2002 Standard Edition
Chiavi:á
kbhowtomaster kbmt KB316934 KbMtit
Traduzione automatica articoli
IMPORTANTE: il presente articolo Ŕ stato tradotto tramite un software di traduzione automatica di Microsoft ed eventualmente revisionato dalla community Microsoft tramite la tecnologia CTF (Community Translation Framework) o da un traduttore professionista. Microsoft offre articoli tradotti manualmente e altri tradotti automaticamente e rivisti dalla community con l?obiettivo di consentire all'utente di accedere a tutti gli articoli della Knowledge Base nella propria lingua. Tuttavia, un articolo tradotto automaticamente, anche se rivisto dalla community, non sempre Ŕ perfetto. Potrebbe contenere errori di vocabolario, di sintassi o di grammatica. Microsoft declina ogni responsabilitÓ per imprecisioni, errori o danni causati da una traduzione sbagliata o dal relativo utilizzo da parte dei clienti. Microsoft aggiorna frequentemente il software e gli strumenti di traduzione automatica per continuare a migliorare la qualitÓ della traduzione.
Clicca qui per visualizzare la versione originale in inglese dell?articolo: 316934
LE INFORMAZIONI CONTENUTE NELLA MICROSOFT KNOWLEDGE BASE SONO FORNITE SENZA GARANZIA DI ALCUN TIPO, IMPLICITA OD ESPLICITA, COMPRESA QUELLA RIGUARDO ALLA COMMERCIALIZZAZIONE E/O COMPATIBILITA' IN IMPIEGHI PARTICOLARI. L'UTENTE SI ASSUME L'INTERA RESPONSABILITA' PER L'UTILIZZO DI QUESTE INFORMAZIONI. IN NESSUN CASO MICROSOFT CORPORATION E I SUOI FORNITORI SI RENDONO RESPONSABILI PER DANNI DIRETTI, INDIRETTI O ACCIDENTALI CHE POSSANO PROVOCARE PERDITA DI DENARO O DI DATI, ANCHE SE MICROSOFT O I SUOI FORNITORI FOSSERO STATI AVVISATI. IL DOCUMENTO PUO' ESSERE COPIATO E DISTRIBUITO ALLE SEGUENTI CONDIZIONI: 1) IL TESTO DEVE ESSERE COPIATO INTEGRALMENTE E TUTTE LE PAGINE DEVONO ESSERE INCLUSE. 2) I PROGRAMMI SE PRESENTI, DEVONO ESSERE COPIATI SENZA MODIFICHE, 3) IL DOCUMENTO DEVE ESSERE DISTRIBUITO INTERAMENTE IN OGNI SUA PARTE. 4) IL DOCUMENTO NON PUO' ESSERE DISTRIBUITO A SCOPO DI LUCRO.

Invia suggerimenti

 

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