上篇博客,讲述初步导出Excel出现的问题。现在具体写一下导出Excel步骤。
对于大批量的数据,导出Excel的办法如下。
(1)使用DataTable导出Excel
其中使用StringWriter类:将信息写入字符串。其命名空间为:System.IO
具体的原理是:
首先读取DataTable中的列名,然后循环读取DataTable行值。
然后设置导出的编码,导出的类型。
最后输出StringWriter对象即可。
这种导出是将文件直接以文件流的形式输出到浏览器。
private StringWriter GetStringWriter(DataTable dt)
{
StringWriter sw = new StringWriter();
//读列名
foreach (DataColumn dc in dt.Columns)
sw.Write(dc.ColumnName + "\t");
//读列值
//重新的一行
sw.Write(sw.NewLine);
if (dt != null)
{
foreach (DataRow dr in dt.Rows)
{
for (int i = 0; i < dt.Columns.Count; i++)
{
sw.Write(dr[i].ToString() + "\t");
}
sw.Write(sw.NewLine);
}
}
sw.Close();
return sw;
}
protected void ExcelImport(DataTable dt, string ExportFileName)
{
StringWriter sw = GetStringWriter(dt);
//当前编码
HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");
//把输出的文件名进行编码
string fileName = HttpUtility.UrlEncode (ExportFileName, System.Text.Encoding.UTF8);
//文件名
string str = "attachment;filename=" + fileName + ".xls";
//把文件头输出,此文件头激活文件下载框
HttpContext.Current.Response.AppendHeader("Content-Disposition", str);//http报头文件
HttpContext.Current.Response.ContentType = "application/ms-excel";
this.Page.EnableViewState = false;
Response.Write(sw);
Response.End();
}
protected void Button1_Click(object sender, EventArgs e)
{
DataTable dt = new SelectCourseManager().SelectByCollegeAndProperty(ddlCourseProperty.Text, ddlCollege.SelectedValue);
if (dt.Rows.Count == 0)
Page.ClientScript.RegisterStartupScript(Page.GetType(), "message", "<script language='javascriopt' defer>alert('没有数据,不需要导出哈');</script>");
else
{
//导出Excel
ExcelImport(dt, "课程");
}
}
在导出Excel的时候,最关键的是编码问题,不同的形式导出Excel编码形式不同,否则,导出的Excel文件中文显示乱码。在DataTable导出Excel的时候,当前输出的编码样式是简体中文GB2312
HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");
而其导出的文件名是:UTF8编码
string fileName = HttpUtility.UrlEncode (ExportFileName, System.Text.Encoding.UTF8);
分享到:
相关推荐
asp.net里导出excel表方法汇总asp.net里导出excel表方法汇总asp.net里导出excel表方法汇总asp.net里导出excel表方法汇总asp.net里导出excel表方法汇总
asp.net 导出图片到excel .net导出excel
在网上找了好多代码,要么就是不能指定位置,要么就是不能控制大小,现在我结合别人的方法修改了下,试用成功,可以在指定单元格导出指定大小的图片,也可以在中间显示原图,或者两种一起显示。
asp.net导出EXCEL,把Excel文件当做一个数据源来进行数据的读取操作。
ASP.NET导出Excel控件(示例源码)ASP.NET导出Excel控件(示例源码)
导出Excel执行 Render() 的过程中调用 RegisterForEventValidation 当用GridView导出Execl的时候,会发生只能在执行 Render() 的过程中调用 RegisterForEventValidation的错误提示。 有两种方法可以解决以上问题: 1...
Asp.net 导出Excel文件总结(导出csv、Office COM组建、Jet OLEDB、NPOI)
asp.net导出excel + excel导入 +DES加密/解密
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,可以导出gridview,或者Div,或者Table里面的数据
Asp.Net导出Excel和TxT文档
ASP.NET 分Sheet导出EXCEL 2003 导出引用dll
服务器不需要安装 Office,导出的excel格式为:Excel 97-2003 ,很强大
ASP.net 导出Excel和word 不支持客户端程序
ASP.NET 导出Excel 可支持合并行列、字体等!
ASP.NET导出excel 是.net2008和sql server2000 开发的
asp.net导出万能Excel和word