跳到主要內容

[C#] 匯出Excel

[.CS]

#region 匯出Excel

    public override void VerifyRenderingInServerForm(Control control)
    {
        //處理'GridView' 的控制項 'GridView' 必須置於有 runat=server 的表單標記之中
    }
    protected void btnExcel_Click(object sender, EventArgs e)
    {
        gvw_Execl.Visible = true;

        Response.Clear();
        Response.AddHeader("content-disposition", "attachment;filename=" + HttpUtility.UrlEncode("Lettrt.xls"));
        Response.ContentType = "application/vnd.ms-excel";
        Response.Charset = "";

        Response.Write("<style type=text/css>");
        Response.Write("td{mso-number-format:\"\\@\";}"); //將所有欄位格式改為"文字"
        Response.Write("</style>");

        //關閉ViewState
        EnableViewState = false;
        System.IO.StringWriter sw = new System.IO.StringWriter();
        System.Web.UI.HtmlTextWriter htw = new HtmlTextWriter(sw);

        //關閉換頁跟排序
        gvw_Execl.AllowSorting = false;
        gvw_Execl.AllowPaging = false;

        //取的Control的HTML
        gvw_Execl.RenderControl(htw);
        //把HTML寫回Browser
        Response.Write(sw.ToString());
        Response.End();

        gvw_Execl.Visible = false;
    }  

    #endregion

如果依以上寫法中文一樣會出亂碼,請加上
 //避免中文會出亂碼

 Response.Write("<meta http-equiv=Content-Type content=text/html;charset=utf-8>");



--串HTML匯出Excel

        string filename = "Letter";

        string html = "<html><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=big5\">"
                     + "<title>Letter</title></head>";
        html += "<table border=\"1\">";

        //表頭
        html += "<tr>";
        for (int i = 0; i < gvw_Execl.Columns.Count; i++)
        {
            if (!gvw_Execl.Columns[i].Visible)
            {
                continue;
            }
            html += "<td bgcolor=\"#E4E4E4\">" + gvw_Execl.HeaderRow.Cells[i].Text;
        }

        //先把分頁關掉
        gvw_Execl.AllowPaging = false;

        //內容
        for (int i = 0; i < gvw_Execl.Rows.Count; i++)
        {
            html += "<tr>";

            for (int c = 0; c < gvw_Execl.Rows[i].Cells.Count; c++)
            {
                if (gvw_Execl.Rows[i].Cells[c].Controls.Count > 0)
                {
                    html += "<td>" + ((Literal)gvw_Execl.Rows[i].Cells[c].Controls[1]).Text + "</td>";
                    //html += "<td>" + gvw_Execl.Rows[i].Cells[c].Controls[1].ToString() + "</td>";
                }
                else
                {
                    html += "<td>" + gvw_Execl.Rows[i].Cells[c].Text + "</td>";
                }

            }
            html += "</tr>";
        }
        html += "</table>";

        string sContentDisposition = "";
        sContentDisposition += "attachment; "; // 強制存檔,未設定則依瀏覽器預設開啟或存檔
        sContentDisposition += "filename=" + HttpUtility.UrlEncode(filename, System.Text.Encoding.UTF8) + ".xls"; //設定檔名可為中文_#1

        HttpContext.Current.Response.Clear();
        HttpContext.Current.Response.AddHeader("Content-disposition", sContentDisposition);
        HttpContext.Current.Response.ContentType = "application/vnd.ms-excle";
        HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.UTF8;

        //utt8 to ascii
        Byte[] bytes = System.Text.Encoding.Unicode.GetBytes(html);
        Byte[] outByte = System.Text.Encoding.Convert(System.Text.Encoding.Unicode, System.Text.Encoding.Default, bytes);

        HttpContext.Current.Response.BinaryWrite(outByte);
        HttpContext.Current.Response.End();


參考連結
簡易匯出Excel
欄位格式設定
Excel 格式
中文亂碼解決方法

留言

這個網誌中的熱門文章

[python] python 時區轉換 ( timezone )

python 時區轉換 import datetime as dt import pytz d = dt.datetime(2019,1,1,14,0,0) #create Taipei timezone tw = pytz.timezone('Asia/Taipei') #set d timezone is 'Asia/Taipei' twdt = tw.localize(d) #change to utc time utc_dt = twdt.astimezone(pytz.utc) *注意 網路上很多使用 d.replace(tzinfo=tw)   但是可能會出現時差問題, 如下: datetime.time(23, 18, 5, tzinfo=<DstTzInfo 'Asia/Shanghai' LMT+8:06:00 STD>) 參考文件 python时区设置——pytz模块

[HTML] 文字浮水印效果 text watermark css

[.css] .info-mask {     height: 0;       position: absolute;       margin-top:120px;   } .info-opacity {     opacity: 0.8;     color: black; } .info-text {     color: gray;     font-size: 40px;     -webkit-transform: rotate(-5deg);       line-height: 60px;     max-width:1200px;     letter-spacing:3px;     padding-left:0.8em; } [.html]     <div class="info-mask">         <p class="info-text">             WaterMarkText         </p>     </div>    <table class="table table-bordered table-striped table-responsive table-hover" style="position:                 relative;" >        <tbody class="info-opacity" >        </tbody>    </table>

[GCP] Google Cloud Platform 搬移 VM & cloud sql & datastore

建立同VM 同專案 VM  建立快照 --> 用快照建立新的VM 跨專案 VM  建立快照  --> 用快照建立映像檔 --> 用印象檔建立新的VM Notice  開機磁碟: 自訂映像檔->選擇印象檔 搬移cloud sql step 1. A SQL [Top option] '匯出' setting Bucket and formate is 'SQL' step 2. B SQL [Top option] '匯入' setting Bucket and formate is 'SQL' Bucket path: gs://{Bucket}/file.sql Notice   不同專案的gs要有權限讀取 搬移 datastore 詳細請參考: https://cloud.google.com/datastore/docs/export-import-entities   step 1. 'new' project [menu] 資料儲存庫 -> 啟用datastore step 2. gcloud terminal gcloud auth login  gcloud config set project <projectid> gcloud beta datastore export --kinds=" <KIND> " gs:// <BUCKET> gcloud config set project new-projectid gcloud datastore export gs:// <BUCKET> Notice  跨專案gs storage auth 需要新增  xxx@appspot.gserviceaccount.com  [storage BUCKET 讀取者] 權限