次のコードを使用して HTML テーブルを作成し、それを XLS ファイルに保存してから Excel で開きます。
public void ExportToSpreadsheet(DataTable table, string name)
{
HttpContext context = HttpContext.Current;
context.Response.Clear();
context.Response.Write("<table border=1>");
context.Response.Write(Environment.NewLine);
foreach (DataRow row in table.Rows)
{
context.Response.Write("<tr>");
context.Response.Write("<td width=47>" + row[1].ToString().Replace(";", string.Empty) + "</td>");
context.Response.Write("<td width=47>" + row[2].ToString().Replace(";", string.Empty) + "</td>");
context.Response.Write("<td width=110>" + row[3].ToString().Replace(";", string.Empty) + "</td>");
context.Response.Write("<td width=75>" + row[4].ToString().Replace(";", string.Empty) + "</td>");
context.Response.Write("<td width=285>" + row[5].ToString().Replace(";", string.Empty) + "</td>");
context.Response.Write("<td width=61>" + row[6].ToString().Replace(";", string.Empty) + "</td>");
context.Response.Write("</tr>");
context.Response.Write(Environment.NewLine);
}
context.Response.Write("</table>");
context.Response.ContentType = "application/vnd.ms-excel";
context.Response.AppendHeader("Content-Disposition", "attachment; filename=" + name + ".xls");
context.Response.End();
}
このコードはうまく機能しますが、ボタンから呼び出されます。レポートの実行後にそのボタンが存在するページの情報を更新したいのですが、ExportToSpreadsheet メソッドの後のコードは完全に無視されます。
だから私がするとき:
ExportToSpreadsheet(dt, "MyReport");
PopulateLastRun();
PopulatetoLastRun() にブレークポイントを設定できますが、そこに到達することはありません。誰でも理由を教えてもらえますか? これを回避する方法はありますか?
ありがとう