实现导出功能

前台:

   <li>
        <asp:LinkButton ID="btnStuExcel" runat="server" CssClass="daochu-view" OnClick="btnStuExcel_Click"><i></i><span style="display: inline-block; vertical-align: middle;">导出学生数据</span></asp:LinkButton>
</li>

后台:

  var sql = GetListSql();
            List<ta_Student> data = ta_Student.Fetch(sql);
            if (Exec.CheckList(data))
            {
                DataTable dt = new DataTable();
                dt.Columns.Add("序号", Type.GetType("System.String"));
                dt.Columns.Add("姓名", Type.GetType("System.String"));
                dt.Columns.Add("性别", Type.GetType("System.String"));
                dt.Columns.Add("学号", Type.GetType("System.String"));
                dt.Columns.Add("卡号", Type.GetType("System.String"));
                dt.Columns.Add("标识", Type.GetType("System.String"));
                dt.Columns.Add("所在班级", Type.GetType("System.String"));
                dt.Columns.Add("所在年级", Type.GetType("System.String"));
                dt.Columns.Add("所在学校", Type.GetType("System.String"));
                dt.Columns.Add("宿舍楼", Type.GetType("System.String"));
                dt.Columns.Add("宿舍号", Type.GetType("System.String"));
                dt.Columns.Add("亲1", Type.GetType("System.String"));
                dt.Columns.Add("亲1号码", Type.GetType("System.String"));
                dt.Columns.Add("亲2", Type.GetType("System.String"));
                dt.Columns.Add("亲2号码", Type.GetType("System.String"));
                dt.Columns.Add("亲3", Type.GetType("System.String"));
                dt.Columns.Add("亲3号码", Type.GetType("System.String"));
                dt.Columns.Add("亲4", Type.GetType("System.String"));
                dt.Columns.Add("亲4号码", Type.GetType("System.String"));
                dt.Columns.Add("亲5", Type.GetType("System.String"));
                dt.Columns.Add("亲5号码", Type.GetType("System.String"));
                dt.Columns.Add("创建时间", Type.GetType("System.String"));
                int i = 1;
                foreach (var item in data)
                {
                    DataRow dr = dt.NewRow();
                    dr["序号"] = i;
                    dr["姓名"] = item.Name;
                    dr["性别"] = item.Sex==1?"": item.Sex == 2 ? "" : "未知";
                    dr["标识"] = item.ID.ToString();
                    dr["卡号"] = item.rf_id;
                    dr["学号"] = item.StudentNo;
                    dr["所在班级"] = item.ClassName;
                    dr["所在年级"] = item.GradeName;
                    dr["宿舍楼"] = PublicQuery.GetTowerById(item.TowerId).Name;
                    dr["宿舍号"] = PublicQuery.GetDormById(item.DormId).Name;
                    dr["所在学校"] = item.SchoolName;
                    dr["创建时间"] = Exec.GetTime(item.CreateTime, 0);
                    dr["亲1"] = item.qin1_name;
                    dr["亲1号码"] = item.qin1;
                    dr["亲2"] = item.qin2_name;
                    dr["亲2号码"] = item.qin2;
                    dr["亲3"] = item.qin3_name;
                    dr["亲3号码"] = item.qin3;
                    dr["亲4"] = item.qin4_name;
                    dr["亲4号码"] = item.qin4;
                    dr["亲5"] = item.qin5_name;
                    dr["亲5号码"] = item.qin5;
                    dt.Rows.Add(dr);
                    i++;
                }
                DataOperate.ExportByWeb(dt, "学生用户信息表", "学生用户信息表" + DateTime.Now.Ticks + ".xls");
            }
            else { ExtDialog.Dialog(this, "对不起,没有能够导出的数据", 4); }
ExportByWeb
        public static void ExportByWeb(DataTable dtSource, string headerName, string fileName)
        {
            HttpContext curContext = HttpContext.Current;

            curContext.Response.Clear();
            curContext.Response.ContentType = "application/vnd.ms-excel";
            curContext.Response.Buffer = true;
            curContext.Response.Charset = "GBK2312";
            curContext.Response.ContentEncoding = Encoding.UTF8;
            curContext.Response.AppendHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(fileName, Encoding.UTF8));
            byte[] file = Export(dtSource, headerName).GetBuffer();
            //添加头信息,指定文件大小,让浏览器能够显示下载进度 应该是配合其他东西使用的吧
            curContext.Response.AppendHeader("Content-Length", file.Length.ToString());
            curContext.Response.BinaryWrite(file);
            curContext.Response.Flush();
            curContext.Response.Close();
            curContext.Response.End();
        }

猜你喜欢

转载自www.cnblogs.com/axu92312/p/12620446.html
今日推荐