2011-10-03 5 views
0

EPPlus를 사용하여 데이터 테이블의 레코드를 Excel 파일로 내보내려면 아래 코드를 사용하고 있습니다.{특성 평가에 실패했습니다.} vb.net에서 데이터를 내보낼 때

 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 

어떤 원인 일 수 있습니까?

답변

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" 
0

참고 : 파일을 다운로드하는 것은 로컬 컴퓨터에서 테스트

가) ( 으로 Response.End를 사용하지 말라; 그렇지 않으면 오류가 발생할 수 있습니다.

동일한 코드가 서버에 배포되고 클라이언트 컴퓨터에서 동일한 코드가 테스트되면 Response.End() 을 추가하십시오. 이 경우 오류가 발생하지 않습니다.

응답 제거 Response.Charset = ""

관련 문제