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作为参数从另一个方法调用上面的方法。
答案 0 :(得分:0)
你真的没有选择。它真的取决于浏览器,以及用户过去使用相同类型的文件所做的事情。由于您正在发送特定的应用程序类型,因此浏览器很有可能,好吧,这是一个excel文件,我会下载它或尝试打开它,因为我知道什么与它有关。
你可以尝试做一件事。使用不同的内容类型。请尝试使用以下内容:
Response.ContentType = "application/octet-stream";
由于浏览器不知道该如何处理,因此不太可能试图找出可以用来自动打开它的程序。
除此之外,你真的没有什么可以做的。您无法控制保存文件对话框,也不应该。如果我们对它有任何控制权,即使强迫它显示,也会导致我们不想要的安全漏洞,也不会导致用户。