[C#] 在ASP.net 中讓使用者下載 Excel 檔案

2013-02-20

上一篇文章,我們透過 透過NPOI 產生 Excel 檔案 (*.xls)
但是如何讓使用者下載呢?!

2013-02-20_114814
首先再開一個 檔案為 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

就可以 下載了,如果有需要的可以下載範例來看..

下載


當麻許的超技八 2014 | Donma Hsu Design.