DataGird导出EXCEL的几个方法(WebControl)

using System;
using System.Data;
using System.Text;
using System.Web;
using System.Web.UI;
using System.Diagnostics;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;
using System.Collections;
namespace bookstore
{
 /// <summary>
 /// myExcel 的摘要说明。
 /// </summary>
 public class myExcel
 {
  public myExcel()
  {
           
  }

/// <summary>
  /// 将DATAGRID导出为EXCEL文件方法一,
  /// 参数是:要导出的DATAGRID的ID和要保存下来的EXCEL文件名
  /// </summary>
  /// <param name="myPage">page</param>
  /// <param name="dg">datagrid</param>
  /// <param name="name">filename</param>  
  private void OutExcel(Page myPage,DataGrid dg,string name)
  {
   HttpResponse Response; 
   Response=myPage.Response;

string name1="attachment;filename="+name+".xls"; 
   dg.Visible=true;
   Response.Clear();
   Response.Buffer= true;
   Response.Charset="GB2312";
  
   Response.AppendHeader("Content-Disposition",name1);

Response.ContentEncoding=System.Text.Encoding.GetEncoding("GB2312");  
   Response.ContentType ="application/ms-excel";

dg.EnableViewState = false;
   System.IO.StringWriter oStringWriter = new System.IO.StringWriter();
   System.Web.UI.HtmlTextWriter oHtmlTextWriter = new System.Web.UI.HtmlTextWriter(oStringWriter);
   dg.RenderControl(oHtmlTextWriter);
   Response.Write(oStringWriter.ToString());
   Response.End();
  }

/// <summary>
  /// 将DATAGRID导出为EXCEL文件方法二,
  /// 参数是:要导出的DATAGRID的ID和要保存下来的EXCEL文件名
  /// </summary>
  /// <param name="myPage">page</param>
  /// <param name="ctl">datagrid</param>
  /// <param name="filename">filename</param>
  public void ExportToExcel(Page myPage,DataGrid ctl,string filename)
  {
   HttpResponse Response; 
   Response=myPage.Response;

bool CurrCtlVisible=ctl.Visible;
   ctl.Visible=true;       
   Response.AppendHeader("Content-Disposition","attachment;filename="+filename+".xls"); 
   Response.ContentEncoding = System.Text.Encoding.GetEncoding("utf-8");
   Response.ContentType = "application/ms-excel";
   ctl.Page.EnableViewState = false;
   System.IO.StringWriter tw = new System.IO.StringWriter();
   System.Web.UI.HtmlTextWriter hw = new HtmlTextWriter(tw);
   ctl.RenderControl(hw);
   Response.Write(tw.ToString());
   Response.End();
           
   ctl.Page.EnableViewState = true;
   ctl.Visible=CurrCtlVisible;
  }

private void DgOutExcel(Page myPage,DataGrid dg,string name)
  {
   HttpResponse Response; 
   Response=myPage.Response;

string name1="attachment;filename="+name+".xls"; 
   dg.Visible=true;
   Response.Clear();
   Response.Buffer= true;
   Response.Charset="GB2312";
  
   Response.AppendHeader("Content-Disposition",name1);

Response.ContentEncoding=System.Text.Encoding.GetEncoding("GB2312");  
   Response.ContentType ="application/ms-excel";

dg.EnableViewState = false;
   System.IO.StringWriter oStringWriter = new System.IO.StringWriter();
   System.Web.UI.HtmlTextWriter oHtmlTextWriter = new System.Web.UI.HtmlTextWriter(oStringWriter);
   dg.RenderControl(oHtmlTextWriter);
   Response.Write(oStringWriter.ToString());
   Response.End();
  }

#region   导出EXCEL,用DATASET

public string myExportString(DataGrid DG,DataSet ds)
  {
   string  HTstring="<table><tr>";
   string Fieldstring="";
   ArrayList myAL=new ArrayList();
   string sRows="<tr>";
   for(int i=0;i<DG.Columns.Count;i++)
   {
    HTstring+="<td>"+DG.Columns[i].HeaderText+"</td>";
    Fieldstring+="<td>"+((System.Web.UI.WebControls.BoundColumn)(DG.Columns[i])).DataField+"</td>";
    myAL.Add(((System.Web.UI.WebControls.BoundColumn)(DG.Columns[i])).DataField); 
   }
                
   for(int k=0;k<ds.Tables[0].Rows.Count;k++)
   {
    foreach(string field in myAL)
    {  
     sRows+= "<td>"+ds.Tables[0].Rows[k][field]+"</td>";
    }
    sRows+="</tr>";
   }      
   HTstring+="</tr>"+sRows+"</table>";

return  HTstring;
  }

public void SaveToExcel(Page myPage, string myExportString,string myFileName)
  {     
   HttpResponse resp;      
   resp=myPage.Response;
   resp.ContentEncoding=System.Text.Encoding.GetEncoding("GB2312");
   resp.AppendHeader("Content-Disposition","attachment;filename="+myFileName+".xls");
   resp.ContentType="application/ms-excel";                                                         
   resp.Write(myExportString); 
   resp.End();
   //resp.Clear();
   //resp.Close();    
  }

public void Export(DataGrid myDG,DataTable dt,HttpResponse response)
  {
   // clean up response object
   response.Clear();
   response.Charset = "";
   response.Charset = "UTF-8";
   //   response.ContentEncoding = System.Text.Encoding.Default;
   response.ContentEncoding=System.Text.Encoding.GetEncoding("GB2312"); 
   // set response object's mime type
   //   response.ContentType = "application/vnd.ms-excel";
   response.AppendHeader("Content-Disposition","attachment;filename=mytest.xls");
   System.IO.StringWriter sw = new System.IO.StringWriter();
   System.Web.UI.HtmlTextWriter htw = new System.Web.UI.HtmlTextWriter(sw);

DataGrid dg = new DataGrid();
   dg.AllowPaging = false;
   dg.AllowSorting = false;

ArrayList myAL=new ArrayList();
   for(int i=0;i<myDG.Columns.Count;i++)
   { 
    // dg.Columns.AddAt(i,myDG.Columns[i]);
    // dg.Columns[i].HeaderText=myDG.Columns[i].HeaderText;  
    myAL.Add(((System.Web.UI.WebControls.BoundColumn)(myDG.Columns[i])).DataField);

for(int k=0;k<dt.Columns.Count;k++)
    {
     foreach(string field in myAL)
     {
      if(dt.Columns[i].ColumnName==field)
      {
       dt.Columns[i].ColumnName=myDG.Columns[i].HeaderText;
      }
     }
    }      
   } 
   dg.DataSource = dt;
   dg.ShowHeader = true;
   dg.HeaderStyle.BackColor = System.Drawing.Color.DarkGray;
   dg.HeaderStyle.ForeColor = System.Drawing.Color.White;
   dg.HeaderStyle.Font.Bold = true;
   dg.AlternatingItemStyle.BackColor = System.Drawing.Color.LightGray; 
   dg.DataBind();

dg.RenderControl(htw);                                       
   response.Write(sw.ToString());
   response.End();
  }

#endregion

}
}

DataGird导出EXCEL的几个方法的更多相关文章

  1. 传参导出Excel表乱码问题解决方法

    业务场景 先描述一下业务场景,要实现的功能是通过搜索框填写参数,然后点击按钮搜索数据,将搜索框的查询参数获取,附加在链接后面,调导Excel表接口,然后实现导出Excel功能.其实做导Excel表功能 ...

  2. .NET导出Excel的四种方法及评测

    .NET导出Excel的四种方法及评测 导出Excel是.NET的常见需求,开源社区.市场上,都提供了不少各式各样的Excel操作相关包.本文,我将使用NPOI.EPPlus.OpenXML.Aspo ...

  3. [转帖].NET导出Excel的四种方法及评测

    .NET导出Excel的四种方法及评测 https://www.cnblogs.com/sdflysha/p/20190824-dotnet-excel-compare.html 导出Excel是.N ...

  4. Asp.net导出Excel(HTML输出方法)

    主要思路: 实例化Gridview,将值绑定后输出...(用烂了的方法) 贴上核心代码: public static void ExportToExcel(DataTable dataList, st ...

  5. Asp.net导出Excel乱码的解决方法

    通过跟踪Asp.net服务器代码,没有乱码,然而导出Excel到浏览器后,打开时出现乱码. 解决方法是添加编码格式的前缀字节码:Response.BinaryWrite(System.Text.Enc ...

  6. POI导出Excel文档通用工具方法

    import java.lang.reflect.InvocationTargetException; import java.util.List; import java.util.Map; imp ...

  7. net npoi将List<实体>导出excel的最简单方法

    只是临时导数据用的.方便.最基本的方法, [HttpGet] [Route("ExportEnterprise")] public BaseResponse ExportEnter ...

  8. asp.net 导出excel的一种方法

    项目用到的一种导出excel 的方法予以记录:(具体的业务类可更具情况替换使用) protected void Export(string filename, List<ComponentCon ...

  9. html table表格导出excel的方法 html5 table导出Excel HTML用JS导出Excel的五种方法 html中table导出Excel 前端开发 将table内容导出到excel HTML table导出到Excel中的解决办法 js实现table导出Excel,保留table样式

    先上代码   <script type="text/javascript" language="javascript">   var idTmr; ...

随机推荐

  1. mac 设置 ll 等alias 并永久生效

    往上看了在.bash_profile中配置 然后 source  的方法, 试过了, 只是当前的终端有效,当电脑重启或者关闭终端就失效了,只好看看 mac 的 profile 代码 # System- ...

  2. stringgird中使用TClientDataSet排序的问题

    function TfrmMain.createIIReport(cdsBody: TClientDataSet;  silent: Boolean): String;var    s,sText: ...

  3. 专家谈国产CPU最新发展态势:需强化标准建设(很全面)

    一.国产CPU发展现状与成就 国内已开启多技术路线并行的CPU技术产业新格局.在国家科技重大专项和国家级集成电路产业投资资金的推动之下,我国CPU产品技术研发已进入多技术路线同步推进的高速发展阶段,并 ...

  4. Android LayoutInflater.inflate()的参数及其用法

    很多人在网上问LayoutInflater类的用法,以及inflate()方法参数的含义,现解释如下: inflate()的作用就是将一个用xml定义的布局文件查找出来,注意与findViewById ...

  5. EINTR错误

    慢系统调用(slow system call):此术语适用于那些可能永远阻塞的系统调用.永远阻塞的系统调用是指调用有可能永远无法返回,多数网络支持函数都属于这一类.如:若没有客户连接到服务器上,那么服 ...

  6. 学习webView控件使用

    WebView 对象用于网页显示使用,简单的学习并使用了一下. 1.首先在 layout 中摆一个全屏的 webview 控件 (main.xml ) <?xml version="1 ...

  7. Oracle Create DBLink

    DROP PUBLIC DATABASE LINK ORA11G_DBLINK; CREATE   PUBLIC   DATABASE LINK ORA11G_DBLINKCONNECT TO SYS ...

  8. Android仿iPhone晃动撤销输入功能(微信摇一摇功能)

    重力传感器微信摇一摇SensorMannager自定义alertdialogSensorEventListener 很多程序中我们可能会输入长文本内容,比如短信,写便笺等,如果想一次性撤销所有的键入内 ...

  9. 真正解决ASP.NET每一个页面首次访问超级慢的问题 (转载)

    原文:http://www.afuhao.com/article_articleId-219.shtml 摘要:ASP.NET页面首次打开很慢,但别的页面如果没有访问过,去访问也会慢.你也许认为它是在 ...

  10. 自学了三天的SeaJs学习,解决了前端的一些问题,与小伙伴们一起分享一下!

    我为什么学习SeaJs? [第一]:为了解决项目中资源文件版本号的问题,以及打包压缩合并等问题. [第二]:好奇心和求知欲.[我发现很多知名网站也都在使用(qq空间, msn, 淘宝等等),而且 Se ...