Excel ファイルを ASP.Net Web ページのクライアントに送信しようとしていますが、うまくいきません。
ユーザーがボタンをクリックすると、サーバー側データベースの一部のデータがフォーマットされ、Excel ファイルに入れられてユーザーに送信されます (直接ダウンロードとして)。
送信部分を除いて、すべてがうまく機能し、どんな助けも大歓迎です。
これが私が現在使用しているコードです(クライアント側):
var dataAjax = {};
$.ajax({
async: false,
type: "POST",
url: "Default.aspx/BuildExcelFile",
contentType: "application/json",
data: JSON.stringify(dataAjax),
dataType: "text",
success: function(html) {
//alert(html);
},
error: function(request, status, error) {
alert("An error occurred : [" + error + "]");
}
});
そしてサーバー側のコード:
<WebMethod()> _
Public Shared Function BuildExcelFile() As String
Dim localExcelPath = "C:\temp1111.xlsx"
'Build the excel file here...
'...
'Delete the old version of the Excel file
System.IO.File.Delete(localExcelPath)
'Save the Excel File locally
xWorkSheet.SaveAs(localExcelPath)
xWorkBook.Close()
exc.Quit()
'The generated excel is valid, can be opened on the server just fine
'Send the excel file to the client
'This part is not working! :(
System.Web.HttpContext.Current.Response.Clear()
System.Web.HttpContext.Current.Response.ContentType = "MS-Excel/xls"
System.Web.HttpContext.Current.Response.AppendHeader("Content-Disposition", "attachment; filename=" & System.IO.Path.GetFileName(localExcelPath))
System.Web.HttpContext.Current.Response.TransmitFile(localExcelPath)
System.Web.HttpContext.Current.Response.End()
Return "Success"
End Function
の値を確認しようとすると、このエラーが発生しますCurrent.Response
Response: Cannot refer to an instance member of a class from within a shared method or shared member initializer without an explicit instance of the class.
また、呼び出しを外すと、ajax で関数Response.End()
の html 変数にデータが受け取られます。success
ただし、テキストとして受信するのではなく、ファイルをダウンロードしたい...
Response.End() を保持すると、Internal Server Error
.
Webmethod が共有されているために機能していませんか? ここで何が起こっているのか手がかりはありますか?この問題を解決するにはどうすればよいですか?
編集:
問題があれば、.Net 3.5を使用しています
私はMVCを使用していません