Поделиться через


Практическое руководство. Вставка данных в документы без записи на диск

Обновлен: Ноябрь 2007

Применение

Сведения в данном разделе относятся только к указанным проектам Visual Studio Tools for Office и версиям приложений Microsoft Office.

Тип проекта

  • Проекты уровня документа

Версия Microsoft Office

  • Выпуск 2007 системы Microsoft Office

  • Microsoft Office 2003

Дополнительные сведения см. в разделе Доступность функций по типам приложений и проектов.

В документ решения Visual Studio Tools for Office данные можно вставлять через оперативную память, не записывая их на жесткий диск. Если необходимо отправить документ пользователю в виде массива байт по протоколу HTTP, то благодаря этой возможности можно изменить данные непосредственно в массиве байт, не создавая временный для изменения данных.

Вставка данных в документ

  1. Загрузите документ в файл в виде массива байт.

    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. Передайте объектной модели на стороне сервера вместо имени файла массив байт, после чего измените данные.

    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. Отправьте документ конечному пользователю и закройте объект 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#) для одного из указанных ниже пространств имен.

См. также

Задачи

Практическое руководство. Вставка данных в книгу на сервере

Практическое руководство. Извлечение кэшированных данных из рабочей книги на сервере

Практическое руководство. Изменение кэшированных данных в книге на сервере

Основные понятия

Доступ к данным в документах на сервере