Dim people As DataTable = DirectCast(Session("people"), DataTable)
' Create excel file.
Dim ef As New ExcelFile()
Dim ws As ExcelWorksheet = ef.Worksheets.Add("DataSheet")
ws.InsertDataTable(people, "A1", True)
Response.Clear()
' Stream file to browser, in required type.
Select Case Me.RadioButtonList1.SelectedValue
Case "XLS"
Response.ContentType = "application/vnd.ms-excel"
Response.AddHeader("Content-Disposition", "attachment; filename="
& "Report.xls")
ef.SaveXls(Response.OutputStream)
Exit Select
Case "XLSX"
Response.ContentType = "application/vnd.openxmlformats"
Response.AddHeader("Content-Disposition", "attachment; filename="
& "Report.xlsx")
' With XLSX it is a bit more complicated as MS Packaging API
' can't write directly to Response.OutputStream.
' Therefore we use temporary MemoryStream.
Dim ms As New MemoryStream()
ef.SaveXlsx(ms)
ms.WriteTo(Response.OutputStream)
Exit Select
End Select
Response.End()