Asp.net导出Excel(三)
来源:互联网 发布:淘宝模特小倩 编辑:程序博客网 时间:2024/06/11 00:52
对于大量的数据,导出Excel的方式。
上篇博客介绍了导出Excel一种方式:通过DataTable
这篇博客,介绍另一中导出Excel方式-通过DataGrid.
导出Excel的过程:
虽然这次是通过DataGrid导出Excel,但是不是从界面上DataGrid控件导出Excel。因为这次实际项目中的需求是把查询到的信息导出Excel,界面上的DataGrid控件只显示一部分,也就是正如上篇博客中提到控件实现了分页,所以不可以直接从界面控件导出。
但是实现的过程一样,只不过,这次DataGrid是动态生成的。
此导出过程用到StringWriter类(将文本信息写入字符串),HtmlTextWriter类:将标记字符和文本写入到 ASP.NET 服务器控件输出流。(命名空间:System.Web.UI)
Control.RenderControl (HtmlTextWriter) ——将服务器控件的内容输出到所提供的 HtmlTextWriter 对象中。
然后respose输出StringWriter对象。
/// <summary> /// 导出Excel /// </summary> /// <param name="dt"></param> /// <param name="ExportFileName"></param> protected void ExcelExport(DataTable dt, string ExportFileName) { DataGrid dgExcel = new DataGrid(); dgExcel.DataSource = dt; dgExcel.DataBind(); HttpContext.Current.Response.Charset = "GB2312"; string fileName = HttpUtility.UrlEncode(ExportFileName, System.Text.Encoding.UTF8); string str="attachment;filename="+fileName+".xls"; HttpContext .Current .Response .ContentEncoding =System.Text.Encoding .UTF7; HttpContext.Current.Response .ContentType ="application/ms-excel"; HttpContext .Current .Response .AppendHeader ("content-disposition",str); StringWriter sw = new StringWriter(); HtmlTextWriter htmTextWriter = new HtmlTextWriter(sw); dgExcel .RenderControl(htmTextWriter ); Response .Write(sw); Response .End(); }
/// <summary> /// 导出excel按钮 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected void btnExport_Click(object sender, EventArgs e) { DataTable dt = new SelectClassRoomManager().SelectClassRoomByTypeBuildNo(ddlClassType.SelectedValue, ddlBuildingID.SelectedValue); if (dt.Rows.Count == 0) Response.Write("<script>alert('没有数据,没有必要导出啊哈');</script>"); else { //导出excel ExcelExport(dt, "教室"); } }
其中用DataGrid导出Excel的时候,其导出的文件名编码:
string fileName = HttpUtility.UrlEncode(ExportFileName, System.Text.Encoding.UTF8);
其导出的当前文件编码:
HttpContext .Current .Response .ContentEncoding =System.Text.Encoding .UTF7;
但是这两种导出的Excel的文件不同,内容是一样的,但是其格式不同,使用上篇博客DataTable导出Excel,是真正的excel,而使用DataGrid导出的Excel,貌似有点类似记事本。还是贴的图,大家看看吧。
DataTable导出的Excel 如下:
而DataGrid导出的Excel如下:
- Asp.net导出Excel(三)
- Asp.Net导出Excel(三)
- asp.net导出excel
- asp.net导出Excel
- asp.net导出excel
- asp.net导出Excel
- Asp.net 导出Excel
- asp.net导出excel
- asp.net 导出excel
- asp.net 导出Excel
- asp.net 导出 excel
- asp.net导出Excel
- ASP.NET Excel导出
- asp.net导出EXCEL
- ASP.NET Excel导出
- asp.net 导出Excel
- asp.net 导出Excel
- Asp.net导出Excel
- Linux内核I2C子系统驱动(三)
- 编写iptables模块实现不连续IP地址的DNAT-POOL
- 唐骏常出三道微软面试题
- jsp中tomcat部署实现外网访问
- 使用VIM将一行X509证书分解为多行的方式
- Asp.net导出Excel(三)
- 安装vs2010后安装MSDN文档的方法
- POJ 1985 COW MARATHON
- POJ 1952 BUY LOW, BUY LOWER(DP)
- ExtJS中layout的9种布局风格
- POJ 1948 TRIANGULAR PASTURES(背包问题)
- 微软算法面试题
- Android App Widgets
- POJ 1833 排列