/// <summary>
/// 生成Execl控制类 /// </summary> public class ExeclManager { /// <summary> /// 通过DataTable生成Execl /// </summary> /// <param name="DTInputDataTable">输入DataTable</param> public static void DataTableToExcel(System.Data.DataTable DTInputDataTable) {//创建输出的GridView
GridView GVResponse = null; //创建会话 HttpContext HCRequest = HttpContext.Current;System.IO.StringWriter strWriter = null;
System.Web.UI.HtmlTextWriter htmlWriter = null;if (DTInputDataTable != null)
{ // 设置编码和附件格式 HCRequest.Response.Clear(); HCRequest.Response.Buffer = true; HCRequest.Response.ContentType = "application/vnd.ms-excel"; HCRequest.Response.AddHeader("Content-Disposition", "inline;filename=Execl.xls"); HCRequest.Response.ContentEncoding = System.Text.Encoding.UTF8; HCRequest.Response.Charset = "UTF-8"; HCRequest.Response.Write("<html><head><meta http-equiv=Content-Type content=\"text/html; charset=utf-8\">"); // 导出excel文件 strWriter = new System.IO.StringWriter(); htmlWriter = new System.Web.UI.HtmlTextWriter(strWriter);// 为了解决GVResponse中可能进行了分页的情况,需要重新定义一个无分页的GridView
GVResponse = new GridView(); GVResponse.RowDataBound +=new GridViewRowEventHandler(GVResponse_RowDataBound); GVResponse.DataSource = DTInputDataTable; GVResponse.AllowPaging = false; GVResponse.DataBind(); // 输出数据 GVResponse.RenderControl(htmlWriter); HCRequest.Response.Write(strWriter.ToString()); HCRequest.Response.Write("</body></html>");HCRequest.Response.End();
} } static void GVResponse_RowDataBound(object sender, GridViewRowEventArgs e) { if (e.Row.RowType == DataControlRowType.DataRow) { //e.Row.Cells[0].Attributes.Add("style", "vnd.ms-excel.numberformat:@");//这里是将要导出到execl里的第一列格式化为字符类型。 //e.Row.Cells[3].Attributes.Add("style", "vnd.ms-excel.numberformat:¥#,###.00");//这里是格式化为货币类型。 for (int i = 0; i < e.Row.Cells.Count; i++) { e.Row.Cells[i].Attributes.Add("style", "vnd.ms-excel.numberformat:@"); } //1) 文本:vnd.ms-excel.numberformat:@ //2) 日期:vnd.ms-excel.numberformat:yyyy/mm/dd //3) 数字:vnd.ms-excel.numberformat:#,##0.00 //4) 货币:vnd.ms-excel.numberformat:¥#,##0.00 //5) 百分比:vnd.ms-excel.numberformat: #0.00% } }/// <summary>
/// 通过SqlDataSource生成Execl /// </summary> /// <param name="SDSInputSqlDataSource">SqlDataSource</param> public static void SqlDataSourceToExcel(SqlDataSource SDSInputSqlDataSource) {//创建输出的GridView
GridView GVResponse = null; //创建会话 HttpContext HCRequest = HttpContext.Current;System.IO.StringWriter strWriter = null;
System.Web.UI.HtmlTextWriter htmlWriter = null;if (SDSInputSqlDataSource != null)
{ // 设置编码和附件格式 HCRequest.Response.ContentType = "application/vnd.ms-excel"; HCRequest.Response.AddHeader("Content-Disposition", "inline;filename=Execl.xls"); HCRequest.Response.ContentEncoding = System.Text.Encoding.UTF8; HCRequest.Response.Charset = "UTF-8";// 导出excel文件
strWriter = new System.IO.StringWriter(); htmlWriter = new System.Web.UI.HtmlTextWriter(strWriter);// 为了解决GVResponse中可能进行了分页的情况,需要重新定义一个无分页的GridView
GVResponse = new GridView(); GVResponse.DataSource = SDSInputSqlDataSource; GVResponse.AllowPaging = false; GVResponse.DataBind();// 输出数据
GVResponse.RenderControl(htmlWriter); HCRequest.Response.Write(strWriter.ToString()); HCRequest.Response.End(); } }/// <summary>
/// 通过GridView生成Execl /// </summary> /// <param name="GVInputGridView">GridView</param> public static void GridViewToExcel(GridView GVInputGridView) {//创建输出的GridView
GridView GVResponse = null; //创建会话 HttpContext HCRequest = HttpContext.Current;System.IO.StringWriter strWriter = null;
System.Web.UI.HtmlTextWriter htmlWriter = null;if (GVInputGridView != null)
{ // 设置编码和附件格式 HCRequest.Response.ContentType = "application/vnd.ms-excel"; HCRequest.Response.AddHeader("Content-Disposition", "inline;filename=Execl.xls"); HCRequest.Response.ContentEncoding = System.Text.Encoding.UTF8; HCRequest.Response.Charset = "UTF-8";// 导出excel文件
strWriter = new System.IO.StringWriter(); htmlWriter = new System.Web.UI.HtmlTextWriter(strWriter);// 为了解决GVResponse中可能进行了分页的情况,需要重新定义一个无分页的GridView
GVResponse = GVInputGridView; GVResponse.AllowPaging = false; GVResponse.DataBind();// 输出数据
GVResponse.RenderControl(htmlWriter); HCRequest.Response.Write(strWriter.ToString()); HCRequest.Response.End(); } } }