0

以下のコードを使用して、EPPlus を使用してデータテーブルのレコードを Excel ファイルにエクスポートしています。

        Dim excelPackage = New ExcelPackage
        Dim excelWorksheet = excelPackage.Workbook.Worksheets.Add("DemoPage")
        excelWorksheet.Cells("A1").LoadFromDataTable(dt, True)

        Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
        Response.AddHeader("content-disposition", "attachment;  filename=ExcelDemo.xlsx")
        Response.BinaryWrite(excelPackage.GetAsByteArray())
        Response.End()

ただし、コード ブロックを確認した後、Response.End() で、{プロパティの評価に失敗しました。}という例外が発生します。

更新:
エラー ログは次のとおりです。

ERROR: System.Threading.ThreadAbortException: Thread was being aborted.
   at System.Threading.Thread.AbortInternal()
   at System.Threading.Thread.Abort(Object stateInfo)
   at System.Web.HttpResponse.End()
   at Reporting.Page_Load(Object sender, EventArgs e) in C:\Reporting.aspx.vb:line 38

何がこれを引き起こしているのでしょうか?

4

2 に答える 2

2

Response.End()行を削除し、次のコードを記述します。

HttpContext.Current.Response.Clear()
Response.ClearHeaders()
Response.Buffer = True

Dim excelPackage = New ExcelPackage       
Dim excelWorksheet = excelPackage.Workbook.Worksheets.Add("DemoPage")              

excelWorksheet.Cells("A1").LoadFromDataTable(dt, True)        
Response.ContentType = "application/vnd.openxmlformats- 

officedocument.spreadsheetml.sheet"         
Response.AddHeader("content-disposition", "attachment;  filename=ExcelDemo.xlsx")  
Response.Charset = ""
Response.BinaryWrite(excelPackage.GetAsByteArray())  
Response.Flush()
Response.Close()
excelPackage.close() or
excelPackage=nothing or excelPackage.dispose() whichever is fit.

hope you will not get "Property Evaluation Error"
于 2012-09-25T10:18:33.010 に答える
0

ノート:

ファイルのダウンロードがローカル マシンでテストされる場合は、 Response.End() を使用しないでください。そうしないと、エラーがスローされる可能性があります。

ただし、同じコードがサーバーにデプロイされているときに Response.End() を追加し、クライアント マシンから同じコードをテストします。この場合、エラーはスローされません。

Response.Charset="" を削除

于 2012-12-07T18:31:25.660 に答える