将 gridview导出到excel的问题

yihan1231 2008-03-11 01:31:51
private void ToExcel(Control ctl, string FileName)
{
HttpContext.Current.Response.Charset = "UTF-8";
HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.UTF8;
HttpContext.Current.Response.ContentType = "application/ms-excel";
HttpContext.Current.Response.AppendHeader("Content-Disposition", "attachment;filename=" + "" + FileName);
ctl.Page.EnableViewState = false;
System.IO.StringWriter tw = new System.IO.StringWriter();
HtmlTextWriter hw = new HtmlTextWriter(tw);
ctl.RenderControl(hw);
HttpContext.Current.Response.Write(tw.ToString());
HttpContext.Current.Response.End();
}

用这个方法后
当某一字段的值为纯数字串的时候,比如:02356235623 这样的,导出后前面的0都会丢失,不知道怎么能解决下呀?
...全文
89 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
yihan1231 2008-03-12
  • 打赏
  • 举报
回复
自己解决了
chujiankun 2008-03-11
  • 打赏
  • 举报
回复
protected void Button1_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);
GridView1.AllowPaging = false;
GridView1.DataBind();
this.GridView1.RenderControl(oHtmlTextWriter);
Response.Output.Write(oStringWriter.ToString());
Response.Flush();
Response.End();
GridView1.AllowPaging = true;
GridView1.DataBind();
}
public override void VerifyRenderingInServerForm(Control control)
{ /* Confirms that an HtmlForm control is rendered for the specified ASP.NET server control at run time. */
}
showrock 2008-03-11
  • 打赏
  • 举报
回复
 public static void ExportToExcel(string Filename, GridView gridview, Page page)
{
page.Response.Clear();
page.Response.ContentEncoding = System.Text.Encoding.GetEncoding("utf-7");
page.Response.AppendHeader("content-disposition", "attachment;filename=\"" + System.Web.HttpUtility.UrlEncode(Filename, System.Text.Encoding.UTF8) + ".xls\"");
System.IO.StringWriter sw = new System.IO.StringWriter();
HtmlTextWriter htw = new HtmlTextWriter(sw);
gridview.RenderControl(htw);
page.Response.Write(sw.ToString());
page.Response.End();
}
正宗老冉 2008-03-11
  • 打赏
  • 举报
回复

//(1) 内容:GBK 或 GB2312
HttpContext.Current.Response.Charset = "GBK";

//(2) 文件名:GBK 或 GB2312 ——导出的文件名可以是中文
FileName= HttpUtility.UrlEncode(FileName, System.Text.Encoding.GetEncoding("GBK"));

//(3)要想带格式导出,
// (3-A)事先处理 GridView 串——"<table><tr><td>……</td>……</tr>……"
// (3-B)如果GridView 已经在页面呈现,就直接在客户端用 JavaScript 脚本搞啊(颜色背景对齐字体字号都可处理),用不着后台代码处理,见下:
------------------------------------------------------
var s = "<table><tr><td>…………</td>……</tr>……" // GridView 的outerHTML,可针对 012345 防前导0丢失处理等……
var oWin = window.open("","_blank","menubar=no,location=no,toolbar=no,resizable=no,scrollbars=no, width=10,height=10");
oWin.document.write(s);

var info = "导出操作结果报告:\n";
if(!oWin.document.execCommand('Saveas',true,'%homeDrive%\\文件名.xls')) { info += "用户取消操作或导出失败!"; }
else { info += "…………已被成功导出为Excel。\n特别提醒:对于 IE7,出于安全考虑,请将文件扩展名由“.htm”自行改为“.xls'); }
alert(info); oWin.close(); // 结果提示、// 窗口关闭
------------------------------------------------------
showrock 2008-03-11
  • 打赏
  • 举报
回复
纯数字的时候你要在数字前面加上'
比如
'02356235623

文件名乱码的问题是编码有问题
yihan1231 2008-03-11
  • 打赏
  • 举报
回复
补充一下 ,导出的文件名也不能是中文,否则为乱码,这两个问题,请大家帮忙

62,074

社区成员

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

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

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

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