FineUI 官方论坛

标题: grid导出excel问题 [打印本页]

作者: 啃O    时间: 2012-6-19 14:06
标题: grid导出excel问题
测试环境:在ie7下 用演示程序中的一个grid表格进行导出操作 开始以为是机子安装了office2007的原因,卸载后问题依旧,求高手分析一下是何原因。
作者: 啃O    时间: 2012-6-20 13:03
大家都能将grid导出excel吗? 谁遇到和我一样的问题了!
作者: ☆幻~精灵    时间: 2012-6-20 13:32
啃O 发表于 2012-6-20 13:03
大家都能将grid导出excel吗? 谁遇到和我一样的问题了!

导出,和框架本身没什么关系吧!将数据装载到GridView,然后输出到客户端就是了。
作者: 啃O    时间: 2012-6-20 14:37
我也不知道我的为什么不行 我就是用的官方演示上的grid
后台button代码如下
            Response.ClearContent();
            Response.AddHeader("content-disposition", "attachment; filename=MyExcelFile.xls");
            Response.ContentType = "application/excel";
            StringWriter sw = new StringWriter();
            HtmlTextWriter htw = new HtmlTextWriter(sw);
            Grid1.RenderControl(htw);
            Response.Write(sw.ToString());
            Response.End();  
作者: ☆幻~精灵    时间: 2012-6-20 15:26
啃O 发表于 2012-6-20 14:37
我也不知道我的为什么不行 我就是用的官方演示上的grid
后台button代码如下
            Response.ClearCo ...

额!我没注意到官方有导出xls的示例。我一般是直接将数据装载到Asp.Net的GridView控件,然后导出!呵呵!
作者: 啃O    时间: 2012-6-20 15:44
我只是用了官方一个grid演示页面 里面的导出按钮和代码是我自己加的
作者: ☆幻~精灵    时间: 2012-6-20 16:01
啃O 发表于 2012-6-20 15:44
我只是用了官方一个grid演示页面 里面的导出按钮和代码是我自己加的

没试过,你那种方式导出!呵呵!
作者: 啃O    时间: 2012-6-21 02:22
有用extaspnet中grid导出excel成功的吗?有的话给回复一下,我想确定一下是我代码问题还是控件的问题,纠结好长时间了
作者: 〓飚〓    时间: 2012-6-21 08:28
本帖最后由 〓飚〓 于 2012-6-21 08:29 编辑
啃O 发表于 2012-6-20 14:37
我也不知道我的为什么不行 我就是用的官方演示上的grid
后台button代码如下
            Response.ClearCo ...


Grid1.RenderControl(hw); 这样写好像不行吧,跟GridView1.RenderControl(hw);应该是不一样的
作者: 啃O    时间: 2012-6-21 13:16
〓飚〓 发表于 2012-6-21 08:28
Grid1.RenderControl(hw); 这样写好像不行吧,跟GridView1.RenderControl(hw);应该是不一样的 ...

我是看三石大哥的博客上这么用的。
作者: 易水临风    时间: 2012-6-21 13:54
啃O 发表于 2012-6-20 14:37
我也不知道我的为什么不行 我就是用的官方演示上的grid
后台button代码如下
            Response.ClearCo ...

应该使用这种的:
   Response.ClearContent();
    Response.AddHeader("content-disposition", "attachment; filename=MyExcelFile.xls");
    Response.ContentType = "application/excel";
    Response.Write(GetGridTableHtml(Grid1));
    Response.End();


private string GetGridTableHtml(Grid grid)
{
    StringBuilder sb = new StringBuilder();
    sb.Append("<table cellspacing=\"0\" rules=\"all\" border=\"1\" style=\"border-collapse:collapse;\">");
    sb.Append("<tr>");
    foreach (GridColumn column in grid.Columns)
    {
        sb.AppendFormat("<td>{0}</td>", column.HeaderText);
    }
    sb.Append("</tr>");

    foreach (GridRow row in grid.Rows)
    {
        sb.Append("<tr>");
        foreach (object value in row.Values)
        {
            string html = value.ToString();
            sb.AppendFormat("<td>{0}</td>", html);
        }
        sb.Append("</tr>");
    }
    sb.Append("</table>");
    return sb.ToString();
}

作者: 啃O    时间: 2012-6-21 14:41
易水临风 发表于 2012-6-21 13:54
应该使用这种的:
   Response.ClearContent();
    Response.AddHeader("content-disposition", "attac ...

呵呵 谢谢易水临风 问题解决了
作者: 易水临风    时间: 2012-6-21 15:00
啃O 发表于 2012-6-21 14:41
呵呵 谢谢易水临风 问题解决了

哈哈...我的问题还没解决啊,为什么有些机器导出来显示乱码呀?
作者: 〓飚〓    时间: 2012-6-23 13:33
啃O 发表于 2012-6-21 13:16
我是看三石大哥的博客上这么用的。

有吗?给个链接看看?
作者: 杜志彬    时间: 2012-8-22 00:22
乱码是输出内容编码的问题。请参考:

            HttpResponse Response = HttpContext.Current.Response;
            Response.Clear();
            Response.Buffer = true;
            Response.Charset = "GB2312";
            Response.AppendHeader("Content-Disposition", String.Format("attachment;filename={0}.xls", HttpContext.Current.Server.UrlEncode("导出数据")));
            //设置输出流为简体中文
            Response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");
            //设置输出文件类型为excel文件。如果需要为WORD文件,则为Response.ContentType = "application/ms-word";
            Response.ContentType = "application/ms-excel";

作者: 〓飚〓    时间: 2012-8-22 03:47
本帖最后由 〓飚〓 于 2012-8-22 04:28 编辑

关于输出流导出Excel的问题,还是新开个帖子讲吧
作者: 94209119    时间: 2012-8-22 07:01
我的extaspnet grid导出excel,是把数据装到datatable,用ExcelEngine 导出的
作者: 94209119    时间: 2012-8-22 07:01
我的extaspnet grid导出excel,是把数据装到datatable,用ExcelEngine 导出的
作者: ゛阳光灿烂下的    时间: 2012-9-10 02:33
易水临风 发表于 2012-6-21 13:54
应该使用这种的:
   Response.ClearContent();
    Response.AddHeader("content-disposition", "attac ...

为什么我点击完按钮之后没有任何反应呢,按钮还禁用了,是不是代码有什么问题呢
protected void Button1_Click(object sender, EventArgs e)
        {
            Response.ClearContent();
            Response.AddHeader("content-disposition", "attachment; filename=MyExcelFile.xls");
            Response.ContentType = "application/excel";
            Response.Write(GetGridTableHtml(Grid1));
            Response.End();
        }


        private string GetGridTableHtml(Grid grid)
        {
            StringBuilder sb = new StringBuilder();
            sb.Append("<table cellspacing=\"0\" rules=\"all\" border=\"1\" style=\"border-collapse:collapse;\">");
            sb.Append("<tr>");
            foreach (GridColumn column in grid.Columns)
            {
                sb.AppendFormat("<td>{0}</td>", column.HeaderText);
            }
            sb.Append("</tr>");

            foreach (GridRow row in grid.Rows)
            {
                sb.Append("<tr>");
                foreach (object value in row.Values)
                {
                    string html = value.ToString();
                    sb.AppendFormat("<td>{0}</td>", html);
                }
                sb.Append("</tr>");
            }
            sb.Append("</table>");
            return sb.ToString();
        }
作者: 易水临风    时间: 2012-9-10 12:48
゛阳光灿烂下的 发表于 2012-9-10 02:33
为什么我点击完按钮之后没有任何反应呢,按钮还禁用了,是不是代码有什么问题呢
protected void Button1_ ...

还要设置Button的EnableAjax="false" DisableControlBeforePostBack="false"




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