簡體   English   中英

以下代碼中的錯誤是什么,因為它不顯示SaveFileDialog

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM