能帮忙解决一下关于gridview导出excel的问题吗?

yuanjh2001 2008-01-04 05:22:15
我在gridview下面加了一个按妞,在他的click事件下写了代码(粘贴的网上的),想实现的功能就是把当前的gridview内容导出到excel中.当我点击按钮时,提示保存的对话框也能弹出,保存的文件里却没有任何内容,我点击打开时,提示'不能打开文件'.请帮忙,谢谢

全部的代码如下:

protected void Button2_Click(object sender, EventArgs e)


{


Response.Clear();

Response.Buffer = true;

Response.Charset = "GB2312";

Response.AppendHeader("Content-Disposition", "attachment;filename=FileName.xls");

// 如果设置为 GetEncoding("GB2312");导出的文件将会出现乱码!!!

Response.ContentEncoding = System.Text.Encoding.UTF7;

Response.ContentType = "application/ms-excel";//设置输出文件类型为excel文件。

System.IO.StringWriter oStringWriter = new System.IO.StringWriter();

System.Web.UI.HtmlTextWriter oHtmlTextWriter = new System.Web.UI.HtmlTextWriter(oStringWriter);

TypeParticular.RenderControl(oHtmlTextWriter);

Response.Output.Write(oStringWriter.ToString());

Response.Flush();

Response.End();

////这个方法简单,适合只导出数据,不需要特殊格式.

////在.CS文件里要加上:







}
////如果没有下面方法会报错类型“GridView”的控件“GridView1”必须放在具有 runat=server 的窗体标记内
public override void VerifyRenderingInServerForm(Control control)
{
}
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
e.Row.Cells[1].Attributes.Add("style", "vnd.ms-excel.numberformat:@;");
}

}
...全文
381 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
yuanjh2001 2008-01-28
  • 打赏
  • 举报
回复
同样谢谢黑马王子!
boblaw 2008-01-26
  • 打赏
  • 举报
回复
晕,CSDN的效率,向俺提问的信件今天才收到!!!
yjwang0621 2008-01-08
  • 打赏
  • 举报
回复
:)
sunnystar365 2008-01-08
  • 打赏
  • 举报
回复
写入EXCEL,没有通过DATAGRID 手机[表示一个Tab]发送内容
try
{
DataSet ds=HM.SendSMS();
DataTable dt=ds.Tables[0];
StringWriter sw=new StringWriter();
sw.WriteLine("手机 发送内容 发送时间 状态");
foreach(DataRow dr in dt.Rows)
{
sw.WriteLine(dr["Mobile"]+" "+dr["Message"]+" "+dr["SendTime"]+" "+dr["Status"]);
}
if(rbExcel.Checked)
{
HttpContext.Current.Response.AppendHeader("Content-Disposition","attachment;filename="+System.Web.HttpUtility.UrlEncode("发送信息.xls", System.Text.Encoding.UTF8));
}
else
{
HttpContext.Current.Response.AppendHeader("Content-Disposition","attachment;filename="+System.Web.HttpUtility.UrlEncode("发送信息.txt", System.Text.Encoding.UTF8));
}
sw.Close();
HttpContext.Current.Response.Charset ="GB2312";
HttpContext.Current.Response.ContentEncoding =System.Text.Encoding.Default;
HttpContext.Current.Response.ContentType ="application/vnd.ms-excel";//image/JPEG;text/HTML;image/GIF;vnd.ms-excel/msword
Response.Write(sw);
Response.End();
}
catch(Exception ex)
{
Jscript.Alert(ex.Message);
}
LikeCode 2008-01-06
  • 打赏
  • 举报
回复
看看老孟写的,绝对没问题,试过,你不信偶也要相信老孟啊!~!~!~

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default3.aspx.cs" Inherits="Default3" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>无标题页</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:DataGrid ID="DataGrid1" runat="server" OnItemDataBound="DataGrid1_ItemDataBound"></asp:DataGrid>
<asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="输出Excel" /></div>
</form>
</body>
</html>

using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

public partial class Default3 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
DataGrid1.DataSource = CreateDataSource();
DataGrid1.DataBind();

}
ICollection CreateDataSource()
{

DataTable dt = new DataTable();
DataRow dr;
dt.Columns.Add(new DataColumn("身份证号码", typeof(string)));
dt.Columns.Add(new DataColumn("图书单价", typeof(decimal)));
dt.Columns.Add(new DataColumn("购买数量", typeof(Int32)));
dt.Columns.Add(new DataColumn("总价格", typeof(decimal)));


for (int i = 0; i < 30; i++)
{
dr = dt.NewRow();

dr[0] = "123456789123456789";
dr[1] = 100 * i / 3.0;
dr[2] = i + 5;
dr[3] = (decimal)dr[1] * (Int32)dr[2];
dt.Rows.Add(dr);
}
DataView dv = new DataView(dt);
return dv;
}
protected void Button1_Click(object sender, EventArgs e)
{
Response.Clear();
Response.Buffer = true;
Response.Charset = "GB2312";
Response.AppendHeader("Content-Disposition", "attachment;filename=FileName.xls");
Response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");//设置输出流为简体中文
Response.ContentType = "application/ms-excel";//设置输出文件类型为excel文件。
this.EnableViewState = false;
System.Globalization.CultureInfo myCItrad = new System.Globalization.CultureInfo("ZH-CN", true);
System.IO.StringWriter oStringWriter = new System.IO.StringWriter(myCItrad);
System.Web.UI.HtmlTextWriter oHtmlTextWriter = new System.Web.UI.HtmlTextWriter(oStringWriter);
this.DataGrid1.RenderControl(oHtmlTextWriter);
Response.Write(oStringWriter.ToString());
Response.End();
}
protected void DataGrid1_ItemDataBound(object sender, DataGridItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
e.Item.Cells[0].Attributes.Add("style", "vnd.ms-excel.numberformat:@");
e.Item.Cells[3].Attributes.Add("style", "vnd.ms-excel.numberformat:¥#,###.00");
}
}
}
esayit 2008-01-06
  • 打赏
  • 举报
回复
我的问题解决了,原因是保存的目录不正确,你可以检查一下你的路径是否正确
catvv 2008-01-05
  • 打赏
  • 举报
回复
private void ButtonExport_Click(object sender, System.EventArgs e)
{
ExportDataGrid("application/vnd.ms-excel",System.DateTime.Now.ToString("yyyyMMddmmhhss")+".xls");
}

private void ExportDataGrid(string FileType, string FileName) //从DataGrid导出
{
Response.ContentType = FileType;
Response.Charset = "GB2312"; //设置字符集类型
Response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");
//追加响应的头部信息,即文件名.
Response.AppendHeader("Content-Disposition", "attachment;filename=" +HttpUtility.UrlEncode(FileName,System.Text.Encoding.UTF8).ToString());

this.EnableViewState = false;
System.IO.StringWriter sw = new System.IO.StringWriter();
System.Web.UI.HtmlTextWriter hw = new System.Web.UI.HtmlTextWriter(sw);

TypeParticular.RenderControl(hw);
Response.Write(sw.ToString());
Response.End();
}



2."GridView1”必须放在具有 runat=server 的窗体标记内 "

GridView1没有放在Form 里边.拖过头了
he_yang 2008-01-05
  • 打赏
  • 举报
回复
这个好使不用改 复制就可以了

protected void Button1_Click(object sender, EventArgs e)
{
Response.Clear();

Response.AddHeader("content-disposition", "attachment;filename=FileName.xls");
Response.Charset = "GBK";
Response.ContentType = "application/vnd.xls";

System.IO.StringWriter stringWrite = new System.IO.StringWriter();
System.Web.UI.HtmlTextWriter htmlWrite = new HtmlTextWriter(stringWrite);

GridView1.AllowPaging = false;//导出前先取消分页,以便能将所有数据导出。
DataBind(); //再重新绑定一次数据

GridView1.RenderControl(htmlWrite);
Response.Write(stringWrite.ToString());
Response.End();

GridView1.AllowPaging = true;//导出后先取消分页,以便能将所有数据导出。
DataBind();
}
晓风残月0110 2008-01-05
  • 打赏
  • 举报
回复
你的方法

protected void BtnPrint_Click(object sender, EventArgs e)
{
Response.Clear();
Response.Buffer = true;
Response.Charset = "GB2312";
Response.AppendHeader("Content-Disposition", "attachment;filename=FileName.xls");
//Response.AppendHeader("Content-Disposition", "attachment;filename=FileName.doc");
// 如果设置为 GetEncoding("GB2312");导出的文件将会出现乱码!!!
Response.ContentEncoding = System.Text.Encoding.UTF7;
Response.ContentType = "application/ms-excel";//设置输出文件类型为excel文件。
//Response.ContentType = "application/ms-word";
System.IO.StringWriter oStringWriter = new System.IO.StringWriter();
System.Web.UI.HtmlTextWriter oHtmlTextWriter = new System.Web.UI.HtmlTextWriter(oStringWriter);

this.AfficheGV.RenderControl(oHtmlTextWriter);
//AfficheGV是gridview
Response.Output.Write(oStringWriter.ToString());
Response.Flush();
Response.End();

////////////////////////////

}
晓风残月0110 2008-01-05
  • 打赏
  • 举报
回复
取出dt后作为参数,在更改一下你要的字段

//using System.IO;导出到execl
public void WriteDSToExcel(DataTable dt)
{
string strFile = "";
string path = "";
// DataTable dt = ds.Tables[0];

//文件信息设置
strFile = strFile + "LogBackUp";
strFile = strFile + DateTime.Now.ToString("yyyyMMddhhmmss");
strFile = strFile + ".xls";
path = Server.MapPath(strFile);

System.IO.FileStream fs = new FileStream(path, System.IO.FileMode.Create, System.IO.FileAccess.Write);
StreamWriter sw = new StreamWriter(fs, new System.Text.UnicodeEncoding());
//画表头
for (int i = 0; i < dt.Columns.Count; i++)
{
sw.Write(dt.Columns[i].ColumnName);
sw.Write("\t");
}
sw.WriteLine("");
//画表体
for (int i = 0; i < dt.Rows.Count; i++)
{
sw.Write(dt.Rows[i]["id"].ToString());
sw.Write("\t");
sw.Write(dt.Rows[i]["dc"].ToString());
sw.Write("\t");
sw.Write(dt.Rows[i]["Num"].ToString());
//sw.Write("\t");
//sw.Write(dt.Rows[i]["cityID"].ToString());
//sw.Write("\t");
//sw.Write(dt.Rows[i]["areaID"].ToString());
//sw.Write("\t");
//sw.Write(dt.Rows[i]["Enabled"].ToString());
sw.WriteLine("");
}
sw.Flush();
sw.Close();
}
shen5924624 2008-01-05
  • 打赏
  • 举报
回复
http://topic.csdn.net/u/20071015/12/a9c49cb4-a83e-44ae-bdca-5b942b920003.html
youngqp 2008-01-05
  • 打赏
  • 举报
回复
导出excel的例子太多了,楼主随便搜搜吧。
esayit 2008-01-05
  • 打赏
  • 举报
回复
关注,我也有同样的问题
ChengKing 2008-01-04
  • 打赏
  • 举报
回复
http://blog.csdn.net/ChengKing/archive/2006/08/27/1128385.aspx

http://blog.csdn.net/chengking/archive/2005/11/29/539514.aspx
insus 2008-01-04
  • 打赏
  • 举报
回复

62,075

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧