我现在能够确认我的ASPX页面中只包含有一个:<Form runat="server">在CS文件里有以下代码:
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();
oStringWriter.WriteLine("联系人姓名,手机号码);
SqlDataReader dr = DBHelper.ExecuteReader(sql);
while (dr.Read())
{
oStringWriter.WriteLine(dr["zhName"].ToString() + "," + dr["mobile"].ToString()
}
System.Web.UI.HtmlTextWriter oHtmlTextWriter = new System.Web.UI.HtmlTextWriter(oStringWriter); //就是下面这一行,只要在这里设置断点(Response.End())
,页面上就可以弹出保存窗口.this.RenderControl(oHtmlTextWriter);//在这里设置断点(Response.End()),就会出现
//System.Web.HttpException: 一页只能有一个服务器端 Form 标记 错误Response.Write(oStringWriter.ToString());
Response.End();
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();
oStringWriter.WriteLine("联系人姓名,手机号码);
SqlDataReader dr = DBHelper.ExecuteReader(sql);
while (dr.Read())
{
oStringWriter.WriteLine(dr["zhName"].ToString() + "," + dr["mobile"].ToString()
}
System.Web.UI.HtmlTextWriter oHtmlTextWriter = new System.Web.UI.HtmlTextWriter(oStringWriter); //就是下面这一行,只要在这里设置断点(Response.End())
,页面上就可以弹出保存窗口.this.RenderControl(oHtmlTextWriter);//在这里设置断点(Response.End()),就会出现
//System.Web.HttpException: 一页只能有一个服务器端 Form 标记 错误Response.Write(oStringWriter.ToString());
Response.End();
解决方案 »
- 非哥,谈区别 <%Server.UrlEncode("书店") %> eyword=<%=HttpUtility.UrlEncode("书店") %>"
- 如何让menu控件的子菜单横向显示.
- |M| 在数据绑定的时候如何进行判断
- DropdownList控件中保留空格问题
- 怎么知道返回的是什么值?
- 有關.net中 treeview控件的應用於下載,急!
- ASP.net抓取网页指定内容——怎么抓
- OWC制作图表的问题谁以前做过的帮忙看看,在线等(100分)
- 动态生成控件后,怎样居中?
- 帮我看看:Internet Explorer 中使用 Windows 窗体控件问题?
- 在DataGrid中如何实现在每一行文本的下面都有一个长度固定的自定义形状的直线呢?
- 请教如何获得DetailsView控件中某行的单元格中的值?
可是运行出现以下错误:
System.Web.HttpException: 一页只能有一个服务器端 Form 标记
CS代码:
Response.Clear();
Response.Buffer= true;
Response.Charset="gb2312";
Response.AppendHeader("Content-Disposition","attachment;filename=FileFlow.xls");
Response.ContentEncoding=System.Text.Encoding.GetEncoding("gb2312");
Response.ContentType = "application/ms-excel";
this.EnableViewState = false;
System.IO.StringWriter oStringWriter = new System.IO.StringWriter();
oStringWriter.WriteLine("联系人姓名,手机号码);
SqlDataReader dr = DBHelper.ExecuteReader(sql);
while (dr.Read())
{
oStringWriter.WriteLine(dr["zhName"].ToString() + "," + dr["mobile"].ToString()
}
System.Web.UI.HtmlTextWriter oHtmlTextWriter = new System.Web.UI.HtmlTextWriter(oStringWriter); //就是下面这一行,只要在这里设置断点(Response.End()),页面上就可以弹出保存窗口,也就是说不会出错错误.this.RenderControl(oHtmlTextWriter);//在这里设置断点(Response.End()),就会出现
//System.Web.HttpException: 一页只能有一个服务器端 Form 标记 错误Response.Write(oStringWriter.ToString());
Response.End();
Response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");
string lsHeader;
Response.AppendHeader("Content-Disposition", "attachment;filename=" +HttpUtility.UrlEncode("Excel.xls",Encoding.UTF8).ToString());
Response.ContentType = "application/ms-excel";
this.EnableViewState =false;
lsHeader="";
for(int k=0;k<=dt.Columns.Count - 1;k++)
{
lsHeader=lsHeader+dt.Columns[k].ColumnName+"\t";
}
lsHeader=lsHeader+"\n";
for(int i=0;i<=dt.Rows.Count - 1;i++)
{
for(int j=0;j<=dt.Columns.Count - 1;j++)
{
lsHeader=lsHeader+(dt.Rows[i][j].ToString().Replace("\r","")).Replace("\n","")+"\t";
}
lsHeader=lsHeader+"\n";
}
Response.Write(lsHeader);
Response.End();
------------
以上是我保存为EXCEL的代码,楼主试试
HttpResponse resp;
resp = Page.Response;
resp.ContentEncoding = System.Text.Encoding.GetEncoding("gb2312");
resp.AppendHeader("Content-Disposition", "attachment;filename=filename.xls");
Response.ContentType = "application/text/csv"; System.IO.StringWriter oStringWriter = new System.IO.StringWriter();
oStringWriter.WriteLine("联系人姓名,手机号码,电子邮件,公司,职位");
resp.Write(oStringWriter);
resp.End();