Asp.net输出Excel文件并且下载该文件以及某些细节问题解决

使用asp.net输出Excel文件并且下载,网上资源很多
我也是参照网上资源写的

简单流程,就是页面上方一个datagrid控件或者gridview控件,后来绑定数据到控件上,然后输出控件呈现的html代码,输出的http流设置好相应的头文件就可以

你可以不在页面上方数据控件,直接在后台生成datagrid控件,然后绑定数据并输出,也是可以,只不过Excel的列就是数据库的列,一般会是英文的,显示不太友好。一般哈还是在页面放一个datagrid控件,设置好头名称之类的

这是前台html代码
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="down.aspx.cs" Inherits="card_manage.Mall.down" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>无标题页</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
   
     <asp:DataGrid ID="DGCardUList" runat="server" Width="98%" AutoGenerateColumns="False" HorizontalAlign="Center" BorderColor="Gray" BorderStyle="Solid" BorderWidth="1px" CssClass="font06">
                        <Columns>
                            <asp:TemplateColumn HeaderText="楼盘编号">
                                <HeaderStyle HorizontalAlign="Center" BorderColor="Gray" BorderStyle="Solid" BorderWidth="1px"></HeaderStyle>
                                <ItemStyle HorizontalAlign="Center" Height="25px" Width="60px" BorderColor="Gray"></ItemStyle>
                                <ItemTemplate>
                                   <%#Eval("NewCode")%>
                                </ItemTemplate>
                                <FooterStyle BorderStyle="Solid" BorderWidth="1px" />
                            </asp:TemplateColumn>        
                             <asp:TemplateColumn HeaderText="城市">
                                <HeaderStyle HorizontalAlign="Center" BorderColor="Gray" BorderStyle="Solid" BorderWidth="1px"></HeaderStyle>
                                <ItemStyle HorizontalAlign="Center" Height="25px" Width="60px" BorderColor="Gray"></ItemStyle>
                                <ItemTemplate>
                                   <%#Eval("City")%>
                                </ItemTemplate>
                                <FooterStyle BorderStyle="Solid" BorderWidth="1px" />
                            </asp:TemplateColumn>
                             <asp:TemplateColumn HeaderText="会员类型">
                                <HeaderStyle HorizontalAlign="Center" BorderColor="Gray" BorderStyle="Solid" BorderWidth="1px"></HeaderStyle>
                                <ItemStyle HorizontalAlign="Center" Height="25px" Width="60px" BorderColor="Gray"></ItemStyle>
                                <ItemTemplate>
                                   <%#Eval("UserType")%>
                                </ItemTemplate>
                                <FooterStyle BorderStyle="Solid" BorderWidth="1px" />
                            </asp:TemplateColumn>



                        </Columns>
                        <HeaderStyle BorderColor="Gray" BorderStyle="Solid" BorderWidth="1px" Height="25px"  />
                        <ItemStyle BorderColor="Gray" BorderStyle="Solid" BorderWidth="1px" HorizontalAlign="Center" />
                        <AlternatingItemStyle BorderColor="Gray" BorderStyle="Solid" BorderWidth="1px" />
                        <FooterStyle BorderColor="Gray" BorderStyle="Solid" BorderWidth="1px" />
                    </asp:DataGrid>
    </div>
    </form>
</body>
</html>

后台一个是绑定数据方法,一个输出Excel流的方法
 public void Downtt()
        {
           
           string newcode = "1010000000";
            string where = " 1 = 1";
            string id = newcode.ToString().Substring(newcode.ToString().Length - 1);
            string table = "ProjSubscriptionUser_" + id;

            DataSet ds = ps.GetAllUserNoPager(table, where);
            this.DGCardUList.DataSource = ds;
            this.DGCardUList.DataBind();
            ResponseExcel();
        }
   /// <summary>
        /// 输出Excel
        /// </summary>
        /// <param name="dataSource">数据源</param>
        private void ResponseExcel()
        {
            try
            {
                Response.Clear();
                Response.Buffer = true;
                Response.Charset = "GB2312";
                Response.AppendHeader("Content-Disposition", "attachment;filename=list.xls");
                Response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");//设置输出流为简体中文
                Response.ContentType = "application/ms-excel";//设置输出文件类型为excel文件。
                this.EnableViewState = false;
                System.Globalization.CultureInfo myCItrad = new System.Globalization.CultureInfo("ZH-CN", true);
                System.IO.StringWriter oStringWriter = new System.IO.StringWriter(myCItrad);
                System.Web.UI.HtmlTextWriter oHtmlTextWriter = new System.Web.UI.HtmlTextWriter(oStringWriter);
                this.DGCardUList.RenderControl(oHtmlTextWriter);
                Response.Write(oStringWriter.ToString());
                Response.Flush();
                Response.End();

            }
            catch (Exception ee)
            {
            }

        }

就可以就ok。里面的 细节字段写的比较清楚,网上也很多讲解的
我这里要说的我遇到的几个问题
我遇到的问题就是最后输出下载的文件时候,ie弹出对话框,说ie无法下载文件
我认为主要是下面两个问题:
1.前台datagrid的控件模板,最好不要使用<asp:BoundColumn>,最好还是按照我的博客html来输出,也不会有乱码
2.这个下载页面一定不要放到名字 比较长的文件夹下, 我刚开始这个页面在一个文件夹名字十几个长度的下面,后来放到一个4个 字母的文件夹下就可以了,不会弹出报错

比较奇怪


本文使用Blog_Backup未注册版本导出,请到soft.pt42.com注册。

转载于:https://www.cnblogs.com/zjypp/archive/2010/04/29/2319361.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值