Cómo utilizar ADO.NET para recuperar y modificar registros en un libro de Excel con Visual Basic .NET

Seleccione idioma Seleccione idioma
Id. de artículo: 316934 - Ver los productos a los que se aplica este artículo
Expandir todo | Contraer todo

En esta página

Resumen

Este artículo describe cómo puede utilizar ADO.NET para recuperar datos de un libro de Microsoft Excel, modificar los datos de un libro existente o agregar datos a un nuevo libro. Para tener acceso a libros de Excel con ADO.NET, puede utilizar el proveedor OLE DB de Jet; en este artículo se proporciona la información necesaria para que pueda utilizar el proveedor OLE DB de Jet cuando Excel es el origen de datos de destino.

Cómo utilizar el proveedor OLE DB de Jet con los libros de Microsoft Excel

El motor de base de datos de Microsoft Jet puede tener acceso a los datos en otros formatos de archivo de base de datos, como libros de Excel, a través de los controladores instalables de método de acceso secuencial indizado (ISAM). Para abrir formatos externos admitidos por el proveedor OLE DB de Microsoft Jet 4.0, especifique el tipo de base de datos en las propiedades extendidas de la conexión. El proveedor OLE DB de Jet admite los siguientes tipos de base de datos para libros de Microsoft Excel:
Excel 3.0
Excel 4.0
Excel 5.0
Excel 8.0
Nota: utilice el tipo de base de datos de origen de Excel 5.0 para los libros de Microsoft Excel 5.0 y 7.0 (95) y el tipo de base de datos de origen de Excel 8.0 para Microsoft Excel 8.0 (97), 9.0 (2000) y 10.0 (2002) libros. Los ejemplos de este artículo utilizan los libros de Excel en formato de Excel 2000 y Excel 2002.

Cadena de conexión

Para tener acceso a un libro de Excel con el proveedor OLE DB de Jet, utilice una cadena de conexión que tiene la siguiente sintaxis:
Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Book1.xls;Propiedades extendidas = "Excel 8.0;HDR = YES; "
En la cadena de conexión, especifique la ruta y el nombre completo del libro en el parámetro de Origen de datos . El parámetro Propiedades extendidas puede contener dos propiedades: una propiedad para la versión ISAM y una propiedad para indicar si las tablas incluyen encabezados.

Con los libros de Excel, la primera fila de un rango es la fila de encabezado (o nombres de campo) de forma predeterminada. Si el primer rango no contiene encabezados, puede especificar HDR = NO en las propiedades extendidas en la cadena de conexión. Si especifica HDR = NO en la cadena de conexión, el proveedor OLE DB de Jet automáticamente nombra los campos para usted (F1 representa el primer campo, F2 representa el segundo campo etc.).

Tipos de datos

A diferencia de una base de datos tradicional, no hay ninguna manera directa de especificar los tipos de datos de las columnas en las tablas de Excel. En su lugar, el proveedor OLE DB examina ocho filas de una columna para estimar el tipo de datos para el campo. Puede cambiar el número de filas especificando un valor entre uno (1) y dieciséis (16) para el valor de MAXSCANROWS en las propiedades extendidas de la cadena de conexión.

Convenciones de nomenclatura de tabla

Hay varias maneras que puede hacer referencia a una tabla (o rango) en un libro de Excel:
  • Utilice el nombre de la hoja seguido de un signo de dólar (por ejemplo, [Hoja1$] o [Mi hoja de cálculo$]). Una tabla de libro en el que se hace referencia en thismanner incluye el rango utilizado todo de la hoja de cálculo.
    Select * from [Sheet1$]
  • Utilice un rango con un nombre definido (para example,[MyNamedRange]):
    select * from [MyNamedRange]
  • Utilice un rango con una dirección específica (para example,[Sheet1$A1:B10]):
    select * from [Sheet1$ A1:B10]
Nota: el signo de dólar después del nombre de la hoja de cálculo es una indicación de que la tabla existe. Si va a crear una nueva tabla, como se describe en el Crear las tablas y los libros nuevos sección de este artículo, no utilice el signo de dólar.

Cómo utilizar los libros de Excel como fuentes de datos de ADO.NET

Recuperar registros

Puede recuperar los registros de una base de datos mediante uno de estos dos enfoques en ADO.NET: con un conjunto de datos o con un objeto DataReader.

Un conjunto de datos es una memoria caché de los registros recuperados de un origen de datos. Los datos en el conjunto de datos suelen ser de una versión mucho más reducida de lo que hay en la base de datos. Sin embargo, puede trabajar con él de la misma forma que trabaja con los datos reales y estar desconectado de la base de datos real. Además de recuperación de datos, también puede utilizar un Dataset para realizar operaciones de actualización en la base de datos subyacente.

Como alternativa, puede utilizar un DataReader para recuperar una secuencia de sólo lectura, sólo hacia delante de los datos de una base de datos. Cuando utilice el programa DataReader , un aumento del rendimiento y es la sobrecarga del sistema disminuye porque sólo una fila a la vez está siempre en la memoria. Si tiene una gran cantidad de datos que desea recuperar y no piensa realizar cambios en la base de datos, DataReader es una opción mejor que un conjunto de datos.

Agregar y actualizar registros

Con ADO.NET, puede insertar y actualizar registros en un libro en uno de tres maneras:
  • Ejecuta directamente un comando para insertar o actualizar registros de uno en atime. Para ello, puede crear un objeto OLEDbCommand en su conexión y establecer su propiedad CommandText en un comando válido para insertar registros

    INSERT INTO [Sheet1$] (F1, F2) values ('111', 'ABC')
    o un comando para actualizar los registros

    UPDATE [Sheet1$] SET F2 = 'XYZ' WHERE F1 = '111'
    y, a continuación, llame al método ExecuteNonQuery .
  • Realizar cambios en un conjunto de datos que haya rellenado con una tabla o consulta de una workbookand de Excel y llamar al método Update del DataAdapter para resolver los cambios del conjunto de datos nuevo en el libro.Sin embargo, para utilizar el método Update para cambiar la resolución debe establecer commandsfor con parámetros de DataAdapter InsertCommand
    INSERT INTO [Sheet1$] (F1, F2) values (?, ?)
    y UpdateCommand:
    UPDATE [Sheet1$] SET F2 = ? WHERE F1 = ?
    Comandos parametrizado INSERT y UPDATE son necesarios porque OleDbDataAdapter no proporcionan información clave o índice para libros de Excel; sin campos de clave o índice, CommandBuilder no puede generar automáticamente thecommands para usted.
  • Exportar datos de otro origen de datos en un reglamentados de libro de Excel otro origen de datos pueden utilizarse con el proveedor OLE DB de Jet. Orígenes de datos que puede utilizar con el proveedor OLE DB Jet en este archivos de manera includeText, bases de datos de Microsoft Access y, por supuesto, otros libros de Excel.Con un solo comando INSERT INTO, puede exportar datos de otra tabla o queryinto el libro:
    INSERT INTO [Sheet1$] IN 'C:\Book1.xls' 'Excel 8.0;' SELECT * FROM MyTable"
    INSERT INTO requiere que el destino alreadyexist de tabla (o la hoja de cálculo); datos se anexan a la tabla de destino.

    También puede useSELECT.INTO para exportar la tabla o consulta a un libro:
    SELECT * INTO [Excel 8.0;Database=C:\Book1.xls].[Sheet1] FROM [MyTable]
    Al utilizar SELECT...EN, si la tabla de destino o el libro no se notexist, se creará para usted. Si la tabla ya existe antes de theSELECT.EN comando, recibirá un error.
La Código de ejemplo sección más adelante en este artículo muestra cada uno de estos métodos para agregar y actualizar registros en un libro.

Eliminar registros

Aunque el proveedor OLE DB de Jet le permite insertar y actualizar registros en un libro de Excel, no permite las operaciones de eliminación. Si intenta realizar una operación de eliminación de uno o más registros, recibirá el siguiente mensaje de error:
Este ISAM no admite la eliminación de datos en una tabla vinculada.
Esta limitación es inherente en el tratamiento de los libros de Excel como bases de datos.

Crear libros y tablas

Para crear una tabla en un libro de Excel, ejecute el comando CREATE TABLE:
CREATE TABLE Sheet1 (F1 char(255), F2 char(255))
Al ejecutar este comando, se crea una nueva hoja de cálculo con el nombre de la tabla especificada en el comando. Si el libro de la conexión no existe, también se creará.

La Código de ejemplo sección muestra cómo puede utilizar el comando CREATE TABLE para crear un nuevo libro y una tabla.

Paso a paso

Código de ejemplo

  1. Inicie un nuevo proyecto de Aplicación para Windows de Visual Basic .NET.

    De forma predeterminada, se crea Form1 .
  2. Agregar controles RadioButton de seis y un control Button a Form1.
  3. Seleccione todos los controles RadioButton y establezca la propiedad Size en 200,24.
  4. En el menú Ver , haga clic en código.
  5. Agregue la línea siguiente al principio del codemodule:
    Imports System.Data.OleDb
  6. Inserte el código siguiente en la clase del formulario :
    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 la ruta de acceso a la base de datos de Access de ejemplo, Northwind, para el miembro m_sNorthwind en el código, si es necesario.

Pruébelo

  1. En el menú Ver , elija Otras ventanasy, a continuación, haga clic en resultados para mostrar la ventana de resultados .
  2. Presione F5 para compilar y ejecutar el programa.
  3. Haga clic en Create_Workbook y, a continuación, haga clic en Ir. El procedimiento Create_Workbook ejecuta los comandos CREATE TABLE para crear dos nuevos workbooks:C:\ExcelData1.xls y C:\ExcelData2.xls. ExcelData1.xls contiene un sheet(table) denominado EmployeeData y ExcelData2.xls una namedInventoryData de hoja (tabla). Las tablas se rellenan con los registros.

    Nota: en los pasos restantes en esta prueba, abra los libros en Excelto examinan los resultados. O bien, haga clic en Retrieve_Records para ver el contenido de las tablas en la salida de ventana de Visual Studio .NET.
  4. Haga clic en Retrieve_Records y, a continuación, haga clic en Ir. El procedimiento Retrieve_Records extrae los registros de las tablas y muestra iguales en la ventana de salida similar al siguiente:
    EmployeeData:
    =============
    AAA       Andrew         12/4/1955
    
    InventoryData:
    ==============
    Cola           200   1.35
    Chips          550   0.89
  5. Haga clic en Add_Records y, a continuación, haga clic en Ir. La rutina Add_Records agrega dos registros para cada tabla:
    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. Haga clic en Update_Records y, a continuación, haga clic en Ir. La rutina Update_Records actualiza dos registros de cada libro:
    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. Haga clic en Update_Individual_Cells y, a continuación, haga clic en Ir. La rutina Update_Individual_Cells modifica celdas específicas de la inExcelData1.xls de la hoja de cálculo EmployeeData; en concreto, se actualizan las celdas F3, G3 y I4.
  8. Haga clic en Use_External_Source y, a continuación, haga clic en Ir. Cuando se utiliza una instrucción INSERT...EN el comando, la rutina Use_External_Source anexa registros de la tabla Northwind 'Empleados' en la hoja de cálculo EmployeeData ExcelData1.xls. Y Use_External_Source utiliza una instrucción SELECT...EN el comando para crear un nuevo inExcelData2.xls de tabla (u hoja) que contiene todos los registros de los table'Products de Northwind.

    Nota: si hace clic en Use_External_Source más de una vez, la lista de los empleados será anexado multipletimes porque no se reconoce o no exige la clave principal.

Formato de celdas

Si utiliza ADO.NET para agregar o actualizar registros en un libro existente, puede aplicar formato al libro que se utilizará con los registros nuevos o actualizados. Cuando se actualiza un registro existente (o fila) de un libro, se conserva el formato de celda. Y, cuando se inserta un nuevo registro (o fila) de un libro, el nuevo registro hereda el formato de la fila superior.

El siguiente procedimiento muestra cómo puede utilizar el formato de un libro con el código de ejemplo:
  1. Presione F5 para compilar y ejecutar el ejemplo.
  2. En Form1, haga clic en Create_Workbook y, a continuación, haga clic en Ir.
  3. Inicie Microsoft Excel y openC:\ExcelData1.xls.
  4. Aplicar un estilo de fuente en negrita a la celda A2.
  5. Aplicar un estilo de subrayado en la celda B2 y aligncenter cursiva.
  6. Aplicar formato de fecha larga a la celda C2.
  7. Guarde y cierre C:\ExcelData1.xls.
  8. En Form1, haga clic en Add_Records y, a continuación, haga clic en Ir.
  9. Abra C:\ExcelData1.xls en Excel y observe que los dos newrows ha heredado el formato de la primera fila.

Limitaciones

Las siguientes son algunas limitaciones del proveedor OLE DB de Jet con respecto a los orígenes de datos de Excel:
  • No puede insertar las fórmulas en las celdas usingADO.NET.
  • El proveedor OLE DB de Jet es no puede proporcionar la clave/indexinformation para las tablas en un libro de Excel. Por esta razón, no puede usar CommandBuilder para generar automáticamente las actualizaciones e inserciones de recordsin un libro de Excel.

Referencias

Para obtener información adicional, haga clic en los números de artículo siguientes para verlos en Microsoft Knowledge Base:
316756 PRB: Error se produce cuando se utiliza ADO.NET OLEDbDataAdapter para modificar el libro de Excel
257819 Cómo usar ADO con datos de Excel desde Visual Basic o desde VBA
306022 Cómo transferir datos a un libro de Excel con Visual Basic .NET
306023 Cómo transferir datos a un libro de Excel utilizando .NET Visual C#
311731 Cómo consultar y presentar datos de Excel mediante ASP.NET, ADO.NET y Visual Basic .NET
306572 Cómo consultar y presentar datos de Excel mediante ASP.NET, ADO.NET y Visual C# .NET
278973 EJEMPLO: ExcelADO muestra cómo utilizar ADO para leer y escribir datos en libros de Excel

Propiedades

Id. de artículo: 316934 - Última revisión: jueves, 6 de febrero de 2014 - Versión: 12.0
La información de este artículo se refiere a:
  • Microsoft Excel 2002 Standard Edition
  • Microsoft Excel 2000 Standard Edition
  • Microsoft Visual Basic .NET 2002 Standard Edition
Palabras clave: 
kbhowtomaster kbmt KB316934 KbMtes
Traducción automática
IMPORTANTE: Este artículo ha sido traducido por un software de traducción automática de Microsoft (http://support.microsoft.com/gp/mtdetails) en lugar de un traductor humano. Microsoft le ofrece artículos traducidos por un traductor humano y artículos traducidos automáticamente para que tenga acceso en su propio idioma a todos los artículos de nuestra base de conocimientos (Knowledge Base). Sin embargo, los artículos traducidos automáticamente pueden contener errores en el vocabulario, la sintaxis o la gramática, como los que un extranjero podría cometer al hablar el idioma. Microsoft no se hace responsable de cualquier imprecisión, error o daño ocasionado por una mala traducción del contenido o como consecuencia de su utilización por nuestros clientes. Microsoft suele actualizar el software de traducción frecuentemente.
Haga clic aquí para ver el artículo original (en inglés): 316934

Enviar comentarios

 

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