C#:excel導入導出
阿新 • • 發佈:2018-03-18
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導入導出