asp.net 打开excel浏览器兼容问题

沙客 2011-06-22 05:43:04
string fileName = "表" + DateTime.Now.ToShortDateString();//文件的名称
this.Response.Clear();
this.Response.Charset = "gb2312 ";
this.Response.ContentEncoding = System.Text.Encoding.Default;
this.Response.ContentType = "application/vnd.ms-excel";
this.Response.AddHeader("Pragma", "public");
this.Response.AddHeader("Cache-Control", "max-age=0");
this.Response.AppendHeader("content-disposition", "attachment; filename=" + HttpContext.Current.Server.UrlPathEncode(fileName) + ".xls");
string colHeaders = "";
string ls_item = "";
System.IO.StringWriter stringWriter = new System.IO.StringWriter();
System.Web.UI.HtmlTextWriter htmlTextWriter = new System.Web.UI.HtmlTextWriter(stringWriter);
this.EnableViewState = false;
为什么我在360上打开这个方法 文件下载那个提醒框一闪而过,而在火狐上没有问题

请问怎么解决这个问题,优先在ie6,ie7内核下能运行
谢谢
...全文
132 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
lichubo812553804 2011-07-04
  • 打赏
  • 举报
回复
楼主的问题,我也是遇到了,如果还有问题,发信息给我
沙客 2011-06-23
  • 打赏
  • 举报
回复
上面的各位师兄师姐,你们的方法我都测试过了,都不行,还是一样的问题,我的这个方法的后面输入的是用的是一个LIst<object>
下面的代码
if ( list != null)
{

colHeaders = "编码" + "\t " + "物业点" + "\t " + "商铺" +"\t "+ "租户" + "\t "
+ " 水上月度数" + "\t " + " 水本月度数" + "\t " + " 水实际使用度数" + "\t " + " 水单价" + "\t " + " 水金额" + "\t "
+ "电上月度数" + "\t " + "电本月度数" + "\t " + "电实际使用度数" + "\t " + "电单价" + "\t " + "电金额" + "\t "
+ "租 金" + "\t " + "管理费" + "\t " + "垃圾费" + "\t " + "其它" + "\t " + "金额合计" + "\t " + " 备注" + "\n ";
Response.Write(colHeaders);

foreach (summary sum in list)
{
ls_item += sum.ShopCode+ "\t ";
ls_item += sum.AreaName.ToString() + "\t ";
ls_item += sum.ShopName.ToString() + "\t ";
ls_item += sum.Master.ToString() + "\t ";
ls_item += sum.wOldData.ToString() + "\t ";
ls_item += sum.wNewData.ToString() + "\t ";
ls_item += sum.wDiffer.ToString() + "\t ";
ls_item += sum.wPrice.ToString() + "\t ";
ls_item += sum.wMoney.ToString() + "\t ";
ls_item += sum.eOldData.ToString() + "\t ";
ls_item += sum.eNowData.ToString() + "\t ";
ls_item += sum.eDiffer.ToString() + "\t ";
ls_item += sum.ePrice.ToString() + "\t ";
ls_item += sum.eMoney.ToString() + "\t ";

ls_item += sum.ZuJing.ToString() + "\t ";
ls_item += sum.LaJi.ToString() + "\t ";
ls_item += sum.Manage.ToString() + "\t ";

ls_item += sum.Other.ToString() + "\t ";
ls_item += sum.Sum.ToString() + "\t ";
ls_item += sum.Remake.ToString() + "\n";
Response.Write(ls_item);

ls_item = "";
}
this.Response.End();
求解决,谢谢
wosizy 2011-06-22
  • 打赏
  • 举报
回复
为什么我在360上打开这个方法 文件下载那个提醒框一闪而过,而在火狐上没有问题

请问怎么解决这个问题,优先在ie6,ie7内核下能运行

这个问题 和浏览器有关系 我也出现过! 但是具体是什么原因我还在研究
在360里面就闪一下 就没了 而在FF 或者Opera 都能出现下载框
我目前测出来一点 只要你数据行 有3条以上 就没问题(360浏览器) LZ 可以测试下 多弄它几条数据
子夜__ 2011-06-22
  • 打赏
  • 举报
回复
public void OutPutExcel()
{
//定义文档类型、字符编码
Response.Clear();
   Response.Buffer= true;
   Response.Charset="GB2312";
//下面这行很重要, attachment 参数表示作为附件下载,您可以改成 online在线打开
   //filename=FileFlow.xls 指定输出文件的名称,注意其扩展名和指定文件类型相符,可以为:.doc    .xls    .txt   .htm
   Response.AppendHeader("Content-Disposition","attachment;filename=FileFlow.xls");
   Response.ContentEncoding=System.Text.Encoding.GetEncoding("GB2312");
   //Response.ContentType指定文件类型 可以为application/ms-excel、application/ms-word、application/ms-txt、application/ms-html 或其他浏览器可直接支持文档
   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);

this.RenderControl(oHtmlTextWriter);
   //this 表示输出本页,你也可以绑定datagrid,或其他支持obj.RenderControl()属性的控件
   Response.Write(oStringWriter.ToString());
   Response.End();
}
md5e 2011-06-22
  • 打赏
  • 举报
回复

Response.AddHeader("Content-Disposition", string.Format("attachment; filename={0}", HttpUtility.UrlEncode(filename[filename.Length - 1]), System.Text.Encoding.UTF8));
Response.AddHeader("Content-Length", len.ToString());
Response.ContentType = "application/octet-stream";
Response.Charset = "UTF-8";
Response.ContentEncoding = System.Text.Encoding.UTF8;
syb1045 2011-06-22
  • 打赏
  • 举报
回复

HttpContext.Current.Response.Clear();
HttpContext.Current.Response.Charset = "GB2312";
HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");
HttpContext.Current.Response.ContentType = "application/vnd.ms-excel";

DataGrid dg = new DataGrid();
dg.DataSource = dt;
dg.ShowHeader = false;
dg.HeaderStyle.BackColor = Color.Yellow;
dg.DataBind();
dg.RenderControl(htmlWrite);

HttpContext.Current.Response.Write("<meta http-equiv=Content-Type content=\"text/html; charset=GB2312\">");
myCItrad = new System.Globalization.CultureInfo("ZH-CN", true);
stringWrite = new StringWriter(myCItrad);
htmlWrite = new HtmlTextWriter(stringWrite);

HttpContext.Current.Response.AddHeader("content-disposition", "attachment; filename='" + HttpContext.Current.Server.UrlEncode(filename) + "'.xls");//下载的文件标题为中文

HttpContext.Current.Response.Write(stringWrite.ToString());
HttpContext.Current.Response.End();

62,046

社区成员

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

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

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

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