如图所示导出成excel,本人会导的都是一个datatable,这下不知道如何都导出来了,有做过的高人指点一下了,谢谢!

解决方案 »

  1.   

        /// <summary>
        /// 将DataTable 导出为EXCEL,并直接提供下载
        /// </summary>
        /// <param name="ds">需要导处的DataTable</param>
        /// <param name="fileName">到处生成的文件名</param>
        /// 
        public bool ExportExcelByDataTable(DataTable dt, string fileName)
        {
            try
            {
                HttpContext.Current.Response.Clear();
                HttpContext.Current.Response.Charset = "utf-7";
                HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.GetEncoding("utf-7");            HttpContext.Current.Response.ContentType = "application/vnd.ms-excel";
                StringWriter stringWrite = new StringWriter();
                HtmlTextWriter htmlWrite = new HtmlTextWriter(stringWrite);
                DataGrid dg = new DataGrid();
                dg.HeaderStyle.CssClass = "dgHead";
                dg.DataSource = dt;
                dg.DataBind();
                dg.RenderControl(htmlWrite);
                //            GridView gv = new GridView();
                //            gv.HeaderStyle.CssClass = "gvHead";
                //            gv.DataSource = dt;
                //            gv.DataBind();
                //            gv.RenderControl(htmlWrite);
                HttpContext.Current.Response.Write(stringWrite.ToString());
                HttpContext.Current.Response.AddHeader("content-disposition", "attachment; filename=" + HttpUtility.UrlEncode(fileName, System.Text.Encoding.UTF8) + ".xls");
                HttpContext.Current.Response.Charset = "gb2312";
                HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.GetEncoding("gb2312");
                HttpContext.Current.Response.End();
                return true;
            }
            catch
            {
                return false;
            }
        }
      

  2.   

    //列表输出
    private void Export(string FileType, string FileName)
        {
            Response.Charset = "GB2312";
            Response.ContentEncoding = System.Text.Encoding.UTF8;
            Response.AppendHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(FileName, Encoding.UTF8).ToString());
            Response.ContentType = FileType;
            this.EnableViewState = false;
            StringWriter tw = new StringWriter();
            HtmlTextWriter hw = new HtmlTextWriter(tw);
            rpList.RenderControl(hw);   //repeater
            Response.Write(tw.ToString());
            Response.End();
        }public override void VerifyRenderingInServerForm(Control control)
    {
    }
      

  3.   

    调用的时候 Export("application/ms-excel", "XXXXX.xls");
      

  4.   

    打开EXCEL模板导出excel
      Response.ContentEncoding = System.Text.Encoding.UTF7;
      Response.AppendHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(FileName, Encoding.UTF8).ToString());
      Response.ContentType = "application/ms-excel";
      this.EnableViewState = false;
      StringWriter tw = new StringWriter();
      HtmlTextWriter hw = new HtmlTextWriter(tw);
      rpt.RenderControl(hw);
      Response.Write(tw.ToString());
      Response.End(); 
      

  5.   

    导出成Excel文件,因为是repeater里面嵌套repeater,要导出的excel文件跟如图所示的格式差不多,楼上的说的我都试过了,都没达到要求,都不能导出我所要的
      

  6.   

    方法1:用office组件生产excel,
    //此代码基于vs2005下的vsto2005平台下的部分代码。        private void DataBind()
            {
                dbname = @"C:\Documents and Settings\xiangx\桌面\MTshapeUp.mdb";
                string Dbname = "PROVIDER=Microsoft.Jet.OLEDB.4.0;DATA Source=" + dbname;
                OleDbConnection con = new OleDbConnection(Dbname);
                OleDbCommand com = new OleDbCommand("select * from T_MT_INFO_RULE");
                try
                {
                    con.Open();
                    com.CommandType = CommandType.Text;
                    com.Connection = con;
                    OleDbDataAdapter da = new OleDbDataAdapter(com);
                    ds = new DataSet("Test");
                    da.Fill(ds);
                }
                catch
                { 
                
                }
                finally
                {
                    con.Close();
                }
              DataTable dt = ds.Tables[0];
                
                Excel.Worksheet ws = (Excel.Worksheet)Application.ActiveSheet;
                Excel.Range rng = ws.get_Range("A2","E3");          string [,]datasource = Tabletoarrays(dt);//使用二维数组对这个范围进行简单赋值。          rng.Value2 = datasource;          Application.DisplayAlerts = false;
                        GC.Collect();
              }        private  string[,] Tabletoarrays(DataTable dt)
            {
                int tablerows = dt.Rows.Count;
                int tablecols = dt.Columns.Count;
                string[,] Arrays = new string[tablerows, tablecols];
                for (int i = 0; i < tablerows; i++)
                {
                    for (int j = 0; j < tablecols; j++)
                    {
                        Arrays[i, j] = Convert.ToString(dt.Rows[i][j]);
                    }
                }
                return Arrays;
            }这个value指示的是简单邦定,还有对于Datasourse的复杂绑定,将在以后介绍。------------------------
    方法2:生成txt文本,用逗号分隔的格式化文本,做为cvs文件
      

  7.   

    导出EXCEL老出现乱码,不知道楼主遇到过没
      

  8.   


    protected void Btn_OutEXL_Click(object sender, EventArgs e)
            {
                DataBind_Infor();
                string strDate1 = DateTime.Now.ToString("yyyy-MM-dd-HH-mm-ss");
                base.Response.Clear();
                base.Response.ContentEncoding = System.Text.Encoding.GetEncoding("gb2312");
                base.Response.AddHeader("content-disposition", "attachment;filename=工资统计表(" + strDate1.ToString() + ").xlsx");
                base.Response.Charset = "gb2312";//gb2312,utf-8,UTF7
                //base.Response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");
                //Response.ContentType指定文件类型 可以为application/ms-excel、application/ms-word、application/ms-txt、application/ms-html 或其他浏览器可直接支持文档
                base.Response.ContentType = "application/vnd.xls";
                this.EnableViewState = false;
                // 定义一个输入流
                StringWriter writer = new StringWriter();
                HtmlTextWriter Htmlwriter = new HtmlTextWriter(writer);
                this.Rpt_Makes.RenderControl(Htmlwriter);
                //this 表示输出本页,你也可以绑定datagrid,或其他支持obj.RenderControl()属性的控件
                base.Response.Write(writer.ToString());
                base.Response.End();
            }