Partager via


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

Vous pouvez insérer des données dans un document de solution 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.

S'applique à : Les informations contenues dans cette rubrique s'appliquent aux projets de niveau document pour Word 2007 et Word 2010. Pour en savoir plus, consultez Fonctionnalités disponibles par type d'application et de projet Office.

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 les éléments suivants :

  • Un projet ASP.NET qui contient l'exemple de code. Le projet doit avoir la configuration suivante :

    • Il doit avoir une référence à l'assembly Microsoft.VisualStudio.Tools.Applications.ServerDocument.dll (si le projet cible le .NET Framework 4) ou à l'assembly Microsoft.VisualStudio.Tools.Applications.ServerDocument.v10.0.dll (si le projet cible le .NET Framework 3.5).

    • Le fichier de code dans lequel vous copiez l'exemple de code doit avoir une instruction Imports (en Visual Basic) ou using (en C#) pour l'espace de noms Microsoft.VisualStudio.Tools.Applications.

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

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