次の方法で共有


方法 : ディスクに書き込まずにドキュメントにデータを挿入する

更新 : 2007 年 11 月

対象

このトピックの情報は、指定された Visual Studio Tools for Office プロジェクトおよび Microsoft Office のバージョンにのみ適用されます。

プロジェクトの種類

  • ドキュメント レベルのプロジェクト

Microsoft Office のバージョン

  • 2007 Microsoft Office system

  • 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 プロジェクト。

  • データ キャッシュを含む、WordApplication3.doc という名前の Microsoft Office Word 文書 (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# の場合) が必要です。

参照

処理手順

方法 : サーバー上のブックにデータを挿入する

方法 : サーバー上のブックからキャッシュされたデータを取得する

方法 : サーバー上のブックでキャッシュされたデータを変更する

概念

サーバー上のドキュメント内のデータへのアクセス