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
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(); } }
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();
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