1. 程式人生 > >C#:excel導入導出

C#:excel導入導出

name als pro HP sharp gb2 http ted sta

資源:excelService 服務 http://download.csdn.net/detail/istend/8060501

  • 排列問題

導出時,數字和字符的排列格式默認不一樣,數字靠右,字符靠左,想讓排列一致,有兩個辦法:

1 在綁定時,就做固定格式

2 導出時,將數字那一列轉換為文本格式,例如以下

protected void myGridView_RowDataBound(object sender, GridViewRowEventArgs e)  
{  
            if (e.Row.RowType == DataControlRowType.DataRow)  
            {  
//讓數字以文本形式表示   
                e.Row.Cells[4].Attributes.Add("style", "vnd.ms-excel.numberformat:@");  
}  
}  
  • 轉換函數
        /// <summary>
        /// 導出button
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnExport_Click(object sender, System.Web.UI.ImageClickEventArgs e)
        {
            //導出文件名稱
            string strFileName = "報表.xls";

            //取原始數據。並綁定
            this.dagInfo.AllowPaging = false;
            this.dagInfo.AllowSorting = false;
            DataTable dt = BingData();
            this.dagInfo.DataSource = dt;
            this.dagInfo.DataBind();
            //使用本頁面直接輸出
            WHPT_WebApp.Statistics.GridStyleReport.ToExcel(this.dagInfo
                , strFileName,
                delegate(System.Web.UI.HtmlTextWriter writer)
                {
                    writer.Write(string.Format("<table width=100%><tr><td align=center colspan=5>{0}</td></tr></table>", "報表"));
                }
                , null);

            //恢復分頁數據
            this.dagInfo.AllowPaging = true;
            this.dagInfo.AllowSorting = true;
            BindInfo(1, "");
            return;
        }

        #endregion


        /// <summary>
        /// 轉換成EXCEL
        /// </summary>
        /// <param name="ctl"></param>
        /// <param name="file_name"></param>
        public static void ToExcel(System.Web.UI.Control ctl, string file_name,RenderCallBack beforeRende,RenderCallBack afterRender)
        {
            //將控件數據導出成Excel文件
            if (string.IsNullOrEmpty(file_name))
                return;
            HttpContext.Current.Response.AppendHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(file_name, System.Text.Encoding.UTF8));
            HttpContext.Current.Response.Charset = "GB2312"; //"UTF-8";				
            HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.Default;
            HttpContext.Current.Response.ContentType = "application/ms-excel";//image/JPEG;text/HTML;image/GIF;vnd.ms-excel/msword
            ctl.Page.EnableViewState = true;
            System.IO.StringWriter tw = new System.IO.StringWriter();
            System.Web.UI.HtmlTextWriter hw = new System.Web.UI.HtmlTextWriter(tw);
            if (beforeRende != null)
                beforeRende(hw);
            ctl.RenderControl(hw);
            if (afterRender != null)
                afterRender(hw);
            HttpContext.Current.Response.Write(GetHtmlHeadText(tw.ToString()));
            HttpContext.Current.Response.End();

        }


PS:此文僅做記錄交流所用。不做他用


C#:excel導入導出