2012-05-04 9 views
0

私はすでにashxファイルを作成してWebサイト上でExcel 2007を開きました。ここで.ashxを使用してブラウザでExcel 2007/2010を開く方法?

がTest.aspxというのコードである:(ポップアップを開くためのTest.htmを呼び出す)

<a href="test.htm" target="_blank">Export</a> 

ここでのTest.htm内のコードです:(Excelファイルをロードするためのiframeを使用して)

は、

void ProcessRequest(HttpContext context) 
    { 

     string filePath = "E:/test.xlsx"; 
     string filename = Path.GetFileName(filePath); 
     context.Response.Clear(); 
     context.Response.AddHeader("Content-Disposition", "inline;filename=test.xlsx"); 
     context.Response.Charset = ""; 
     context.Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"; 
     context.Response.WriteFile(filePath); 
     context.Response.Flush(); 
     context.Response.End(); 
    } 

が、Excelファイルは常にMicrosoft Excelのアプリケーションによって開かれている。ここで

<iframe src="handler1.ashx" style="height: 421px; width: 800px" ></iframe> 

はhandle.ashxにコードされています。 私を助けてください。

ありがとうございました。

答えて

0

context.Response.WriteFile(filePath); //ファイルブロックに書き出しようとしています。

前に、すべてのデータをメモリにフェッチする必要があります。 のFileStream fsの=新しいFileStreamを(:この

context.Response.Write(YourExcelData); 
+0

ハイテクラヴィを好きに変え、 は、私は以下のようにコードを編集しようとしたが、それは誤りがあるファイルオープン(オープンebcauseファイル形式やファイルextが有効でないことはできません) filePath、FileMode.Open、FileAccess.Read); バイト[] b =新しいバイト[(int)fs.Length]; fs.Read(b、0、(int)fs.Length); fs.Close(); context.Response.Write(b); –