response.end() to avoid HTML in the Excel document, I get an exception:
-----
An attempt to log the following error
failed:System.Threading.ThreadAbortException: Thread was being aborted.
at System.Threading.Thread.AbortInternal()
at System.Threading.Thread.Abort(Object stateInfo)
at System.Web.HttpResponse.End()
------
Here's my code
Public Sub btnShasExcel_OnClick(ByVal sender As System.Object, ByVal e As
System.EventArgs)
Try
Dim ds As New DataSet
Dim da As New SqlDataAdapter(Session("savedShasSql"),
connection1.conString)
da.Fill(ds, "ShasExcel")
Dim dt As DataTable = ds.Tables("ShasExcel")
'This code was dumping html into the spreadsheet
'Response.ContentType = "application/ms-excel"
'Response.AddHeader("Content-Disposition", "inline;filename=shas.xls")
'Response.Write(ConvertDtToTDF(dt))
'This is the new code
Response.ContentType = "application/ms-excel"
Response.AddHeader("Content-Disposition", "inline;filename=shas.xls")
Response.Clear()
Response.Write(ConvertDtToTDF(dt))
Response.End()
Catch ex As Exception
ExceptionManager.Publish(ex)
End Try
End Sub
Private Function ConvertDtToTDF(ByVal dt As DataTable) As String
Try
Dim dr As DataRow, ary() As Object, i As Integer
Dim iCol As Integer
'Output Column Headers
For iCol = 0 To dt.Columns.Count - 1
Response.Write(dt.Columns(iCol).ToString & vbTab)
Next
Response.Write(vbCrLf)
'Output Data
For Each dr In dt.Rows
ary = dr.ItemArray
For i = 0 To UBound(ary)
Response.Write(ary(i).ToString & vbTab)
Next
Response.Write(vbCrLf)
Next
Catch ex As Exception
ExceptionManager.Publish(ex)
End Try
End Function
_____
DC GGringo,
you might want to replace Response.End() with Response.Flush.
Let me know if this works for you.
Daniel Walzenbach
"DC Gringo" <dcgringo@.visiontechnology.net> schrieb im Newsbeitrag
news:OPF77XjjFHA.3348@.tk2msftngp13.phx.gbl...
>I have some code that creates and writes to an excel file. Right as I
>response.end() to avoid HTML in the Excel document, I get an exception:
> -----
> An attempt to log the following error
> failed:System.Threading.ThreadAbortException: Thread was being aborted.
> at System.Threading.Thread.AbortInternal()
> at System.Threading.Thread.Abort(Object stateInfo)
> at System.Web.HttpResponse.End()
> ------
> Here's my code
>
> Public Sub btnShasExcel_OnClick(ByVal sender As System.Object, ByVal e As
> System.EventArgs)
> Try
> Dim ds As New DataSet
> Dim da As New SqlDataAdapter(Session("savedShasSql"),
> connection1.conString)
> da.Fill(ds, "ShasExcel")
> Dim dt As DataTable = ds.Tables("ShasExcel")
> 'This code was dumping html into the spreadsheet
> 'Response.ContentType = "application/ms-excel"
> 'Response.AddHeader("Content-Disposition", "inline;filename=shas.xls")
> 'Response.Write(ConvertDtToTDF(dt))
> 'This is the new code
> Response.ContentType = "application/ms-excel"
> Response.AddHeader("Content-Disposition", "inline;filename=shas.xls")
> Response.Clear()
> Response.Write(ConvertDtToTDF(dt))
> Response.End()
> Catch ex As Exception
> ExceptionManager.Publish(ex)
> End Try
> End Sub
>
> Private Function ConvertDtToTDF(ByVal dt As DataTable) As String
> Try
> Dim dr As DataRow, ary() As Object, i As Integer
> Dim iCol As Integer
> 'Output Column Headers
> For iCol = 0 To dt.Columns.Count - 1
> Response.Write(dt.Columns(iCol).ToString & vbTab)
> Next
> Response.Write(vbCrLf)
> 'Output Data
> For Each dr In dt.Rows
> ary = dr.ItemArray
> For i = 0 To UBound(ary)
> Response.Write(ary(i).ToString & vbTab)
> Next
> Response.Write(vbCrLf)
> Next
> Catch ex As Exception
> ExceptionManager.Publish(ex)
> End Try
> End Function
> _____
> DC G
Daniel,
Sorry, it didn't work. I didn't get the error, but the HTML returned to the
Excel file. Putting the response.flush() after the response.close() or vice
versa still generated the error.
_____
DC G
"Daniel Walzenbach" <daniel.walzenbach@.newsgroup.nospam> wrote in message
news:%23u1QBEkjFHA.1148@.TK2MSFTNGP12.phx.gbl...
> Gringo,
> you might want to replace Response.End() with Response.Flush.
> Let me know if this works for you.
> Daniel Walzenbach
>
> "DC Gringo" <dcgringo@.visiontechnology.net> schrieb im Newsbeitrag
> news:OPF77XjjFHA.3348@.tk2msftngp13.phx.gbl...
>>I have some code that creates and writes to an excel file. Right as I
>>response.end() to avoid HTML in the Excel document, I get an exception:
>>
>> -----
>>
>> An attempt to log the following error
>> failed:System.Threading.ThreadAbortException: Thread was being aborted.
>> at System.Threading.Thread.AbortInternal()
>> at System.Threading.Thread.Abort(Object stateInfo)
>> at System.Web.HttpResponse.End()
>>
>> ------
>>
>> Here's my code
>>
>>
>> Public Sub btnShasExcel_OnClick(ByVal sender As System.Object, ByVal e As
>> System.EventArgs)
>>
>> Try
>> Dim ds As New DataSet
>> Dim da As New SqlDataAdapter(Session("savedShasSql"),
>> connection1.conString)
>> da.Fill(ds, "ShasExcel")
>> Dim dt As DataTable = ds.Tables("ShasExcel")
>>
>> 'This code was dumping html into the spreadsheet
>> 'Response.ContentType = "application/ms-excel"
>> 'Response.AddHeader("Content-Disposition", "inline;filename=shas.xls")
>> 'Response.Write(ConvertDtToTDF(dt))
>>
>> 'This is the new code
>> Response.ContentType = "application/ms-excel"
>> Response.AddHeader("Content-Disposition", "inline;filename=shas.xls")
>> Response.Clear()
>> Response.Write(ConvertDtToTDF(dt))
>> Response.End()
>>
>> Catch ex As Exception
>> ExceptionManager.Publish(ex)
>> End Try
>>
>> End Sub
>>
>>
>>
>> Private Function ConvertDtToTDF(ByVal dt As DataTable) As String
>>
>> Try
>>
>> Dim dr As DataRow, ary() As Object, i As Integer
>> Dim iCol As Integer
>>
>> 'Output Column Headers
>> For iCol = 0 To dt.Columns.Count - 1
>> Response.Write(dt.Columns(iCol).ToString & vbTab)
>> Next
>>
>> Response.Write(vbCrLf)
>>
>> 'Output Data
>>
>> For Each dr In dt.Rows
>> ary = dr.ItemArray
>> For i = 0 To UBound(ary)
>> Response.Write(ary(i).ToString & vbTab)
>> Next
>> Response.Write(vbCrLf)
>> Next
>>
>> Catch ex As Exception
>> ExceptionManager.Publish(ex)
>>
>> End Try
>>
>> End Function
>>
>> _____
>> DC G
>>
Yes, this is the way ASP.NET attempts to insure that the processing halts
for the current request -- they throw a ThreadAbortException. Sort of odd,
eh? Well, the magic with a ThreadAbortException is that if you put a try/catch
around it, it still gets thrown outside your catch -- they're doing this
so you don't catch their attempt to terminate the request. So, in short,
it's just how it works.
-Brock
DevelopMentor
http://staff.develop.com/ballen
> I have some code that creates and writes to an excel file. Right as I
> response.end() to avoid HTML in the Excel document, I get an
> exception:
> -----
> An attempt to log the following error
> failed:System.Threading.ThreadAbortException: Thread was being
> aborted.
> at System.Threading.Thread.AbortInternal()
> at System.Threading.Thread.Abort(Object stateInfo)
> at System.Web.HttpResponse.End()
> ------
> Here's my code
> Public Sub btnShasExcel_OnClick(ByVal sender As System.Object, ByVal e
> As System.EventArgs)
> Try
> Dim ds As New DataSet
> Dim da As New SqlDataAdapter(Session("savedShasSql"),
> connection1.conString)
> da.Fill(ds, "ShasExcel")
> Dim dt As DataTable = ds.Tables("ShasExcel")
> 'This code was dumping html into the spreadsheet
> 'Response.ContentType = "application/ms-excel"
> 'Response.AddHeader("Content-Disposition",
> "inline;filename=shas.xls")
> 'Response.Write(ConvertDtToTDF(dt))
> 'This is the new code
> Response.ContentType = "application/ms-excel"
> Response.AddHeader("Content-Disposition",
> "inline;filename=shas.xls")
> Response.Clear()
> Response.Write(ConvertDtToTDF(dt))
> Response.End()
> Catch ex As Exception
> ExceptionManager.Publish(ex)
> End Try
> End Sub
> Private Function ConvertDtToTDF(ByVal dt As DataTable) As String
> Try
> Dim dr As DataRow, ary() As Object, i As Integer
> Dim iCol As Integer
> 'Output Column Headers
> For iCol = 0 To dt.Columns.Count - 1
> Response.Write(dt.Columns(iCol).ToString & vbTab)
> Next
> Response.Write(vbCrLf)
> 'Output Data
> For Each dr In dt.Rows
> ary = dr.ItemArray
> For i = 0 To UBound(ary)
> Response.Write(ary(i).ToString & vbTab)
> Next
> Response.Write(vbCrLf)
> Next
> Catch ex As Exception
> ExceptionManager.Publish(ex)
> End Try
> End Function
> _____
> DC G
a Response.End() does a flush, then kills the current thread (to stop
continued processing). ignore the thread abort in your catch
-- bruce (sqlwork.com)
"DC Gringo" <dcgringo@.visiontechnology.net> wrote in message
news:OPF77XjjFHA.3348@.tk2msftngp13.phx.gbl...
>I have some code that creates and writes to an excel file. Right as I
>response.end() to avoid HTML in the Excel document, I get an exception:
> -----
> An attempt to log the following error
> failed:System.Threading.ThreadAbortException: Thread was being aborted.
> at System.Threading.Thread.AbortInternal()
> at System.Threading.Thread.Abort(Object stateInfo)
> at System.Web.HttpResponse.End()
> ------
> Here's my code
>
> Public Sub btnShasExcel_OnClick(ByVal sender As System.Object, ByVal e As
> System.EventArgs)
> Try
> Dim ds As New DataSet
> Dim da As New SqlDataAdapter(Session("savedShasSql"),
> connection1.conString)
> da.Fill(ds, "ShasExcel")
> Dim dt As DataTable = ds.Tables("ShasExcel")
> 'This code was dumping html into the spreadsheet
> 'Response.ContentType = "application/ms-excel"
> 'Response.AddHeader("Content-Disposition", "inline;filename=shas.xls")
> 'Response.Write(ConvertDtToTDF(dt))
> 'This is the new code
> Response.ContentType = "application/ms-excel"
> Response.AddHeader("Content-Disposition", "inline;filename=shas.xls")
> Response.Clear()
> Response.Write(ConvertDtToTDF(dt))
> Response.End()
> Catch ex As Exception
> ExceptionManager.Publish(ex)
> End Try
> End Sub
>
> Private Function ConvertDtToTDF(ByVal dt As DataTable) As String
> Try
> Dim dr As DataRow, ary() As Object, i As Integer
> Dim iCol As Integer
> 'Output Column Headers
> For iCol = 0 To dt.Columns.Count - 1
> Response.Write(dt.Columns(iCol).ToString & vbTab)
> Next
> Response.Write(vbCrLf)
> 'Output Data
> For Each dr In dt.Rows
> ary = dr.ItemArray
> For i = 0 To UBound(ary)
> Response.Write(ary(i).ToString & vbTab)
> Next
> Response.Write(vbCrLf)
> Next
> Catch ex As Exception
> ExceptionManager.Publish(ex)
> End Try
> End Function
> _____
> DC G
0 comments:
Post a Comment