有一个系统,进行数据分页是采用gridview结合一个叫ultrapage分页控件进行实现的。现在需要添加“导出”功能,即将数据导出到excel中的,该如何实现呢?如果数据量比较大,又如何处理呢?

解决方案 »

  1.   

    导出excel 参考
      

  2.   

    UP,百度一下gridview导出excel,一大把
      

  3.   

    protected void Btn_Click(object sender, EventArgs e)
    {
    string style = @"<style> .text { mso-number-format:\@; } </script> "; 
    Response.ClearContent();
    Response.AddHeader("content-disposition", "attachment; filename=MyExcelFile.xls");
    Response.ContentType = "application/excel";
    StringWriter sw = new StringWriter();
    HtmlTextWriter htw = new HtmlTextWriter(sw);
    gridview1.RenderControl(htw);
    Response.Write(style); 
    Response.Write(sw.ToString());
    Response.End();
    }
    public override void VerifyRenderingInServerForm(Control control)
    {}
    或使用excel模板
      

  4.   

    这里就重新定义个gridview,然后在绑定数据源导出
      

  5.   


    protected void Btn_Click(object sender, EventArgs e)
    {
    string style = @"<style> .text { mso-number-format:\@; } </script> ";  
    Response.ClearContent();
    Response.AddHeader("content-disposition", "attachment; filename=MyExcelFile.xls");
    Response.ContentType = "application/excel";
    StringWriter sw = new StringWriter();
    HtmlTextWriter htw = new HtmlTextWriter(sw);
    gridview1.RenderControl(htw);
    Response.Write(style);  
    Response.Write(sw.ToString());
    Response.End();
    }
    public override void VerifyRenderingInServerForm(Control control)
    {}导出的时候,先把允许分页设置为true,导出之后在设为false,就行了!
      

  6.   

    为什么我现在我导出数据时,客户端提示了“打开,保存,消息”,但是当你点击“打开或保存”时,就会关联迅雷下载当前页面,而不会把excel下下来。
    这个页面是通过url带参来查询数据的,其它不是通过url带参进行查询的页面不存该问题。
    以下是网上的一段导出EXCEL代码:Response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");
            Response.AppendHeader("Content-Disposition", "attachment;filename=" + System.Web.HttpUtility.UrlEncode(FileName, System.Text.Encoding.UTF8) + ".xls");
            
            string colHeaders = "", ls_item = "";        //定义表对象与行对象,同时用DataSet对其值进行初始化
            System.Data.DataTable dt = ds.Tables[0];
            DataRow[] myRow = dt.Select();//可以类似dt.Select("id>10")之形式达到数据筛选目的
            int i = 0;
            int cl = dt.Columns.Count;        //取得数据表各列标题,各标题之间以t分割,最后一个列标题后加回车符
            for (i = 0; i < cl; i++)
            {
                if (i == (cl - 1))//最后一列,加n
                {
                    colHeaders += dt.Columns[i].Caption.ToString() + "\n";
                }
                else
                {
                    colHeaders += dt.Columns[i].Caption.ToString() + "\t";
                }        }
            Response.Write(colHeaders);
            //向HTTP输出流中写入取得的数据信息        //逐行处理数据  
            foreach (DataRow row in myRow)
            {
                //当前行数据写入HTTP输出流,并且置空ls_item以便下行数据    
                for (i = 0; i < cl; i++)
                {
                    if (i == (cl - 1))//最后一列,加n
                    {
                        ls_item += row[i].ToString() + "\n";
                    }
                    else
                    {
                        ls_item += row[i].ToString() + "\t";
                    }            }
                Response.Write(ls_item);
                ls_item = "";
            }
            Response.Flush();
            Response.End();现在很郁闷,都不知道怎么回事?
      

  7.   


    private 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);
                string colHeaders = "", ls_item = "";            ////定义表对象与行对象,同时用DataSet对其值进行初始化
                //DataTable dt = ds.Tables[0];
                DataRow[] myRow = dt.Select();//可以类似dt.Select("id>10")之形式达到数据筛选目的
                int i = 0;
                int cl = dt.Columns.Count;            //取得数据表各列标题,各标题之间以t分割,最后一个列标题后加回车符
                for (i = 0; i < cl; i++)
                {
                    if (i == (cl - 1))//最后一列,加n
                    {
                        colHeaders += dt.Columns[i].Caption.ToString() + "\n";
                    }
                    else
                    {
                        colHeaders += dt.Columns[i].Caption.ToString() + "\t";
                    }            }
                resp.Write(colHeaders);
                //向HTTP输出流中写入取得的数据信息            //逐行处理数据 
                foreach (DataRow row in myRow)
                {
                    //当前行数据写入HTTP输出流,并且置空ls_item以便下行数据   
                    for (i = 0; i < cl; i++)
                    {
                        if (i == (cl - 1))//最后一列,加n
                        {
                            ls_item += row[i].ToString() + "\n";
                        }
                        else
                        {
                            ls_item += row[i].ToString() + "\t";
                        }                }
                    resp.Write(ls_item);
                    ls_item = "";            }
                resp.End();
            }和你的代码差不多,这个就是将一个DataTable中的数据导出到Excel中。(可以使用这个,我在一个项目中就是用的这个)
      

  8.   

    UP,百度一下gridview导出excel,一大把