Практическое руководство. Вставка данных в документы без записи на диск
Обновлен: Ноябрь 2007
Применение |
---|
Сведения в данном разделе относятся только к указанным проектам Visual Studio Tools for Office и версиям приложений Microsoft Office. Тип проекта
Версия Microsoft Office
Дополнительные сведения см. в разделе Доступность функций по типам приложений и проектов. |
В документ решения Visual Studio Tools for Office данные можно вставлять через оперативную память, не записывая их на жесткий диск. Если необходимо отправить документ пользователю в виде массива байт по протоколу HTTP, то благодаря этой возможности можно изменить данные непосредственно в массиве байт, не создавая временный для изменения данных.
Вставка данных в документ
Загрузите документ в файл в виде массива байт.
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(); } }
Передайте объектной модели на стороне сервера вместо имени файла массив байт, после чего измените данные.
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();
Отправьте документ конечному пользователю и закройте объект 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(); } }
Компиляция кода
Для этого примера необходимо следующее:
Проект ASP.NET с кодом примера.
Документ Microsoft Office Word с именем WordApplication3.doc, хранящийся в папке C:\Documents и имеющий кэш данных.
Настройка проекта ASP.NET
В проекте ASP.NET должна быть ссылка на одну из указанных ниже сборок.
Для Word 2007 следует добавить ссылку на Microsoft.VisualStudio.Tools.Applications.ServerDocument.v9.0.dll.
Для Word 2003 следует добавить ссылку на Microsoft.VisualStudio.Tools.Applications.Runtime.dll.
В файле кода, куда копируется образец кода, должен быть оператор Imports (в Visual Basic) или using (в C#) для одного из указанных ниже пространств имен.
Для Word 2007 следует добавить оператор Imports или using для пространства имен Microsoft.VisualStudio.Tools.Applications.
Для Word 2003 следует добавить оператор Imports или using для пространства имен Microsoft.VisualStudio.Tools.Applications.Runtime.
Примечание. В Visual Studio Tools for Office имеются различные версии класса ServerDocument и классов кэшированных данных для систем 2007 и 2003. Дополнительные сведения см. в разделе Управление документами на сервере с помощью класса ServerDocument.
См. также
Задачи
Практическое руководство. Вставка данных в книгу на сервере
Практическое руководство. Извлечение кэшированных данных из рабочей книги на сервере
Практическое руководство. Изменение кэшированных данных в книге на сервере