[英]What is the error in the code below as it doesn't display the SaveFileDialog
protected void Export(DataTable dtUserList)
{
try
{
DataTable dt = dtUserList;
string attachment = "attachment; filename=ul.xls";
Response.ClearContent();
Response.AddHeader("content-disposition", attachment);
Response.ContentType = "application/vnd.ms-excel";
string tab = "";
foreach (DataColumn dc in dt.Columns)
{
Response.Write(tab + dc.ColumnName);
tab = "\t";
}
Response.Write("\n");
int i;
foreach (DataRow dr in dt.Rows)
{
tab = "";
for (i = 0; i < dt.Columns.Count; i++)
{
Response.Write(tab + dr[i].ToString());
tab = "\t";
}
Response.Write("\n");
}
Response.Flush();
HttpContext.Current.ApplicationInstance.CompleteRequest();
}
catch (System.Threading.ThreadAbortException ex)
{
if (ex is System.Threading.ThreadAbortException)
{
System.Threading.Thread.ResetAbort();
return ;
}
}
}
我正在將數據表導出到Excel文件中,但我必須根據用戶使用SaveFileDialog保存文件。 我正在使用Asp.Net。 我從另一個以DataTable作為參數的方法調用上述方法。
您真的沒有選擇。 真正取決於瀏覽器,以及用戶過去使用相同類型的文件所做的事情。 由於您要發送的是特定的應用程序類型,因此瀏覽器很有可能會運行,好吧,這是一個excel文件,由於我知道該怎么做,因此我將下載或嘗試打開它。
您可以嘗試做一件事。 使用其他內容類型。 嘗試使用以下內容:
Response.ContentType = "application/octet-stream";
由於瀏覽器不知道該怎么做,因此不太容易嘗試找出可以用來自動打開程序的程序。
除此之外,您實際上無能為力。 您無法控制“保存文件”對話框,也不應該。 如果我們對它有任何控制權,甚至強迫其顯示,那都將導致我們既不希望也對用戶不希望的安全漏洞。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.