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
Version de Microsoft Office
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
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 :
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 :
Pour Word 2007, ajoutez une instruction Imports ou using pour l'espace de noms Microsoft.VisualStudio.Tools.Applications.
Pour Word 2003, ajoutez une instruction Imports ou using pour l'espace de noms Microsoft.VisualStudio.Tools.Applications.Runtime.
Remarque : Visual Studio Tools pour Office fournit des versions différentes de la classe ServerDocument et les classes des données en mémoire cache pour les systèmes 2007 et 2003. Pour plus d'informations, consultez Gestion de documents sur un serveur à l'aide de la classe ServerDocument.
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