Partager via


Comment : insérer des données dans un classeur sur un serveur

Mise à jour : novembre 2007

S'applique à

Les informations de cette rubrique s'appliquent uniquement aux projets Visual Studio Tools pour Office et versions de Microsoft Office spécifiés.

Type de projet

  • Projets au niveau du document

Version de Microsoft Office

  • Excel 2007

  • Excel 2003

Pour plus d'informations, consultez Fonctionnalités disponibles par type d'application et de projet.

Vous pouvez insérer des données dans le cache d'un classeur Microsoft Office Excel faisant partie d'un projet Visual Studio Tools pour Office au niveau du document sans exécuter Excel. Cela permet d'insérer des données dans des classeurs Excel stockés sur un serveur.

Le code permettant d'insérer les données doit se trouver en dehors du principal assembly de projet Visual Studio Tools pour Office associé au document avec lequel vous travaillez, par exemple dans une application Console ou Windows Forms.

Pour obtenir des instructions pas à pas pour l'utilisation des exemples de code de cette rubrique, consultez Procédure pas à pas : insertion de données dans un classeur sur un serveur.

Exemple

L'exemple de code suivant crée tout d'abord une instance d'un groupe de données typé nommée AdventureWorksLTDataSet, puis remplit la table Product dans le groupe de données à l'aide d'un adaptateur de table. Le code utilise ensuite la classe ServerDocument pour accéder à une instance du même groupe de données typé mis en cache dans un classeur Excel, puis écrit les données du groupe de données local dans le groupe de données mis en cache à l'aide de la méthode 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();
}

Compilation du code

L'exemple de code de cette rubrique est conçu pour être utilisé dans une application Console qui a accès à un projet Bibliothèque de classes qui définit un groupe de données typé, et un classeur Excel qui fait partie d'une personnalisation au niveau du document pour Excel 2003 ou Excel 2007. Pour des instructions pas à pas sur l'utilisation du code, consultez Procédure pas à pas : insertion de données dans un classeur sur un serveur.

Voir aussi

Tâches

Procédure pas à pas : insertion de données dans un classeur sur un serveur

Comment : insérer des données dans des documents sans écrire sur le disque

Comment : récupérer des données mises en cache d'un classeur sur un serveur

Comment : modifier les données mises en cache dans un classeur sur un serveur

Concepts

Accès aux données des documents sur le serveur

DiffGrams (ADO.NET)