Hi, I want to export the results of a database query to a csv file which works fine but I also need to remove certain columns from the Datatable before the csv file is exported. Which columns that get removed depends on the value of a dropdownlist on the page named ddlReportType. My problem is that it doesn't matter which value is selected in ddlReportType and all columns get exported regardless of the value in ddlReportType. Thanks
Protected Sub btnExcelExport_Click(sender As Object, e As EventArgs)
Dim MyConnection As SqlConnection
MyConnection = New SqlConnection(ConfigurationManager.ConnectionStrings("MyConnectionString").ConnectionString)
Dim cmd As New SqlCommand("p_Report_PCARebuttal", MyConnection)
With cmd
.CommandType = CommandType.StoredProcedure
'Parameters here
cmd.Parameters.AddWithValue("@PCAID", SqlDbType.VarChar).Value = ddlPCAID.SelectedValue
cmd.Parameters.AddWithValue("@ReviewPeriodMonth", SqlDbType.VarChar).Value = ddlReviewPeriodMonth.SelectedValue
cmd.Parameters.AddWithValue("@ReviewPeriodYear", SqlDbType.VarChar).Value = ddlReviewPeriodYear.SelectedValue
End With
Dim da As New SqlDataAdapter(cmd)
Dim myDataTable As DataTable = New DataTable()
For index As Integer = myDataTable.Columns.Count - 1 To 0 Step -1
If ddlReportType.SelectedValue = "Internal" Then
'Dont remove any columns
ElseIf ddlReportType.SelectedValue = "Final" Then
myDataTable.Columns.RemoveAt(21)
myDataTable.Columns.RemoveAt(22)
myDataTable.Columns.RemoveAt(23)
myDataTable.Columns.RemoveAt(24)
ElseIf ddlReportType.SelectedValue = "Preliminary" Then
myDataTable.Columns.RemoveAt(19)
myDataTable.Columns.RemoveAt(20)
myDataTable.Columns.RemoveAt(21)
myDataTable.Columns.RemoveAt(22)
myDataTable.Columns.RemoveAt(23)
myDataTable.Columns.RemoveAt(24)
End If
Next
da.Fill(myDataTable)
Try
MyConnection.Open()
Response.Clear()
Response.ClearHeaders()
Dim writer As New CsvWriter(Response.OutputStream, ","c, Encoding.Default)
writer.WriteAll(myDataTable, True)
writer.Close()
Dim FileDate As String = Replace(FormatDateTime(Now(), DateFormat.ShortDate), "/", "")
Response.AddHeader("Content-Disposition", "attachment;filename=Call_Monitoring_" & FileDate & ".csv")
Response.ContentType = "application/vnd.ms-excel"
Response.End()
Finally
If MyConnection.State <> ConnectionState.Closed Then MyConnection.Close()
MyConnection.Dispose()
MyConnection = Nothing
myDataTable.Dispose()
myDataTable = Nothing
End Try
End Sub