[C#] 在ASP.net 中讓使用者下載 Excel 檔案
2013-02-20
上一篇文章,我們透過 透過NPOI 產生 Excel 檔案 (*.xls)
但是如何讓使用者下載呢?!
首先再開一個 檔案為 download.aspx 檔案
並且您可以清空所有download.aspx 的東西只留下一行
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="download.aspx.cs" Inherits="CreateExcel1.download" %>
在 C# 端 Code :
using System;
using System.IO;
namespace CreateExcel1
{
public partial class download : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (string.IsNullOrEmpty(Request["token"]))
{
Response.Write("密碼錯誤");
return;
}
Response.Clear();
Response.AddHeader("content-disposition", "attachment;filename=" + Server.UrlEncode("DonmaSampleExcelFile" + DateTime.Now.ToString("yyyyMMddHHmm") + ".xls"));
//設定MIME 標頭
//可以參考 http://baike.baidu.com/view/160611.htm
Response.ContentType = "application/octet-stream";
Response.BinaryWrite(File.ReadAllBytes(AppDomain.CurrentDomain.BaseDirectory + "sample.xls"));
}
}
}
其中,我加入一個token 的參數雖然沒有詳細驗證,但是通常我都會加上一個需要驗證的token
我預設使用者下載後檔名為 DonmaSampleExcelFile+時間戳記,盡量避免中文,免得亂碼
重點在MIME 需要指定為 application/octet-stream
相關MIME 標頭可以參考這裡,很詳細
之後下一個超聯結到 download.aspx?token=1234
就可以 下載了,如果有需要的可以下載範例來看..
下載