gridview中的数据在页面中显示,点击按钮执行导出gridview中的数据到excel模板当中,具体导出过程该如何实现?
望好心人帮忙,最好附实现代码!
问题解决了,分数继续追加!不差分儿!

解决方案 »

  1.   

    private void ShowExcel(DataTable table)
      {
      DateTime start = DateTime.Now;
      Excel.Application app = new Excel.ApplicationClass();
      app.Visible = false;
      app.DisplayInfoWindow = false;
      Excel.Workbooks books = app.Workbooks;
      Excel.Workbook book = books.Open(Server.MapPath("Template/Allowance.xls"), Missing.Value, true, Missing.Value, Missing.Value,
      Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value,
      Missing.Value, Missing.Value, Missing.Value, Missing.Value);
      Excel.Worksheet sheet = (Excel.Worksheet)book.Sheets[1];  DateTime end = DateTime.Now;  try
      {
      int currentRow = 1;
      string[] data = new string[table.Columns.Count];
      foreach (DataRow row in table.Rows)
      {
      for (int i = 0; i < row.ItemArray.Length; i++)
      {
      data[i] = row.ItemArray[i].ToString();
      }
      currentRow++;  sheet.Cells[currentRow, 1] = String.Join("|", data);
      Excel.Range range = (Excel.Range)sheet.Cells[currentRow, 1];
      range.TextToColumns(Missing.Value, Excel.XlTextParsingType.xlDelimited, Excel.XlTextQualifier.xlTextQualifierNone,
      false, false, false, false, false, true, "|", Missing.Value, Missing.Value, Missing.Value, Missing.Value);
      ((Excel.Range)sheet.Cells[currentRow, 1]).AddComment(row.RowError);  }  sheet.UsedRange.Columns.AutoFit();
      Excel.Borders borders = ((Excel.Borders)sheet.UsedRange.Borders);
      borders.LineStyle = Excel.XlLineStyle.xlContinuous;
      borders.Weight = Excel.XlBorderWeight.xlThin;
      ////凍結儲存格
      //((Excel.Range)sheet.Cells[3, 4]).Select();
      ((Excel.Range)sheet.Cells[2, 4]).Select();
      app.ActiveWindow.FreezePanes = true;  string fileName = DateTime.Now.ToString("yyyyMMddHHmmss") + "_Allowance.xls";
      book.SaveAs(Server.MapPath("Download/" + fileName), Missing.Value, Missing.Value, Missing.Value,
      Missing.Value, Missing.Value, Excel.XlSaveAsAccessMode.xlExclusive, Excel.XlSaveConflictResolution.xlLocalSessionChanges,
      Missing.Value, Missing.Value, Missing.Value, Missing.Value);
      Response.Redirect("Download/" + fileName, false);
      }
      finally
      {
      book.Close(true, Missing.Value, Missing.Value);
      books.Close();
      app.Quit();
      foreach (System.Diagnostics.Process excelProcess in System.Diagnostics.Process.GetProcessesByName("EXCEL"))
      {
      if (excelProcess.StartTime > start && excelProcess.StartTime < end)
      {
      excelProcess.Kill();
      }
      }
      }
      }
      

  2.   

    protected void Btn_ExportClick(object sender, EventArgs e){
    string style = @"<style> .text { mso-number-format:\@; } </script> "; 
    Response.ClearContent();
    Response.AddHeader("content-disposition", "attachment; filename=MyExcelFile.xls");
    Response.ContentType = "application/excel";
    StringWriter sw = new StringWriter();
    HtmlTextWriter htw = new HtmlTextWriter(sw);
    gv.RenderControl(htw);
    Response.Write(style); 
    Response.Write(sw.ToString());
    Response.End();
    }
    打开excel模板,赋值到单元格
    public override void VerifyRenderingInServerForm(Control control)
    {
    }
      

  3.   

    http://topic.csdn.net/u/20091126/14/70312853-b98a-4634-bc05-e13b50fa1b90.html
      

  4.   


    protected void btExcel_Click(object sender, EventArgs e)
        {
            Response.Clear();
            Response.AddHeader("content-disposition", "attachment;filename=FileName.xls");        Response.Charset = "gb2312";
            Response.ContentEncoding = System.Text.Encoding.UTF7;  //没有这一行,在Excel中的中文以乱码显示
            Response.ContentType = "application/ms-excel";//设置输出文件类型为excel文件。         System.IO.StringWriter stringWrite = new System.IO.StringWriter();        System.Web.UI.HtmlTextWriter htmlWrite =
            new HtmlTextWriter(stringWrite);
            gvYearView.AllowPaging = false;
            BindgvYearView(0);
            gvYearView.RenderControl(htmlWrite);        Response.Write(stringWrite.ToString());        Response.End();        gvYearView.AllowPaging = true;
            BindgvYearView(0);
        }
        public override void VerifyRenderingInServerForm(Control control) //虽然该函数没有函数体,但只有重载此函数程序才能正常运行
        {    }
      

  5.   


      public void CreateExcel(DataSet ds, string typeid, string FileName)
        {
            HttpResponse resp;
            resp = Page.Response;
            resp.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");
            resp.AppendHeader("Content-Disposition", "attachment;filename=" + FileName);
            string colHeaders = "", ls_item = "";
            int i = 0;        //定义表对象与行对像,同时用DataSet对其值进行初始化 
            DataTable dt = ds.Tables[0];
            DataRow[] myRow = dt.Select("");
            // typeid=="1"时导出为Excel格式文件;typeid=="2"时导出为XML格式文件 
            if (typeid == "1")
            {
                //取得数据表各列标题,各标题之间以\t分割,最后一个列标题后加回车符 
                for (i = 0; i < dt.Columns.Count - 1; i++)
                {
                    colHeaders += dt.Columns[i].Caption.ToString() + "\t";
                    //colHeaders +=dt.Columns[i].Caption.ToString() +"\n"; 
                }
                colHeaders += dt.Columns[i].Caption.ToString() + "\n";
                //向HTTP输出流中写入取得的数据信息 
                resp.Write(colHeaders);
                //逐行处理数据 
                foreach (DataRow row in myRow)
                {
                    //在当前行中,逐列获得数据,数据之间以\t分割,结束时加回车符\n 
                    for (i = 0; i < dt.Columns.Count - 1; i++)
                    {
                        ls_item += row[i].ToString() + "\t";
                        //ls_item += row[i].ToString() +"\n"; 
                    }
                    ls_item += row[i].ToString() + "\n";
                    //当前行数据写入HTTP输出流,并且置空ls_item以便下行数据 
                    resp.Write(ls_item);
                    ls_item = "";
                }
            }
            else
            {
                if (typeid == "2")
                {
                    //从DataSet中直接导出XML数据并且写到HTTP输出流中 
                    resp.Write(ds.GetXml());
                }
            }
            //写缓冲区中的数据到HTTP头文件中 
            resp.End();
        }
      

  6.   

            Response.Clear();
            Response.Buffer = true;
            Response.Charset = "GB2312";
            Response.AppendHeader("Content-Disposition", "attachment;filename=" + Server.UrlEncode(DateTime.Now.ToString("yyyyMMddhhmmss") + ".xls"));
            //Response.ContentEncoding = System.Text.Encoding.GetEncoding("Unicode");
            Response.ContentEncoding = System.Text.Encoding.GetEncoding("UTF-8");
            Response.ContentType = "application/ms-excel";
            this.EnableViewState = false;
            System.IO.StringWriter oStringWriter = new System.IO.StringWriter();
            System.Web.UI.HtmlTextWriter oHtmlTextWriter = new System.Web.UI.HtmlTextWriter(oStringWriter);
            ///test.Columns[0].Visible = false;
            test.RenderControl(oHtmlTextWriter);
            Response.Output.Write(oStringWriter.ToString());
            Response.Flush();
            Response.End();
      

  7.   

           public void dy()
            {
                Response.ClearContent();
                Response.AddHeader("content-disposition", "attachment; filename=MyExcelFile.xls");
                Response.ContentType = "application/excel";
                StringWriter sw = new StringWriter();
                HtmlTextWriter htw = new HtmlTextWriter(sw);
                GridView1.RenderControl(htw);
                Response.Write(sw.ToString());
                Response.End();
            }
           public override void VerifyRenderingInServerForm(Control control)
            {
              
            }  protected void Button1_Click(object sender, EventArgs e)
            {
                dy();
            }