您的位置:首页 > 编程语言 > ASP

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

2010-04-29 19:26 911 查看
使用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注册。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐