闲坐敲棋

有约不来过夜半,闲敲棋子落灯花

导航

dataset 导出 Excel

Posted on 2009-09-29 11:49  闲坐敲棋  阅读(243)  评论(0编辑  收藏  举报

    protected void DtToExcel(DataSet ds, string tableName, bool containColumName,string fileName)   
    {
        if (ds == null || (!ds.Tables.Contains(tableName) && ds.Tables.Count < int.Parse(tableName)))
        {
            return ;
        }
        DataTable tb = !ds.Tables.Contains(tableName) ? ds.Tables[int.Parse(tableName)] : ds.Tables[tableName];

        StringBuilder strb = new StringBuilder();   
        strb.Append(" <html xmlns:o=\"urn:schemas-microsoft-com:office:office\"");   
        strb.Append("xmlns:x=\"urn:schemas-microsoft-com:office:excel\"");   
        strb.Append("xmlns=\"http://www.w3.org/TR/REC-html40/"");   
        strb.Append(" <head> <meta http-equiv='Content-Type' content='text/html; charset=gb2312'>");   
        strb.Append(" <style>");   
        strb.Append(".xl26");   
        strb.Append(" {mso-style-parent:style0;");   
        strb.Append(" font-family:\"宋体\", serif;");   
        strb.Append(" mso-font-charset:0;");   
        strb.Append(" mso-number-format:\"@\";}");   
        strb.Append(" </style>");   
        strb.Append(" <xml>");   
        strb.Append(" <x:ExcelWorkbook>");   
        strb.Append("  <x:ExcelWorksheets>");   
        strb.Append("  <x:ExcelWorksheet>");   
        strb.Append("    <x:Name>Sheet1 </x:Name>");  
        strb.Append("    <x:WorksheetOptions>");   
        strb.Append("    <x:DefaultRowHeight>285 </x:DefaultRowHeight>");   
        strb.Append("    <x:Selected/>");   
        strb.Append("    <x:Panes>");   
        strb.Append("      <x:Pane>");   
        strb.Append("      <x:Number>3 </x:Number>");   
        strb.Append("      <x:ActiveCol>1 </x:ActiveCol>");   
        strb.Append("      </x:Pane>");   
        strb.Append("    </x:Panes>");   
        strb.Append("    <x:ProtectContents>False </x:ProtectContents>");   
        strb.Append("    <x:ProtectObjects>False </x:ProtectObjects>");   
        strb.Append("    <x:ProtectScenarios>False </x:ProtectScenarios>");   
        strb.Append("    </x:WorksheetOptions>");   
        strb.Append("  </x:ExcelWorksheet>");   
        strb.Append("  <x:WindowHeight>6750 </x:WindowHeight>");   
        strb.Append("  <x:WindowWidth>10620 </x:WindowWidth>");   
        strb.Append("  <x:WindowTopX>480 </x:WindowTopX>");   
        strb.Append("  <x:WindowTopY>75 </x:WindowTopY>");   
        strb.Append("  <x:ProtectStructure>False </x:ProtectStructure>");   
        strb.Append("  <x:ProtectWindows>False </x:ProtectWindows>");   
        strb.Append(" </x:ExcelWorkbook>");   
        strb.Append(" </xml>");   
        strb.Append("");   
        strb.Append(" </head> <body> <table align=\"center\" style='border-collapse:collapse;table-layout:fixed'>");
        if (containColumName)
        {
            strb.Append("<tr>");
            //写列标题   
            int columncount = tb.Columns.Count;
            for (int columi = 0; columi < columncount; columi++)
            {
                strb.Append(" <td> <b>" + tb.Columns[columi] + " </b> </td>");
            }

            strb.Append(" </tr>");   
        }
        //写数据   
        for (int i = 0; i < tb.Rows.Count; i++)   
        {   
            strb.Append(" <tr>");  
            for (int j = 0; j < tb.Columns.Count; j++)   
            {   
                strb.Append(" <td class='xl26'>" + tb.Rows[i][j].ToString() + " </td>");   
            }   
            strb.Append(" </tr>");   
        }      
        strb.Append(" </body> </html>");   
        Response.Clear();   
        Response.Buffer = true;   
        Response.Charset = "GB2312";
        Response.AppendHeader("Content-Disposition", "attachment;filename=" + Server.UrlEncode(fileName));   
        Response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");//设置输出流为简体中文   
        Response.ContentType = "application/ms-excel";//设置输出文件类型为excel文件。   
        this.EnableViewState = false;   
        Response.Write(strb);   
        Response.End();   
    }


=============

 调用     DataSet ds = new DataSet();
           DataTable dt = new DataTable();
            DataColumn dc;
            DataRow dr;

            //---------------------添加字段----------------

            //建立字段1
            dc = new DataColumn();
            dc.DataType = System.Type.GetType("System.Int32");
            dc.ColumnName = "id";
            dc.AutoIncrement = true;//标识
            dc.AutoIncrementSeed = 1;//标识种子
            dc.AutoIncrementStep = 1;//标识递增量
            dt.Columns.Add(dc);
            //建立字段2
            dc = new DataColumn();
            dc.DataType = System.Type.GetType("System.String");
            dc.ColumnName = "sitename";
            dc.AllowDBNull = true;
            dt.Columns.Add(dc);
            //建立字段3
            dc = new DataColumn();
            dc.DataType = System.Type.GetType("System.String");
            dc.ColumnName = "url";
            dc.AllowDBNull = true;
            dt.Columns.Add(dc);
            //设置主键
            DataColumn[] newdc = new DataColumn[1];//可设置多个字段为主键
            newdc[0] = dt.Columns["id"];
            dt.PrimaryKey = newdc;

            //---------------------添加记录----------------

            //记录1
            dr = dt.NewRow();
            dr["sitename"] = "尚网";
            dr["url"] = "http://www.jjshang.com/";
            dt.Rows.Add(dr);
            //记录2
            dr = dt.NewRow();
            dr["sitename"] = "木子屋";
            dr["url"] = "http://www.mzwu.com/";
            dt.Rows.Add(dr);
            //记录3
            dr = dt.NewRow();
            dr["sitename"] = "网易";
            dr["url"] = "http://www.126.com/";
            dt.Rows.Add(dr);
            ds.Tables.Add(dt);
            ds.Tables[0].TableName = "HomePage";
            DtToExcel(ds,"HomePage",true, "好好学习.xls");