GridView导出Excel问题 怎么把gridview里的数据导出来呢 要Excel格式的。希望能是一个公用的方法 因为有很多地方需要调用这个烦方法。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 /// <summary> /// 导出Excel /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected void btnExcel_Click(object sender, EventArgs e) { Response.Clear(); System.Web.HttpContext curContext = System.Web.HttpContext.Current; Response.AddHeader("content-disposition", "attachment;filename=instimestock.xls"); Response.Charset = "utf-8"; Response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312"); Response.ContentType = "application/vnd.xls"; System.IO.StringWriter stringWrite = new System.IO.StringWriter(); System.Web.UI.HtmlTextWriter htmlWrite = new HtmlTextWriter(stringWrite); //写到Excel的数据不用分页 //BindData(); gridviewName.RenderControl(htmlWrite); Response.Write(stringWrite.ToString());//向客户端写数据 Response.End();} //这个方法不写的话可能报错类型“GridView”的控件“GridView1”必须放在具有 runat=server 的窗体标记内。 public override void VerifyRenderingInServerForm(Control control) { // Confirms that an HtmlForm control is rendered for } 要不要给你发demo?? 我都是这样用的。 这个满足你的需求 private void CreateExcel(DataTable dt, 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 = ""; ////定义表对象与行对象,同时用DataSet对其值进行初始化 //DataTable dt = ds.Tables[0]; DataRow[] myRow = dt.Select();//可以类似dt.Select("id>10")之形式达到数据筛选目的 //取得数据表各列标题,各标题之间以t分割,最后一个列标题后加回车符 for (int i = 0; i < dt.Columns.Count; i++) { if (i == (dt.Columns.Count - 1))//最后一列,加n { colHeaders += dt.Columns[i].Caption.ToString() + "\n"; } else { colHeaders += dt.Columns[i].Caption.ToString() + "\t"; } } resp.Write(colHeaders); //向HTTP输出流中写入取得的数据信息 //逐行处理数据 foreach (DataRow row in myRow) { //当前行数据写入HTTP输出流,并且置空ls_item以便下行数据 for (int i = 0; i < dt.Columns.Count; i++) { if (i == (dt.Columns.Count - 1))//最后一列,加n { ls_item += row[i].ToString() + "\n"; } else { ls_item += row[i].ToString() + "\t"; } } resp.Write(ls_item); ls_item = ""; } resp.End(); } /// <summary> /// gvFinance是gridview的id /// </summary> /// <param name="FileName">excel文件名</param> private void ExportExcelFromDataGrid(string FileName) { Response.Charset = "utf-8"; Response.AppendHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(FileName).ToString()); Response.ContentType = "application/ms-excel"; this.EnableViewState = false; StringWriter tw = new StringWriter(); HtmlTextWriter hw = new HtmlTextWriter(tw); this.gvFinance.RenderControl(hw); Response.Write(tw.ToString()); Response.End(); }//如果没有下面方法会报错类型“GridView”的控件“GridView1”必须放在具有 runat=server 的窗体标记内 public override void VerifyRenderingInServerForm(Control control) { //什么都用需要写 } 为什么加了ValidateRequest="false"还会报错 【烦恼问题】解决对“安全证书”有问题的网站不被阻止内容或不提示【含图】【插件】 如何用gridview显示word文档并点击打开? 会员级别的问题 关于.net2.0的内容页里面的控件使用的问题? 如何使用js文件验证服务器控件的值? 怎么做一个控件,类似combobox的那种可输入的下拉列表 有关DATAGRIT控件的问题 文件上传问题7710703(易水寒)请进。。。 关于DataGrid 测试一个泛型方法时候报错... ~~~~~~~~~~这样的字符串有没有办法进行统计~~~~~~~~~
/// <summary>
/// 导出Excel
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnExcel_Click(object sender, EventArgs e)
{
Response.Clear();
System.Web.HttpContext curContext = System.Web.HttpContext.Current;
Response.AddHeader("content-disposition",
"attachment;filename=instimestock.xls");
Response.Charset = "utf-8";
Response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");
Response.ContentType = "application/vnd.xls";
System.IO.StringWriter stringWrite = new System.IO.StringWriter();
System.Web.UI.HtmlTextWriter htmlWrite = new HtmlTextWriter(stringWrite);
//写到Excel的数据不用分页
//BindData();
gridviewName.RenderControl(htmlWrite);
Response.Write(stringWrite.ToString());//向客户端写数据
Response.End();
} //这个方法不写的话可能报错类型“GridView”的控件“GridView1”必须放在具有 runat=server 的窗体标记内。
public override void VerifyRenderingInServerForm(Control control)
{
// Confirms that an HtmlForm control is rendered for
}
要不要给你发demo?? 我都是这样用的。
{ HttpResponse resp;
resp = Page.Response;
resp.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");
resp.AppendHeader("Content-Disposition", "attachment;filename=" + fileName);
string colHeaders = "", ls_item = ""; ////定义表对象与行对象,同时用DataSet对其值进行初始化
//DataTable dt = ds.Tables[0];
DataRow[] myRow = dt.Select();//可以类似dt.Select("id>10")之形式达到数据筛选目的
//取得数据表各列标题,各标题之间以t分割,最后一个列标题后加回车符
for (int i = 0; i < dt.Columns.Count; i++)
{
if (i == (dt.Columns.Count - 1))//最后一列,加n
{
colHeaders += dt.Columns[i].Caption.ToString() + "\n";
}
else
{
colHeaders += dt.Columns[i].Caption.ToString() + "\t";
}
}
resp.Write(colHeaders);
//向HTTP输出流中写入取得的数据信息 //逐行处理数据
foreach (DataRow row in myRow)
{
//当前行数据写入HTTP输出流,并且置空ls_item以便下行数据
for (int i = 0; i < dt.Columns.Count; i++)
{
if (i == (dt.Columns.Count - 1))//最后一列,加n
{
ls_item += row[i].ToString() + "\n";
}
else
{
ls_item += row[i].ToString() + "\t";
} }
resp.Write(ls_item);
ls_item = ""; }
resp.End();
}
/// gvFinance是gridview的id
/// </summary>
/// <param name="FileName">excel文件名</param>
private void ExportExcelFromDataGrid(string FileName)
{
Response.Charset = "utf-8";
Response.AppendHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(FileName).ToString());
Response.ContentType = "application/ms-excel";
this.EnableViewState = false;
StringWriter tw = new StringWriter();
HtmlTextWriter hw = new HtmlTextWriter(tw);
this.gvFinance.RenderControl(hw);
Response.Write(tw.ToString());
Response.End();
}
//如果没有下面方法会报错类型“GridView”的控件“GridView1”必须放在具有 runat=server 的窗体标记内
public override void VerifyRenderingInServerForm(Control control)
{
//什么都用需要写
}