这是以前较为常用的一种方法。遍历数据集合,构造一个table或者构造csv结构,然后输出到客户端(或者先生成后下载)。
以DataTable为例:
public void CreateExcel(DataTable dt, string FileName) { HttpResponse resp; resp = Page.Response; resp.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312"); resp.AppendHeader("Content-Disposition", "attachment;filename=" + FileName); resp.ContentType = "application/vnd.ms-excel"; string colHeaders = "", ls_item = ""; //可以类似dt.Select("id>10")之形式达到数据筛选目的 DataRow[] myRow = dt.Select(); int i = 0; int cl = dt.Columns.Count; //各列之间以\t分割,最后一个列标题后加回车符 for (i = 0; i < cl; i++) { //最后一列,加\n if (i == (cl - 1)) { colHeaders += dt.Columns[i].Caption.ToString() + "\n"; } else { colHeaders += dt.Columns[i].Caption.ToString() + "\t"; } } //向HTTP输出流中写入取得的数据信息 resp.Write(colHeaders); //逐行处理数据 foreach (DataRow row in myRow) { //当前行数据写入HTTP输出流,并且置空ls_item以便下行数据 for (i = 0; i < cl; i++) { //最后一列,加\n if (i == (cl - 1)) { ls_item += row[i].ToString() + "\n"; } else { ls_item += row[i].ToString() + "\t"; } } resp.Write(ls_item); ls_item = ""; } resp.End(); } protected void Button1_Click(object sender, EventArgs e) { DataTable dt = new DataTable(); dt.Columns.Add("编号"); dt.Columns.Add("姓名"); dt.Columns.Add("性别"); dt.Rows.Add("001", "张三", "男"); dt.Rows.Add("002", "李四", "女"); CreateExcel(dt, "class.xls"); }
其它数据集合类似,如DataView、List等,我们只需要创建行和列就可以了。
还可以使用文件流生成文件然后下载:
public void CreateExcelFileStream(DataTable dt, string FileName) { //生成文件在服务器端 string name = Server.MapPath(FileName); FileStream fs = new FileStream(name, FileMode.Create, FileAccess.Write); StreamWriter sw = new StreamWriter(fs, System.Text.Encoding.GetEncoding("gb2312")); sw.WriteLine("编号,姓名,年龄"); foreach (DataRow dr in dt.Rows) { sw.WriteLine(dr[0].ToString() + "," + dr[1].ToString() + "," + dr[2].ToString()); } sw.Close(); //下载文件 Response.AddHeader("Content-Disposition", "attachment; filename=" + Server.UrlEncode(FileName)); Response.ContentType = "application/vnd.ms-excel"; Response.WriteFile(name); Response.End(); }
本文参考:http://blog.csdn.net/jilm168/archive/2007/11/06/1869118.aspx
发表评论
相关文章
国内AI资源汇总,AI聊天、AI绘画、AI写作、AI视频、AI设计、AI编程、AI音乐等,国内顺畅访问,无需科学上网。
扫码或点击进入:萤火AI大全
文章分类
最新评论