[英]ASP.NET to Excel export - reference file and open save as dialog?
[英]Excel file “Open” “Save As” dialog box not showing in asp.net
我搜索了S / O,但無法找到可以解決問題的解決方案。 我從我的asp.net應用程序導出數據到xls文件。 當用戶單擊“導出數據”按鈕時,我需要顯示“打開/另存為/取消”對話框。
我該如何做到這一點?
oSheet = Nothing
oRange = Nothing
oWB.SaveAs(sFileName.ToString())
oWB.Close()
oWB = Nothing
oXL.Quit()
試試這個代碼塊。 你可能需要微調它。 代碼的Response
塊與對話框有關:
Private Sub GenerateXLSXFile(tbl As DataTable)
Dim excelPackage = New ExcelPackage
Dim excelWorksheet = excelPackage.Workbook.Worksheets.Add("DemoPage")
excelWorksheet.Cells("A1").LoadFromDataTable(tbl, True)
Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
Response.AddHeader("content-disposition", "attachment; filename=ExcelDemo.xlsx")
Dim stream As MemoryStream = New MemoryStream(excelPackage.GetAsByteArray())
Response.OutputStream.Write(stream.ToArray(), 0, stream.ToArray().Length)
Response.Flush()
Response.Close()
End Sub
你可以用幾種方法做到這一點。 您提供的代碼示例與此無關,但顯然您創建了文件並將其保存到磁盤。 看到你有文件路徑,你可以使用Response.WriteFile 。 您需要添加Content-Disposition以顯示“另存為”對話框。
Response.AddHeader("Content-Disposition", "attachment; filename=EXCELFILE.xs")
Response.ContentType = "application/ms-excel" // not sure you need the contenttype, and it may be different
Response.WriteFile(FULLPATHTOFILE)
public void export()
{
try
{
if (Session["ExcelGrid"] != null)
{
DataSet DS = null;
if (Session["ExcelGrid"] != null)
{
DS = (DataSet)Session["ExcelGrid"];
if (DS.Tables[0].Rows.Count > 0)
{
int j = 0;
int k = 0;
string FileName = string.Concat(DateTime.Now.ToString(), "Order");
DataTable dt = DS.Tables[0];
dt.Columns.Remove("UserRole");
dt.Columns.Remove("iControlDeviationID");
dt.Columns.Remove("sErrorCode");
dt.Columns.Remove("sItemCategory");
dt.Columns.Remove("sItemSubCategory");
dt.Columns.Remove("iDeviationID");
dt.Columns.Remove("iControlPointID");
dt.Columns.Remove("sFacility");
dt.Columns.Remove("sItemCategory1");
dt.Columns.Remove("sItemSubCategory1");
dt.Columns.Remove("sRegion");
dt.Columns.Remove("sCountry");
dt.Columns.Remove("sItem");
dt.Columns["dRegisterDate"].SetOrdinal(5);
Context.Response.AddHeader("Content-Disposition", "attachment;filename=" + FileName + ".xls");
Context.Response.ContentType = "application/vnd.ms-excel";
Context.Response.Charset = "";
Context.Response.ContentEncoding = System.Text.Encoding.GetEncoding("ISO-8859-1");
Context.Response.Write("<table border=0 width='100%'><tr align = 'center'>");
for (j = 0; j < 30; j++)
{
if (j < 1)
{
for (int i = 0; i < dt.Columns.Count; i++)
{
if (dt.Columns[i].Caption.ToString() == "sDeviation")
Context.Response.Write("<td style='border:#D0D7E5 1px solid; border-left:none;border-bottom:none'><b>" + Resources.Resource.DeviationTypes.ToString().ToUpper() + "</b></td>");
if (dt.Columns[i].Caption.ToString() == "sDeviationCriticalLevel")
Context.Response.Write("<td style='border:#D0D7E5 1px solid; border-left:none;border-bottom:none'><b>" + Resources.Resource.DeviationCriticalLevel.ToString().ToUpper() + "</b></td>");
if (dt.Columns[i].Caption.ToString() == "sObject")
Context.Response.Write("<td style='border:#D0D7E5 1px solid; border-left:none;border-bottom:none'><b>" + Resources.Resource.Object.ToString().ToUpper() + "</b></td>");
if (dt.Columns[i].Caption.ToString() == "sControlArea")
Context.Response.Write("<td style='border:#D0D7E5 1px solid; border-left:none;border-bottom:none'><b>" + Resources.Resource.ControlArea.ToString().ToUpper() + "</b></td>");
if (dt.Columns[i].Caption.ToString() == "sControlPoint")
Context.Response.Write("<td style='border:#D0D7E5 1px solid; border-left:none;border-bottom:none'><b>" + Resources.Resource.ControlPoint.ToString().ToUpper() + "</b></td>");
if (dt.Columns[i].Caption.ToString() == "dRegisterDate")
Context.Response.Write("<td style='border:#D0D7E5 1px solid; border-left:none;border-bottom:none'><b>" + Resources.Resource.RegisteredDate.ToString().ToUpper() + "</b></td>");
}
}
else
{
Context.Response.Write("<td style='border:#D0D7E5 1px solid; border-left:none;border-bottom:none'>" + " " + "</td>");
}
}
Context.Response.Write(" ");
Context.Response.Write("</tr>");
for (int l = 0; l < 100; l++)
{
for (int i = 0; i < dt.Rows.Count; i++)
{
DataRow dr = dt.Rows[i];
Context.Response.Write("<tr align = 'Left'>");
for (k = 0; k < j; k++)
{
if (k < 1)
{
for (int iCol = 0; iCol < dt.Columns.Count; iCol++)
{
if (l < 1)
{
Context.Response.Write("<td style='border:#D0D7E5 1px solid; border-left:none;border-bottom:none'>" + dr[iCol].ToString() + "</td>");
}
else
{
Context.Response.Write("<td style='border:#D0D7E5 1px solid; border-left:none;border-bottom:none'>" + " " + "</td>");
}
}
}
else
{
Context.Response.Write("<td style='border:#D0D7E5 1px solid; border-left:none;border-bottom:none'>" + " " + "</td>");
}
}
}
}
Context.Response.Write(" ");
Context.Response.Write("</tr>");
Context.Response.Write(" ");
Context.Response.Write("</table>");
Response.Buffer = true;
Context.Response.Flush();
Context.Response.Close();
Context.Response.End();
//ScriptManager.RegisterStartupScript(this, GetType(), "refresh", "window.setTimeout('window.location.reload(true);',5000);", true);
}
}
}
}
catch (Exception ex)
{
Response.Write(ex.Message.ToString());
}
finally
{
ScriptManager.RegisterStartupScript(this, GetType(), "refresh", "a.aspx;", true);
}
}
嗯。 你不。 您的excel對象正在Web服務器上的ASP.NET進程中運行。 無法在CLIENT(BROWSER)端顯示對話框。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.