asp.net导出Excel问题“服务器无法在发送 HTTP 标头之后追加标头。”怎么解决 asp.netexcel服务器 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 你这是什么用法...不要自己胡乱发明啊你到底是生成html页下载,还是以txt文件的格式导出不要混用啊 你查:导出excel代码一堆一堆的不过不管你用html还是txt,导出来都不是真正的excel,打开时会报错而且也没法进行excel单元格的详细设置,比如合并单元格,修改字体颜色什么的想导出的好看,还是用NPOI吧 System.Web.UI.WebControls.GridView dataGrid = new System.Web.UI.WebControls.GridView(); dataGrid.DataSource = dt.DefaultView; dataGrid.AllowPaging = false; dataGrid.HeaderStyle.HorizontalAlign = HorizontalAlign.Center; dataGrid.HeaderStyle.Font.Bold = true; dataGrid.DataBind(); HttpContext.Current.Response.AddHeader("Content-Disposition", "attachment; filename=" + System.Web.HttpUtility.UrlEncode("人员出现场统计", System.Text.Encoding.UTF8) + ".xls"); HttpContext.Current.Response.Charset = "UTF-8"; Response.ContentEncoding = System.Text.Encoding.GetEncoding("UTF-8"); HttpContext.Current.Response.ContentType = "application/ms-excel"; dataGrid.EnableViewState = false; dataGrid.AutoGenerateColumns = true; System.IO.StringWriter tw = new System.IO.StringWriter(); System.Web.UI.HtmlTextWriter hw = new System.Web.UI.HtmlTextWriter(tw); dataGrid.RenderControl(hw); HttpContext.Current.Response.Write(tw.ToString()); HttpContext.Current.Response.End(); 你要是想导出的列标题是中文就在导出前,修改一下dt的columnName 在使用 Response.AddHeader("Content-Disposition", "attachment; filename=report.xls");这句之前有没有对Response的Header再做什么操作? 在使用 Response.AddHeader("Content-Disposition", "attachment; filename=report.xls");这句之前应该是有response.flush操作 你要说明你在调用 ExportToExcel 之前都干了什么事儿。 private void ExportToExcel(DataTable DT) { StringWriter sw = new StringWriter(); StringBuilder sb = new StringBuilder(); foreach (DataColumn DC in DT.Columns) { if (!String.IsNullOrEmpty(DC.Caption)) { sb.Append("\t" + DC.Caption); } } if (sb.Length > 0) { sw.WriteLine(sb.ToString().Substring(1)); foreach (DataRow Dr in DT.Rows) { sb = new StringBuilder(); foreach (DataColumn DC in DT.Columns) { if (!String.IsNullOrEmpty(DC.Caption)) { sb.Append("\t" + Dr[DC].ToString()); } } sw.WriteLine(sb.ToString().Substring(1)); } } //sw.Close(); //DT.Clear(); //DT.Dispose(); Response.AddHeader("Content-Disposition", "attachment; filename=report.xls"); Response.ContentType = "application/ms-excel"; Response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312"); Response.Write(sw); Response.End(); } protected void Button1_Click1(object sender, EventArgs e) { if (string.IsNullOrEmpty(Request.QueryString["id"])) { ExportToExcel(ToOutExcel(null)); //ExcelHelper eh = new ExcelHelper(); //eh.DataTableToOfficeExcel(ToOutExcel(null), 1,1); } else { string id = Request.QueryString["id"].ToString(); ExportToExcel(ToOutExcel(id)); } }我什么都没做就导出 那你在调用 ExportToExcel 方法之前写了什么代码?能贴出来吗? 代码里加这个方法了没? public override void VerifyRenderingInServerForm(Control control) { } private void DataTable2Excel(System.Data.DataTable dtData, String FileName) { //当前对话 System.Web.HttpContext curContext = System.Web.HttpContext.Current; //IO用于导出并返回excel文件 System.IO.StringWriter strWriter = null; System.Web.UI.HtmlTextWriter htmlWriter = null; if (dtData != null) { //设置编码和附件格式 //System.Web.HttpUtility.UrlEncode(FileName, System.Text.Encoding.UTF8)作用是方式中文文件名乱码 curContext.Response.AddHeader("content-disposition", "attachment;filename=" + System.Web.HttpUtility.UrlEncode(FileName, System.Text.Encoding.UTF8) + ".xls"); curContext.Response.ContentType = "application nd.ms-excel"; curContext.Response.ContentEncoding = System.Text.Encoding.UTF8; curContext.Response.Charset = "GB2312"; //导出Excel文件 strWriter = new System.IO.StringWriter(); htmlWriter = new System.Web.UI.HtmlTextWriter(strWriter); //为了解决dgData中可能进行了分页的情况,需要重新定义一个无分页的GridView gvExport.DataSource = dtData.DefaultView; gvExport.AllowPaging = false; gvExport.DataBind(); //下载到客户端 gvExport.RenderControl(htmlWriter); curContext.Response.Write(strWriter.ToString()); curContext.Response.End(); } } public override void VerifyRenderingInServerForm(Control control) { } TinyMce编辑器 谁用过啊 ASP.NET中GridView的问题 div+css兼容问题 求助:关于rss信息采集 Symantec AntiVirus杀毒软件打不开,是中了什么病毒? 一个小问题,进来看看 字符串用正则表达式替换问题 dropdownList一个很奇怪的问题,不知大家是怎么解决的? 播放音乐文件的问题,高手请赐教!!! 能在样式.css文件中定义DataGrid 的样式吗?《高分哟》 js如何获取td值 如何去获取所有选中的checkbox然后做批量删除?
不要自己胡乱发明啊
你到底是生成html页下载,还是以txt文件的格式导出
不要混用啊
导出excel
代码一堆一堆的
不过不管你用html还是txt,导出来都不是真正的excel,打开时会报错
而且也没法进行excel单元格的详细设置,比如合并单元格,修改字体颜色什么的
想导出的好看,还是用NPOI吧
System.Web.UI.WebControls.GridView dataGrid = new System.Web.UI.WebControls.GridView();
dataGrid.DataSource = dt.DefaultView;
dataGrid.AllowPaging = false;
dataGrid.HeaderStyle.HorizontalAlign = HorizontalAlign.Center;
dataGrid.HeaderStyle.Font.Bold = true;
dataGrid.DataBind(); HttpContext.Current.Response.AddHeader("Content-Disposition", "attachment; filename=" + System.Web.HttpUtility.UrlEncode("人员出现场统计", System.Text.Encoding.UTF8) + ".xls");
HttpContext.Current.Response.Charset = "UTF-8";
Response.ContentEncoding = System.Text.Encoding.GetEncoding("UTF-8");
HttpContext.Current.Response.ContentType = "application/ms-excel"; dataGrid.EnableViewState = false;
dataGrid.AutoGenerateColumns = true;
System.IO.StringWriter tw = new System.IO.StringWriter(); System.Web.UI.HtmlTextWriter hw = new System.Web.UI.HtmlTextWriter(tw);
dataGrid.RenderControl(hw); HttpContext.Current.Response.Write(tw.ToString());
HttpContext.Current.Response.End();
就在导出前,修改一下dt的columnName
这句之前有没有对Response的Header再做什么操作?
这句之前应该是有response.flush操作
{
StringWriter sw = new StringWriter();
StringBuilder sb = new StringBuilder();
foreach (DataColumn DC in DT.Columns)
{
if (!String.IsNullOrEmpty(DC.Caption))
{
sb.Append("\t" + DC.Caption);
}
}
if (sb.Length > 0)
{
sw.WriteLine(sb.ToString().Substring(1)); foreach (DataRow Dr in DT.Rows)
{
sb = new StringBuilder();
foreach (DataColumn DC in DT.Columns)
{
if (!String.IsNullOrEmpty(DC.Caption))
{
sb.Append("\t" + Dr[DC].ToString());
}
}
sw.WriteLine(sb.ToString().Substring(1));
}
} //sw.Close();
//DT.Clear();
//DT.Dispose();
Response.AddHeader("Content-Disposition", "attachment; filename=report.xls");
Response.ContentType = "application/ms-excel";
Response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");
Response.Write(sw);
Response.End();
}
protected void Button1_Click1(object sender, EventArgs e)
{
if (string.IsNullOrEmpty(Request.QueryString["id"]))
{
ExportToExcel(ToOutExcel(null));
//ExcelHelper eh = new ExcelHelper();
//eh.DataTableToOfficeExcel(ToOutExcel(null), 1,1);
}
else
{
string id = Request.QueryString["id"].ToString(); ExportToExcel(ToOutExcel(id));
}
}我什么都没做就导出
那你在调用 ExportToExcel 方法之前写了什么代码?能贴出来吗?
{
}
{ //当前对话
System.Web.HttpContext curContext = System.Web.HttpContext.Current;
//IO用于导出并返回excel文件
System.IO.StringWriter strWriter = null;
System.Web.UI.HtmlTextWriter htmlWriter = null; if (dtData != null)
{
//设置编码和附件格式
//System.Web.HttpUtility.UrlEncode(FileName, System.Text.Encoding.UTF8)作用是方式中文文件名乱码
curContext.Response.AddHeader("content-disposition", "attachment;filename=" + System.Web.HttpUtility.UrlEncode(FileName, System.Text.Encoding.UTF8) + ".xls");
curContext.Response.ContentType = "application nd.ms-excel";
curContext.Response.ContentEncoding = System.Text.Encoding.UTF8;
curContext.Response.Charset = "GB2312"; //导出Excel文件
strWriter = new System.IO.StringWriter();
htmlWriter = new System.Web.UI.HtmlTextWriter(strWriter); //为了解决dgData中可能进行了分页的情况,需要重新定义一个无分页的GridView
gvExport.DataSource = dtData.DefaultView;
gvExport.AllowPaging = false;
gvExport.DataBind(); //下载到客户端
gvExport.RenderControl(htmlWriter);
curContext.Response.Write(strWriter.ToString());
curContext.Response.End();
}
}
public override void VerifyRenderingInServerForm(Control control)
{
}