有时需要将DataTable中的数据直接、简单地导出到Excel文件,下边的方法大家可以使用。
protected void btnOutput_Click(object sender, EventArgs e)
//这是页面上的导出按钮单击入口。
{
string strFileName = HttpContext.Current.Server.MapPath("../Excels/") + "ExcelOutput";
//本行指定一个服务器上的绝对路径和文件名;
StringWriter sfw = new StringWriter();
try
{
HttpResponse resp;
resp = HttpContext.Current.Response;
resp.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");
resp.AppendHeader("Content-disposition", "attachment;filename=" + strFileName + ".xls");
resp.ContentType = "application/ms-excel";
//变量定义
string colHeaders = null;
//取得数据表各列标题,各标题之间以\t分割,插入后成为标题行。
colHeaders = "用户账户" + "\t" + "姓名" + "\t" + "Email" ;
sfw.WriteLine(colHeaders);
//逐行处理数据
ENTUserAccountEOList eNTUserAccountEOList = new ENTUserAccountEOList();
//这是一个类似于Data Table行集合的对象集合。
eNTUserAccountEOList.Load();
//我的行集合要加载对象集合,你的数据表应该有若干行数据。
foreach (ENTUserAccountEO eNTUserAccountEO in eNTUserAccountEOList)
//我遍历的是我的对象集合,你遍历的应该数据表的行集合。
{
sfw.WriteLine(eNTUserAccountEO.UserWebName + "\t" + eNTUserAccountEO.UserChineseName + "\t" + eNTUserAccountEO.Email + "\t");
//我用硬代码把集合内各分量连成一个串,你的化码可以要用循环代码遍历数据表//的每个行
//(类似于下边的循环模型)。
}
//foreach (DataRow row in myRow)
//{
//}
resp.Write(sfw);
//resp.Clear();
resp.End();
}
catch (Exception exception_Output)
{
//捕捉可能的读写错误,使代码更健壮。
throw exception_Output;
}
}
//完了,就么一点儿,有困难的朋友可以与我联系,能帮尽量帮你。