SaveExcelToResponseメソッドを呼び出すと後続のサーバー処理が実行されない
対象製品
SPREAD for ASP.NET 8.0J
状況
修正済み
詳細
SaveExcelToResponseメソッドを呼び出すと後続のサーバー処理が実行されません。
【再現コード】
Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load
If IsPostBack Then Return
FpSpread1.ActiveSheetView.SetValue(0, 0, "abc")
End Sub
Protected Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
FpSpread1.SaveExcelToResponse("Book1.xlsx", FarPoint.Excel.ExcelSaveFlags.UseOOXMLFormat)
System.Diagnostics.Debug.WriteLine("処理A")
End Sub
【再現手順】
1.プロジェクトをデバッグモードで実行します
2.Button1をクリックします
-- ファイルはエクスポートされますがVisual Studioの出力ウィンドウに「処理A」と出力されません
【再現コード】
Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load
If IsPostBack Then Return
FpSpread1.ActiveSheetView.SetValue(0, 0, "abc")
End Sub
Protected Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
FpSpread1.SaveExcelToResponse("Book1.xlsx", FarPoint.Excel.ExcelSaveFlags.UseOOXMLFormat)
System.Diagnostics.Debug.WriteLine("処理A")
End Sub
【再現手順】
1.プロジェクトをデバッグモードで実行します
2.Button1をクリックします
-- ファイルはエクスポートされますがVisual Studioの出力ウィンドウに「処理A」と出力されません
回避方法
Service Pack 4(v8.0.4006.2010)で修正済み。
Service Pack 4(v8.0.4006.2010)より前のバージョンでは次の回避方法が有効です。
------------------------------------------
エクスポートロジックを独自に記述して回避します。
Protected Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
' エクスポートロジックを独自に記述
Dim ms As New IO.MemoryStream()
FpSpread1.SaveExcel(ms, FarPoint.Excel.ExcelSaveFlags.UseOOXMLFormat)
ms.Seek(0, IO.SeekOrigin.Begin)
Dim fileName As String = "Book1.xlsx"
Dim rp As HttpResponse = HttpContext.Current.Response
rp.ClearHeaders()
rp.ClearContent()
rp.AddHeader("Content-Disposition", "attachment; filename=" + fileName)
rp.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
rp.BinaryWrite(ms.ToArray())
Try
rp.Flush()
Catch ex As Exception
End Try
HttpContext.Current.ApplicationInstance.CompleteRequest()
rp.Close()
System.Diagnostics.Debug.WriteLine("処理A")
End Sub
Service Pack 4(v8.0.4006.2010)より前のバージョンでは次の回避方法が有効です。
------------------------------------------
エクスポートロジックを独自に記述して回避します。
Protected Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
' エクスポートロジックを独自に記述
Dim ms As New IO.MemoryStream()
FpSpread1.SaveExcel(ms, FarPoint.Excel.ExcelSaveFlags.UseOOXMLFormat)
ms.Seek(0, IO.SeekOrigin.Begin)
Dim fileName As String = "Book1.xlsx"
Dim rp As HttpResponse = HttpContext.Current.Response
rp.ClearHeaders()
rp.ClearContent()
rp.AddHeader("Content-Disposition", "attachment; filename=" + fileName)
rp.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
rp.BinaryWrite(ms.ToArray())
Try
rp.Flush()
Catch ex As Exception
End Try
HttpContext.Current.ApplicationInstance.CompleteRequest()
rp.Close()
System.Diagnostics.Debug.WriteLine("処理A")
End Sub