我的repeater是用table方式写的。

解决方案 »

  1.   

    只是个简单的例子,需要你把数据库链接之类的东西改改:
    页面代码如下:<%@ Page Language="C#" 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:Repeater ID="Repeater1" runat="server">
                <ItemTemplate>
                    <asp:Label Text='<%# DataBinder.Eval(Container.DataItem,"uid") %>' runat="server" ID = "lbl" />
                </ItemTemplate>
            </asp:Repeater>
            <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Button" /></div>
        </form>
    </body>
    </html>
    后台代码如下:using System;
    using System.Data;
    using System.Configuration;
    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;
    using System.Data.SqlClient;
    using System.IO;public partial class _Default : System.Web.UI.Page 
    {
        String con = "server=.;uid=sa;pwd=sql;database=test";
        String sql = "select * from test";
        public static DataSet ds = new DataSet();
        SqlDataAdapter sda;
        SqlConnection sqlcnn;
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                LoadData();
            }
        }    private void LoadData()
        {
            sqlcnn = new SqlConnection(con);
            sda = new SqlDataAdapter(sql, sqlcnn);
            sda.Fill(ds);
            this.Repeater1.DataSource = ds;
            this.Repeater1.DataBind();
        }    protected void Button1_Click(object sender, EventArgs e)
        {
            ExportExcel(this.Page, ds.Tables[0], @"MyExcelFile");
        }    public static void ExportExcel(System.Web.UI.Page page, System.Data.DataTable dtExcel, string strFileName)
        {
            string strExtFile = strFileName.Trim();
            if (strExtFile.Substring(strExtFile.Length - 4, 4).ToUpper() != ".XLS")
            {
                strExtFile += ".XLS";
            }
            page.Response.Clear();
            page.Response.Buffer = true;
            page.Response.Charset = "utf-8";
            page.Response.ContentEncoding = System.Text.Encoding.GetEncoding("utf-8");
            page.Response.AppendHeader("Content-Disposition", "Attachment;fileName=" + strFileName);
            page.Response.ContentType = "application/vnd.ms-excel";
            page.Response.Charset = "";
            StringWriter stringWrite = new StringWriter();
            HtmlTextWriter htmlTxtWrite = new HtmlTextWriter(stringWrite);
            htmlTxtWrite.Write("<html>\r\n<meta content=\"text/html;charset=utf-8\"></meta>\r\n<body>\r\n");
            htmlTxtWrite.Write("<table cellspacing=\"0\" border=\"1\">\r\n");
            htmlTxtWrite.Write("<tr>\r\n");
            for (int i = 0; i < dtExcel.Columns.Count; i++)
            {
                string strTitle = ConvertToHtmlCode(dtExcel.Columns[i].Caption.Trim());
                htmlTxtWrite.Write("\t<td bgcolor=\"lightblue\">" + strTitle + "</td>\r\n");
            }
            htmlTxtWrite.Write("</tr>\r\n");
            foreach (DataRow dr in dtExcel.Rows)
            {
                htmlTxtWrite.Write("<tr>\r\n");
                for (int i = 0; i < dtExcel.Columns.Count; i++)
                {
                    string strValue = "";
                    if (dtExcel.Columns[i].DataType == typeof(System.DateTime))
                    {
                        strValue = DateTimeConvertToString(dr[i]);
                    }
                    else
                    {
                        strValue = ConvertToHtmlCode(dr[i].ToString().Trim());
                    }
                    htmlTxtWrite.Write("\t<td>" + strValue + "</td>\r\n");
                }
                htmlTxtWrite.Write("</tr>\r\n");
            }
            htmlTxtWrite.Write("\r\n</table>\r\n</body>\r\n</html>");
            page.Response.Write(stringWrite.ToString());
            page.Response.End();
        }    public static string DateTimeConvertToString(Object obj)
        {
            return DateTimeConvertToString(obj, false);
        }
        public static DateTime ConvertToDateTime(Object obj)
        {
            return ConvertToDateTime(obj, DefaultDate);
        }
        public static DateTime DefaultDate
        {
            get { return DateTime.Parse("1990-01-01"); }
        }
        public static string DateConvertToString(Object obj, bool bShow)
        {
            DateTime dtDate = ConvertToDateTime(obj);
            if (dtDate == DefaultDate && bShow == false)
            {
                return "";
            }
            return dtDate.ToString("yyyy-MM-dd");
        }
        public static string DateTimeConvertToString(Object obj, bool bShow)
        {
            DateTime dtDateTime = ConvertToDateTime(obj);
            if (dtDateTime == DefaultDate && bShow == false)
            {
                return "";
            }
            if (dtDateTime.Hour == 0 && dtDateTime.Minute == 0 && dtDateTime.Second == 0)
            {
                return dtDateTime.ToString("yyyy-MM-dd");
            }
            return dtDateTime.ToString("yyyy-MM-dd hh:mm:ss");
        }
        public static DateTime ConvertToDateTime(Object obj, DateTime dateDefault)
        {
            try
            {
                DateTime dateRet = DateTime.Parse(obj.ToString().Trim());
                if ((dateRet > DateTime.Parse("1753-01-01 12:00:00"))
                    && (dateRet < DateTime.Parse("9999-01-01 23:59:59")))
                {
                    return dateRet;
                }
            }
            catch
            {
            }
            return dateDefault;
        }    public static string ConvertToHtmlCode(string source)
        {
            string result = "";
            result = source.Replace("<", "&lt;");
            result = result.Replace(">", "&gt;");
            result = result.Replace("\r\n", "<BR>");
            result = result.Replace(" ", "&nbsp;");
            return result;
        }}仅是一个简单的例子,供大家讨论
    在本机已经测试通过
    如有问题请回复