2011-01-23 3 views
1

次のタスクを実行します。VSTOのExcelをダウンロードするには

  1. 私は内の値を挿入します私はVSTOアプリケーションを呼び出すことだろう、私はExcelワークブック

  2. のシートの1つに、いくつかの値を挿入する必要があり、それを通してWebアプリケーションを持っていますアップロードボタンを使用してDBにアップロードする必要があります。

これまで何をしていますか?

  1. 私はWebアプリケーションソリューションを作成しました。 "C:¥Examples¥WebVSTO¥WebVSTO¥WebVSTO"

  2. 私はVSTOソリューションを作成しました。 "C:\例\ VSTO2007 \ VSTO2007 VSTO2007.xlsx \"

  3. 私は以下のようにExcelシートに値を挿入します。私は、Webアプリケーションを実行し、値があったと認められ

    System.Data.OleDb.OleDbConnection objConn = 
        new System.Data.OleDb.OleDbConnection(
        "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + 
        @"C:\Examples\VSTO2007\VSTO2007\VSTO2007.xlsx" + 
        ";Extended Properties=Excel 8.0;"); 
    
    objConn.Open(); 
    
    System.Data.OleDb.OleDbCommand objCmd = new System.Data.OleDb.OleDbCommand(); 
    
    objCmd.Connection = objConn; 
    
    objCmd.CommandText = "Insert into [Sheet1$]" + " values ('Test')"; 
    
    objCmd.ExecuteNonQuery(); 
    
    objConn.Close(); 
    
  4. Excelに挿入されます。

  5. VSTOソリューションを実行して値をアップロードし、DBに値をアップロードしました。

問題

  1. Excelは(のみVSTO全体溶液をエクセルではなく)別のフォルダに配置されます。 Webアプリケーションのダウンロードボタンを押すと、Excelがクライアントの場所にダウンロードされます。

私は上記の問題に直面しています。私はどのように対応しますか。

私に教えてください。

ありがとうございます。

+0

申し訳ありませんが、あなたはExcelファイルをダウンロードさせようとしていますか?どのようにダウンロードをセットアップし、何が動作していないのですか?または、Excelファイルを更新できないという問題がありますか?また、VSTOを使用してWebアプリケーションからExcelスプレッドシートを修正しています。サーバコンテキストでのVSTOの実行が実際にサポートされているかどうかわからないため、問題が発生する可能性があります。 – Rup

+0

1.はい私はユーザーがExcelファイルをダウンロードできるようにします。 2.私はダウンロードをセットアップしていない、問題はここにある。 VSTOアプリケーションは、例えば、 c:\ VSTO.slnは、3つのExcelシート(すべて1つの単一ブック)とそれをコーディングして構成されています。 4.私はワークブックをc:\ DownloadExcelに配置する予定です。 5.ユーザーはc:\ DownloadExcelにあるExcelをダウンロードする必要があります。 – cmrhema

+0

ちょっと不思議なことに、VSTOが必要なのはなぜですか? Webアプリケーションがワークシート内のデータをプッシュし、VSTOがワークシートをDBにプッシュする場合、WebアプリケーションをDBと直接連携させるのはいかがですか? – Mathias

答えて

1

私が正しく理解していれば、質問はかなり一般的な質問です。「Webアプリケーションフォルダにないファイルをダウンロードするにはどうすればよいですか?

簡単な方法は、バイナリコードをレスポンスストリームに書き込み、いくつかのヘッダーを設定することです。

HttpResponse.Clear(); 
HttpResponse.BufferOutput = false; 
HttpResponse.ContentType = "application/excel"; 
HttpResponse.AddHeader("content-disposition", "filename=VSTO2007.xlsx"); 

FileStream sourceFile = new FileStream(@"C:\Examples\VSTO2007\VSTO2007\VSTO2007.xlsx", FileMode.Open); 
long FileSize; 
FileSize = sourceFile.Length; 
byte[] getContent = new byte[(int)FileSize]; 
sourceFile.Read(getContent, 0, (int)sourceFile.Length); 
sourceFile.Close(); 

Response.BinaryWrite(getContent); 

私はテストしませんでしたが、動作するはずです。

+0

バリアントに保存されている上記の方法を使用してワークシートに値を挿入することはできますか? – cmrhema

+0

あなたは何を言っているのかはっきりしていませんが、この方法ではファイルをハードディスクに保存しておくことができます今はFileStreamを開いて読むことができます。それ以前にOleDbConnectionを閉じると、ファイルが更新され、新しい値とともに送信されます。 – Variant

+0

私は自分自身の道を進んだ。それはあまりにも愚かな理由で、私はASPNETの権利を与えていなかった。私は自分のフォルダを右クリックし、共有とセキュリティタブに行き、権利を与えなければならなかった。 – cmrhema

関連する問題