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


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

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

Применение. Сведения этого раздела применяются к проектам уровня документа для Word 2007 и Word 2010. Дополнительные сведения см. в разделе Доступность функций по типам приложений Office и проектов.

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

  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.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 и имеющий кэш данных.

См. также

Задачи

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

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

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

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

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