FineUI 官方论坛

标题: 请问一下Grid导出excel,是不是只能导出当前页显示的数据? [打印本页]

作者: violetzone    时间: 2013-7-18 10:05
标题: 请问一下Grid导出excel,是不是只能导出当前页显示的数据?

有没有可能导出所有数据?
刚刚试了一下 只能导出当前页的数据
作者: violetzone    时间: 2013-7-18 10:05
如果可以,怎么设置啊?
作者: 秋收    时间: 2013-7-18 10:25
可以,点击按扭后再次按条件查询,然后直接导出数据集:
        public static void CreateExcelForHtml(DataSet ds, string FileName, FineUI.Grid grid)//将DataSet中的数据导出Execl For Html 格式
        {
            //把DataSet中的数据导出,也就是把DataSet中的表中的各行信息,以ms-excel的格式Response到http流,
            //说明:参数ds应为填充有数据表的DataSet,文件名是全名,包括后缀名,如execl2006.xls
            HttpResponse resp;
            resp = HttpContext.Current.Response;//HttpContext.Current.
            resp.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");
            resp.AppendHeader("Content-Disposition", "attachment;filename=" + FileName);
            resp.ContentType = "application/excel";
            string colHeaders = "", ls_item = "",F,C;
            StringBuilder sb = new StringBuilder();
            sb.Append("<table cellspacing=\"0\" rules=\"all\" border=\"1\" style=\"border-collapse:collapse;\">");
            sb.Append("<tr>");
            DataTable dt = ds.Tables[0];//
            DataRow[] myRow = dt.Select();//
            int i = 0;
            int cl = dt.Columns.Count;
            for (i = 0; i < cl; i++)//取得数据表各列标题,各标题之间以t分割,最后一个列标题后加回车符
            {
                colHeaders = dt.Columns[i].Caption.ToString();
                colHeaders = ReturnCaption(colHeaders, grid);//根据字段名返回中文名称
                sb.AppendFormat("<td>{0}</td>", colHeaders);
            }
            sb.Append("</tr>");
            for (i = 0; i < cl; i++)//取得数据表各列标题,各标题之间以t分割,最后一个列标题后加回车符
            {
                colHeaders = dt.Columns[i].Caption.ToString();
                //colHeaders = ReturnCaption(colHeaders, grid);//根据字段名返回中文名称
                sb.AppendFormat("<td>{0}</td>", colHeaders);
            }
            sb.Append("</tr>");
            foreach (DataRow row in myRow)//逐行处理数据   
            {
                sb.Append("<tr>");
                for (i = 0; i < cl; i++)//当前行数据写入HTTP输出流,并且置空ls_item以便下行数据   
                {
                    ls_item = row[i].ToString().Trim();
                    F = dt.Columns[i].Caption.ToString().ToLower();
                    C = ReturnCaption(F, grid);//根据字段名返回中文名称
                    if (F == "cardnumber" || F == "autoid" || F == "nodenumber" || F == "parentnodenumber"||C.IndexOf("号")>=0)  //如果为数值字段
                    {
                        sb.AppendFormat("<td style='mso-number-format:\"\\@\";'>{0}</td>", ls_item);
                    }
                    else sb.AppendFormat("<td>{0}</td>", ls_item);
                }
                sb.Append("</tr>");
            }
            sb.Append("</table>");
            resp.Write(sb.ToString());//向HTTP输出流中写入取得的数据信息
            resp.End();
        }

作者: violetzone    时间: 2013-7-18 10:32
本帖最后由 violetzone 于 2013-7-18 10:33 编辑
秋收 发表于 2013-7-18 10:25
可以,点击按扭后再次按条件查询,然后直接导出数据集:
        public static void CreateExcelForHtml(D ...


谢谢,另外在论坛上还找了另外一种方法,同做参考http://fineui.com/bbs/forum.php?mod=viewthread&tid=3324&fromuid=4767
作者: 除了时间    时间: 2013-9-24 09:04
学习了~~~~感谢分享~
作者: 龙图腾    时间: 2013-10-18 10:03
嘿嘿,不错,踩踩




欢迎光临 FineUI 官方论坛 (https://fineui.com/BBS/) Powered by Discuz! X3.4