Partager via


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

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

  • Version 2007 de Microsoft Office System

  • Microsoft Office 2003

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

Vous pouvez insérer des données dans un document de solution Visual Studio Tools pour Office en mémoire, afin que les données ne soient pas écrites sur le disque dur. Si vous devez envoyer à un utilisateur un document sous forme de tableau d'octets à l'aide du protocole HTTP, vous pouvez utiliser cette fonction pour modifier les données directement dans le tableau d'octets au lieu de créer un fichier temporaire dans lequel modifier les données.

Pour insérer des données dans un document

  1. Chargez le document dans la mémoire comme un tableau d'octets.

    Dim name As String = "C:\Documents\WordApplication3.doc"
    Dim fileStream As System.IO.FileStream = Nothing
    Dim bytes() As Byte = Nothing
    
    Try
        fileStream = New System.IO.FileStream( _
            name, System.IO.FileMode.Open, System.IO.FileAccess.Read)
        ReDim bytes(fileStream.Length)
        fileStream.Read(bytes, 0, fileStream.Length)
    
    Finally
        If Not fileStream Is Nothing Then
            fileStream.Close()
        End If
    End Try
    
    string name = @"C:\Documents\WordApplication3.doc";
    System.IO.FileStream fileStream = null;
    byte[] bytes = null;
    
    try
    {
        fileStream = new System.IO.FileStream(
            name, System.IO.FileMode.Open, System.IO.FileAccess.Read);
        bytes = new byte[(int)fileStream.Length];
        fileStream.Read(bytes, 0, (int)fileStream.Length);
    }
    finally
    {
        if (fileStream != null)
        {
            fileStream.Close();
        }
    }
    
  2. Passez le tableau d'octets au modèle d'objet côté serveur au lieu d'un nom de fichier, puis exécutez la manipulation de données.

    Dim sd1 As ServerDocument = Nothing
    Try
        sd1 = New ServerDocument(bytes, name)
    
        ' Your data manipulation code goes here. 
    
        sd1.Save()
    
    ServerDocument sd1 = null;
    try
    {
        sd1 = new ServerDocument(bytes, name);
    
        // Your data manipulation code goes here. 
    
        sd1.Save();
    
  3. Envoyez le document à l'utilisateur final et fermez ServerDocument.

        ' If you have a Word document, use the MIME string:
        Response.ContentType = "application/msword"
    
        ' If you have an Excel workbook, use the MIME string:
        'Response.ContentType = "application/vnd.ms-excel"
    
        Response.AddHeader("Content-disposition", "filename=" + name)
        Response.BinaryWrite(sd1.Document)
    
    Finally
        If Not sd1 Is Nothing Then
            sd1.Close()
        End If
    End Try
    
        // If you have a Word document, use the MIME string:
        Response.ContentType = "application/msword";
    
        // If you have an Excel workbook, use the MIME string:
        //Response.ContentType = "application/vnd.ms-excel";
    
        Response.AddHeader("Content-disposition", "filename=" + name);
        Response.BinaryWrite(sd1.Document);
    }
    finally
    {
        if (sd1 != null)
        {
            sd1.Close();
        }
    }
    

Compilation du code

Cet exemple nécessite :

  • Un projet ASP.NET qui contient l'exemple de code.

  • un document Microsoft Office Word nommé WordApplication3.doc disposant d'un cache de données et situé dans le dossier C:\Documents.

Configuration du projet ASP.NET

Le projet ASP.NET doit posséder une référence à l'un des assemblys suivants :

  • Pour Word 2007, ajoutez une référence à Microsoft.VisualStudio.Tools.Applications.ServerDocument.v9.0.dll.

  • Pour Word 2003, ajoutez une référence à Microsoft.VisualStudio.Tools.Applications.Runtime.dll.

Le fichier de code dans lequel vous copiez l'exemple de code doit contenir une instruction Imports (en Visual Basic) ou using (en C#) pour l'un des espaces de noms suivants :

Voir aussi

Tâches

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

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