通常我們在匯入excel後會在多產生一個錯誤報表給使用者更新
這邊提供的方法為
A網頁
.aspx
function erxls()
{
if(confirm("匯入完畢,是否匯出錯誤報表"))
{
window.open('B.aspx','錯誤資訊')
}
else
{
return false;
}
}
.cs檔
判斷產生的datatable有無資料
有資料後
將datatable存入Session
呼叫javascript function erxls()
B網頁
DataTable errResult = (DataTable)Session["errResult"];
if (errResult.Rows.Count > 0)
{
//呼叫APP_CODE中的CS檔
XXXX ai = new XXXX();
StringBuilder sb = ai.DtToExcel(errResult);
//假如在A網頁中直接呼叫由於被清掉的緣故會導致畫面變成一片
// 空白所以在這邊我們採用另開視窗的方式
Response.ClearHeaders();
Response.Clear();
Response.ContentType = "application/vnd.ms-excel";
Response.Buffer = true;
Response.Expires = 0;
Response.AddHeader("Content-Disposition", "attachment; filename=" + "error" + ".xls");
Response.Write("<meta https-equiv=Content-Type content=text/html;charset=UTF-8>");
Response.Charset = "UTF-8";
Response.Write(sb);
Response.End();
}
App_Code
public StringBuilder DtToExcel(DataTable dt)
{
StringBuilder sb = new StringBuilder();
if (dt.Rows.Count >0)
{
sb.Append("<html><body>");
sb.Append("<table cellspacing='0' cellpadding='0' width='50px'>");
for ( int ii = 0 ; ii<= dt.Rows.Count - 1;ii++)
{
sb.Append("<tr><td colspan='1' align='center'>欄位名稱:" + dt.Rows[ii]["XX"] + "</td> ");
sb.Append("<td colspan='1' align='center'>欄位名稱:" + dt.Rows[ii]["XXX"] + "</td>");
sb.Append("<td colspan='1' align='left'>欄位名稱:" + dt.Rows[ii]["XXX"] + "</td></tr> ");
}
sb.Append("</table>");
sb.Append("</body></html>");
}
return sb;
}
沒有留言:
張貼留言