asp.net 导出excel

这个有局限性,只导出gridview的,可能能导其他吧,没有研究下去了。

有点就是快速,简便。直接代码

using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        
    }
    protected void Button1_Click(object sender, EventArgs e)
    {
        toExcelClk();
    }

    public override void VerifyRenderingInServerForm(Control control)
    {
        // Confirms that an HtmlForm control is rendered for
    }

    private void ToExcel(Control ctl, string FileName)
    {
        HttpContext.Current.Response.Charset = "GBK";
        HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.UTF7;
        HttpContext.Current.Response.ContentType = "application/ms-excel";
        HttpContext.Current.Response.AppendHeader("Content-Disposition", "attachment;filename=" + "" + FileName);
        ctl.Page.EnableViewState = false;
        System.IO.StringWriter tw = new System.IO.StringWriter();
        HtmlTextWriter hw = new HtmlTextWriter(tw);
        ctl.RenderControl(hw);
        HttpContext.Current.Response.Write(tw.ToString().Replace("<a","<span").Replace("/a>","/span"));
        HttpContext.Current.Response.End();
    }

    private void toExcelClk()
    {
        GridView1.AllowPaging = false;
        GridView1.AllowSorting = false;
        GridView1.DataBind();
        ToExcel(GridView1   , "OFS_Data.xls");
        GridView1.AllowPaging = true;
        GridView1.AllowSorting = true;
        GridView1.DataBind();
    }
}
前端的代码

<%@ Page Language="C#" EnableEventValidation = "false" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>

<!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:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataKeyNames="ID" DataSourceID="SqlDataSource1">
            <Columns>
                <asp:TemplateField HeaderText="ID" InsertVisible="False" SortExpression="ID">                  
                    <ItemTemplate>
                  <%--  <a href='show.aspx?id=<%#Eval("ID") %>'><%# Eval("ID") %></a>--%>
                    <a href='show_<%#Eval("ID") %>.html'><%# Eval("ID") %>是啊我</a>    
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:BoundField DataField="name" HeaderText="name" SortExpression="name" />
                <asp:BoundField DataField="pwd" HeaderText="pwd" SortExpression="pwd" />
            </Columns>
        </asp:GridView>
        <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:TestConnectionString %>"
            SelectCommand="SELECT * FROM [user]"></asp:SqlDataSource>
        <asp:Button ID="Button1" runat="server" Text="Button" οnclick="Button1_Click" />
    </div>
    </form>
</body>
</html>

开始的时候,girdview有a标签的也同时导出了,后来想想这种办法就是直接导gridview的。所以解决的办法就是直接把a标签给替换掉:
HttpContext.Current.Response.Write(tw.ToString().Replace("<a","<span").Replace("/a>","/span"));

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值