Compartir a través de


Cómo: Insertar datos en un libro ubicado en un servidor

Actualización: noviembre 2007

Se aplica a

La información de este tema sólo se aplica a los proyectos y versiones especificados de Visual Studio Tools para Office de Microsoft Office.

Tipo de proyecto

  • Proyectos de nivel de documento

Versión de Microsoft Office

  • Excel 2007

  • Excel 2003

Para obtener más información, vea Características disponibles por aplicación y tipo de proyecto.

Se pueden insertar datos en la caché de un libro de Microsoft Office Excel que forma parte de un proyecto de nivel de documento de Visual Studio Tools para Office sin ejecutar Excel. Esto permite insertar datos en libros de Excel almacenados en un servidor.

El código para insertar los datos debe estar fuera del ensamblado del proyecto principal de Visual Studio Tools para Office asociado al documento con el que se está trabajando, por ejemplo, en una aplicación de consola o de Windows Forms.

Para obtener instrucciones paso a paso sobre cómo usar el ejemplo de código de este tema, vea Tutorial: Insertar datos en un libro de trabajo de un servidor.

Ejemplo

En el ejemplo de código siguiente se crea primero una instancia de un conjunto de datos con tipo denominada AdventureWorksLTDataSet y, a continuación, se rellena la tabla Product del conjunto de datos utilizando un adaptador de la tabla. Luego, el código utiliza la clase ServerDocument para tener acceso a una instancia rellena del mismo conjunto de datos con tipo que ya está almacenado en memoria caché en un libro de Excel y, a continuación, escribe los datos del conjunto de datos local en el conjunto de datos almacenado en memoria caché mediante el método SerializeDataInstance.

Dim productDataSet As New AdventureWorksDataSet.AdventureWorksLTDataSet()
Dim productTableAdapter As _
    New AdventureWorksDataSet.AdventureWorksLTDataSetTableAdapters.ProductTableAdapter()

Dim workbookPath As String = System.Environment.GetFolderPath( _
    Environment.SpecialFolder.MyDocuments) & _
    "\AdventureWorksReport\bin\Debug\AdventureWorksReport.xlsx"
Dim serverDocument1 As ServerDocument = Nothing

Try
    productTableAdapter.Fill(productDataSet.Product)
    Console.WriteLine("The local dataset is filled.")

    serverDocument1 = New ServerDocument(workbookPath)
    Dim dataHostItem1 As CachedDataHostItem = _
        serverDocument1.CachedData.HostItems("AdventureWorksReport.Sheet1")
    Dim dataItem1 As CachedDataItem = dataHostItem1.CachedData("AdventureWorksLTDataSet")

    ' Initialize the worksheet dataset with the local dataset.
    If dataItem1 IsNot Nothing Then
        dataItem1.SerializeDataInstance(productDataSet)
        serverDocument1.Save()
        Console.WriteLine("The data is saved to the data cache.")
    Else
        Console.WriteLine("The data object is not found in the data cache.")
    End If
Catch ex As System.Data.SqlClient.SqlException
    Console.WriteLine(ex.Message)
Catch ex As System.IO.FileNotFoundException
    Console.WriteLine("The specified workbook does not exist.")
Finally
    If Not (serverDocument1 Is Nothing) Then
        serverDocument1.Close()
    End If
    Console.WriteLine(vbLf & vbLf & "Press Enter to close the application.")
    Console.ReadLine()
End Try
AdventureWorksDataSet.AdventureWorksLTDataSet productDataSet = 
    new AdventureWorksDataSet.AdventureWorksLTDataSet();
AdventureWorksDataSet.AdventureWorksLTDataSetTableAdapters.ProductTableAdapter productTableAdapter =
    new AdventureWorksDataSet.AdventureWorksLTDataSetTableAdapters.ProductTableAdapter();

string workbookPath = System.Environment.GetFolderPath(
    Environment.SpecialFolder.MyDocuments) +
    @"\AdventureWorksReport\bin\Debug\AdventureWorksReport.xlsx";
ServerDocument serverDocument1 = null;

try
{
    productTableAdapter.Fill(productDataSet.Product);
    Console.WriteLine("The local dataset is filled.");

    serverDocument1 = new ServerDocument(workbookPath);
    CachedDataHostItem dataHostItem1 =
        serverDocument1.CachedData.HostItems["AdventureWorksReport.Sheet1"];
    CachedDataItem dataItem1 = dataHostItem1.CachedData["adventureWorksLTDataSet"];

    // Initialize the worksheet dataset with the local dataset.
    if (dataItem1 != null)
    {
        dataItem1.SerializeDataInstance(productDataSet);
        serverDocument1.Save();
        Console.WriteLine("The data is saved to the data cache.");
        Console.ReadLine();
    }
    else
    {
        Console.WriteLine("The data object is not found in the data cache.");
    }
}
catch (System.Data.SqlClient.SqlException ex)
{
    Console.WriteLine(ex.Message);
}
catch (System.IO.FileNotFoundException)
{
    Console.WriteLine("The specified workbook does not exist.");
}
finally
{
    if (serverDocument1 != null)
    {
        serverDocument1.Close();
    }

    Console.WriteLine("\n\nPress Enter to close the application.");
    Console.ReadLine();
}

Compilar el código

El ejemplo de código de este tema se ha diseñado para utilizarlo en una aplicación de consola que tenga acceso a un proyecto de bibliotecas de clase que defina un conjunto de datos con tipo y un libro de Excel que forme parte de una personalización de nivel de documento para Excel 2003 o Excel 2007. Para obtener las instrucciones paso a paso sobre cómo utilizar el código, vea Tutorial: Insertar datos en un libro de trabajo de un servidor.

Vea también

Tareas

Tutorial: Insertar datos en un libro de trabajo de un servidor

Cómo: Insertar datos en documentos sin escribir en el disco

Cómo: Recuperar los datos almacenados en la memoria caché de un libro ubicado en un servidor

Cómo: Cambiar los datos almacenados en caché en un libro ubicado en un servidor

Conceptos

Acceso a datos de documentos en el servidor

DiffGrams (ADO.NET)