我使用下面的代码将数据表中的记录导出到使用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
你知道是什么引起的吗?
删除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"
备注:
在本机测试下载文件时不要使用Response.End ();否则会抛出错误。
但添加Response.End ()当在服务器中部署相同的代码并在客户机上测试相同的代码时。在这种情况下不会抛出错误。
消除反应。Charset = " "