{Ошибка оценки свойства.} При экспорте данных в Excel на vb.net - PullRequest
0 голосов
/ 03 октября 2011

Я использую приведенный ниже код для экспорта записей в виде данных в файл Excel с помощью EPPlus.

        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 ]

2 голосов
/ 25 сентября 2012

Удалите строку 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 голосов
/ 07 декабря 2012

Примечание:

При загрузке файла тестируется на локальном компьютере. Не использовать Response.End (); в противном случае может быть выдана ошибка.

но Добавить Response.End () когда один и тот же код развернут на сервере и протестируйте его на клиентском компьютере. В этом случае не выдается никакой ошибки.

Remove Response.Charset = ""

...