Практическое руководство. Вставка данных в документы без записи на диск
В документ решения Office данные можно вставлять через оперативную память, не записывая их на жесткий диск. Если необходимо отправить документ пользователю в виде массива байт по протоколу HTTP, то благодаря этой возможности можно изменить данные непосредственно в массиве байт, не создавая временный для изменения данных.
Применение. Сведения этого раздела применяются к проектам уровня документа для Word 2007 и Word 2010. Дополнительные сведения см. в разделе Доступность функций по типам приложений Office и проектов.
Вставка данных в документ
Загрузите документ в файл в виде массива байт.
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.VisualStudio.Tools.Applications.ServerDocument.dll (если проект ориентирован на .NET Framework 4) или Microsoft.VisualStudio.Tools.Applications.ServerDocument.v10.0.dll (если проект ориентирован на .NET Framework 3.5).
В файле кода, куда копируется образец кода, должен присутствовать оператор Imports (в Visual Basic) или using (в C#) для пространства имен Microsoft.VisualStudio.Tools.Applications.
Документ Microsoft Office Word с именем WordApplication3.doc, хранящийся в папке C:\Documents и имеющий кэш данных.
См. также
Задачи
Практическое руководство. Вставка данных в книгу на сервере
Практическое руководство. Извлечение кэшированных данных из рабочей книги на сервере
Практическое руководство. Изменение кэшированных данных в книге на сервере