asp.net2.0中导出EXCEL时内容为什么始终为空?[高分]

问题描述

asp.net2.0中导出EXCEL时内容为什么始终为空?实现方式,首先生成HTML摸板[格式如下,内容太长删除了一些]privateStringBuilderpHead=newStringBuilder();privateStringBuilderpBody=newStringBuilder();privateStringBuilderpFoot=newStringBuilder();publicRptSpareQuery(){pHead.Append("<htmlxmlns:v='urn:schemas-microsoft-com:vml'");pHead.Append("xmlns:o='urn:schemas-microsoft-com:office:office'");pHead.Append("<o:Created>1996-12-17T01:32:42Z</o:Created>");pHead.Append("<o:LastSaved>2008-04-23T06:46:22Z</o:LastSaved>");pHead.Append("<trclass=xl26height=20style='mso-height-source:userset;height:15.0pt'>");pHead.Append("<tdheight=20class=xl29style='height:15.0pt;border-left:none'></td>");pHead.Append("</tr>");pHead.Append("<trclass=xl26height=20style='mso-height-source:userset;height:15.0pt'>");pHead.Append("<tdheight=20class=xl34style='height:15.0pt;border-top:none;border-left:");pHead.Append("none'>制单<ruby>日<spanstyle='display:none'><rtclass=font6style='mso-char-type:");pHead.Append("katakana'>ヒ</rt></span></ruby>期:</td>");pHead.Append("<tdclass=xl42style='border-top:none;border-left:none'x:num>20080526</td>");pHead.Append("<tdclass=xl34style='border-top:none;border-left:none'>制单<ruby>人<span");pHead.Append("style='display:none'><rtclass=font6style='mso-char-type:katakana'>シャ</rt></span></ruby>:</td>");pHead.Append("<tdclass=xl31style='border-top:none;border-left:none'>KimLuo</td>");pHead.Append("<tdclass=xl30style='border-left:none'> </td>");pHead.Append("</tr>");pHead.Append("<trheight=20style='height:15.0pt'>");pHead.Append("<tdheight=20colspan=6style='height:15.0pt;mso-ignore:colspan'></td>");pHead.Append("</tr>");pHead.Append("<trheight=19style='height:14.25pt'>");pHead.Append("<tdheight=19class=xl27style='height:14.25pt'>询价番号</td>");pHead.Append("<tdclass=xl27style='border-left:none'>品名</td>");pHead.Append("<tdclass=xl27style='border-left:none'>规格</td>");pHead.Append("<tdclass=xl27style='border-left:none'>制造商</td>");pHead.Append("<tdclass=xl27style='border-left:none'>数量</td>");pHead.Append("<tdclass=xl27style='border-left:none'>单位</td>");pHead.Append("</tr>");//pBodypBody.Append("<trheight=19style='height:14.25pt'>");pBody.Append("<tdheight=19class=xl32align=rightstyle='height:14.25pt;border-top:none'x:num>#SpareQueryNo#</td>");pBody.Append("<tdclass=xl32style='border-top:none;border-left:none'>#PartName#</td>");pBody.Append("<tdclass=xl32style='border-top:none;border-left:none'>#Speccification#</td>");pBody.Append("<tdclass=xl32style='border-top:none;border-left:none'>#Maker#</td>");pBody.Append("<tdclass=xl32align=rightstyle='border-top:none;border-left:none'x:num>#Quantity#</td>");pBody.Append("<tdclass=xl32style='border-top:none;border-left:none'>#Unit#</td>");pBody.Append("</tr>");//PFootpFoot.Append("<![ifsupportMisalignedColumns]>");pFoot.Append("<trheight=0style='display:none'>");pFoot.Append("<tdwidth=125style='width:94pt'></td>");pFoot.Append("<tdwidth=125style='width:94pt'></td>");pFoot.Append("<tdwidth=125style='width:94pt'></td>");pFoot.Append("<tdwidth=85style='width:64pt'></td>");pFoot.Append("<tdwidth=85style='width:64pt'></td>");pFoot.Append("<tdwidth=103style='width:77pt'></td>");pFoot.Append("</tr>");pFoot.Append("<![endif]>");pFoot.Append("</table>");pFoot.Append("</body>");pFoot.Append("</html>");}publicstringHead{get{returnpHead.ToString();}}publicstringBody{get{returnpBody.ToString();}}publicstringFoot{get{returnpFoot.ToString();}}然后写了一个方法:///<summary>///导出Excel文件///</summary>///<paramname="excelFile">head&body&foot</param>publicvoidExportExcel(stringexcelFile){try{StringBuildersb=newStringBuilder();sb.Append(excelFile);System.IO.StringWriteroStringWriter=newSystem.IO.StringWriter(sb);Response.ClearHeaders();Response.ClearContent();Response.Clear();Response.Buffer=true;Response.ContentEncoding=System.Text.Encoding.GetEncoding("utf-8");Response.ContentType="application/vnd.ms-excel";Response.Charset="utf-8";StringrNumber=(DateTime.Now.Year.ToString()+DateTime.Now.Month.ToString()+DateTime.Now.Day.ToString()).ToString();Response.AppendHeader("Content-Disposition","attachment;filename=Jyobihin"+rNumber+".xls");this.EnableViewState=false;Response.Write(oStringWriter.ToString());Response.End();  }catch(TTNIExceptionex){ApplicationLog.WriteError(ex.Message);}}请问为什么用这种方式导出EXCEL时里面没有内容?在VS2003下面这种方式又可以.麻烦给个解决方案:)

解决方案

解决方案二:
你看下生成的源码有什么不同
解决方案三:
Response.Clear();Response.Charset="gb2312";Response.AddHeader("content-disposition","attachment;filename=shengchanpaicheng.xls");Response.ContentEncoding=System.Text.Encoding.UTF7;Response.ContentType="application/ms-excel";System.IO.StringWriterstrw=newSystem.IO.StringWriter();System.Web.UI.HtmlTextWriterhtmw=newHtmlTextWriter(strw);GridView1.AllowPaging=false;GridView1.DataSource=bindgrid();GridView1.DataBind();GridView1.RenderControl(htmw);Response.Write(strw.ToString());Response.End();GridView1.AllowPaging=true;bindgrid();
解决方案四:
excelFile的内容有么?
解决方案五:
单步调试一下.看你的excelFile有内容吗
解决方案六:
up看看参数excelFile是不是空的
解决方案七:
excelFile有内容,我将生成的内容保存为html格式可以正确显示出来,但是输出到EXCEL时却为空白.
解决方案八:
帮顶
解决方案九:
这个是我的导出代码,有的是调用的,不过应该是有启发的哦stringsql="";stringtname="";GetDataLaydata=newGetDataLay(Page);stringdt=System.DateTime.Today.ToString("yyyyMMdd",System.Globalization.DateTimeFormatInfo.InvariantInfo);Configcon=newConfig(Page);sql="selectID,ename,fname,regfund,addr,area,jydes,conduct,carea,gsreg,swreg,gsdes,pid+','aspid,pnum,telfromv_enterwhere";tname=con.GetFieldValue("des","v_departwhereid='"+Page.Session["cid"]+"'");if(lsdCID.SelectedIndex>=0){sql+="CIDlike'"+lsdCID.SelectedValue+"%'";}if(ctrBegin.Text!=""){sql+="andRDate>='"+ctrBegin.Text+"'";}if(ctrEnd.Text!=""){sql+="andRDate<'"+ctrEnd.Text+"23:59:59.999'";}System.Data.SqlClient.SqlDataReaderdr=data.GetDataReader(sql);if(dr!=null){if(dr.HasRows){Response.Clear();Response.Buffer=true;Response.Charset="GB2312";Response.AppendHeader("Content-Disposition","attachment;filename=Fjjs"+dt+".xls");Response.ContentEncoding=System.Text.Encoding.GetEncoding("GB2312");//设置输出流为简体中文Response.ContentType="application/ms-excel";//设置输出文件类型为excel文件。this.EnableViewState=false;Response.Write("tttttt废旧金属收购站点统计表tn");Response.Write("填报单位:"+tname+"ttttttttttttt"+System.DateTime.Now.ToString("D")+"tn");Response.Write("序号t企业名称t法人代表t注册资金t经营地址t营业面积t经营类型t经营品种t仓库面积t工商登记注册号t税务登记号t注册类型t法人身份证号t从业人员t类型电话tn");sql="";while(dr.Read()){sql="";for(inti=0;i<dr.FieldCount;i++){sql+="t"+dr[i].ToString();}Response.Write(sql.Substring(1)+"n");}sql=null;dr.Close();data.Close();Response.End();}else{dr.Close();data.Close();sql="没有您选择的汇总表!";}}else{dr.Close();data.Close();sql="形成汇总表出错,请稍后重试。";}if(sql!=null){Page.Response.Write(sql);}
解决方案十:
单步根据,内容有没有输出到客户端,如有,看看内容,将它另存为.xls文件,用excel打开.

时间: 2024-12-05 10:51:02

asp.net2.0中导出EXCEL时内容为什么始终为空?[高分]的相关文章

ASP.NET2.0中的ClientScriptManager 类用法

asp.net|client ASP.NET2.0中的ClientScriptManager 类用法-如何添加客户端事件 在ASP.NET2.0中,ClientScriptManager 类通过键 String 和 Type 唯一地标识脚本.具有相同的键和类型的脚本被视为重复脚本.因此,我们可以使用脚本类型来避免混淆可能用在页中的来自不同用户控件的相似脚本. <html>  <head>    <title>ClientScriptManager Example<

在Asp.Net2.0中可以方便的访问配置文件web.config,如判断debug设置,验证类型

Asp.Net2.0中我们可以方便的访问配置文件中,.NetFrameWork2.0新增加了 SystemWebSectionGroup 类. 允许用户以编程方式访问配置文件的 system.web 组. 比如判断web.config内是否为 debug="true",或者判断身份验证形式 SystemWebSectionGroup ws = new SystemWebSectionGroup(); CompilationSection cp = ws.Compilation; 用cp

在ASP.NET2.0中通过Gmail发送邮件的代码_实用技巧

    在这里我们主要是使用Gmail,究其原因,是因为,我在使用Gmail的邮箱发送邮件的时候,遇到一小小的困难,而使用163等邮箱的时候,没遇到这个问题.     在ASP.NET2.0中,发送邮件是很简单的,我们主要使用来自命名空间System.Net.Mail中的几个类,MailMessage和SmtpClient.     核心代码是很简洁的,如下:     复制代码 代码如下:  string to = "这里填写接收者的Email地址";      string from

asp.net2.0中如何动态增加删除表格,在增加表格的同时能增加下拉列表控件?在线等

问题描述 asp.net2.0中如何动态增加删除表格,在增加表格的同时,表格中增加下拉列表控件>该如何实施?谢谢! 解决方案 解决方案二:昨晚天刚用JS写一个,给个参考吧-----------<scripttype="text/javascript">//印刷机组信息varmachineStr='<%=machineStr%>';//可开计划的产品编号和名称信息varproductionStr='<%=productionStr%>';//将印

ASP.NET2.0中的超链接

问题描述 ASP.NET2.0中的超链接控件的下划线怎麽能让它消失,鼠标移过去后下划线又显示出来 解决方案 解决方案二:a:hover{text-decoration:none}

ASP.NET2.0中Gridview中数据操作技巧

asp.net|技巧|数据     Asp.net 2.0中新增的gridview控件,是十分强大的数据展示控件,在前面的系列文章里,分别展示了其中很多的基本用法和技巧(详见<<ASP.NET 2.0中Gridview控件高级技巧>>.<<ASP.NET2.0利用Gridview实现主从关系>>).在本文中,将继续探讨有关的技巧. 一.Gridview中的内容导出到Excel 在日常工作中,经常要将gridview中的内容导出到excel报表中去,在asp.

原创:在ASP.NET2.0中实现主页嵌套

asp.net|原创 现在的很多商业公司都设有不同的部门,而这些部门在公司的网站上都有自己的子网站.一般情况下,每一个部门都会根据自己的需要来维护各自的网站.这样做虽然会使公司的网站显得丰富多彩,但这却会对用户的访问带来不便,也就是说,由于各个部门的子网站没有保持一致性而使用户在浏览网站时造成了困难.幸运的是,ASP.NET2.0为我们提供了一种解决方案,这就是主页嵌套. <?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:

ASP.NET2.0中实现主页嵌套

现在的很多商业公司都设有不同的部门,而这些部门在公司的网站上都有自己的子网站.一般情况下,每一个部门都会根据自己的需要来维护各自的网站.这样做虽然会使公司的网站显得丰富多彩,但这却会对用户的访问带来不便,也就是说,由于各个部门的子网站没有保持一致性而使用户在浏览网站时造成了困难.幸运的是,ASP.NET2.0为我们提供了一种解决方案,这就是主页嵌套. 建立嵌套主页 首先需要建立一个标准的主页,在这个主页上需要加上一些共用的东西,如公司的Logo.公司名称.页脚以及菜单等,而每个部门的子网站必须使

Asp.Net2.0中实现多任务异步页的一点提示

asp.net|异步     如果想学习Asp.Net2.0的异步页技术,那么一定要仔细阅读http://www.microsoft.com/china/MSDN/library/default.mspx?mfr=true,并且下载它的源代码仔细揣摩.全文共介绍了3种实现异步页的编程模型,且功能一种比一种强大.多余的我就不多说了,直接看最后一种模型:使用PageAsyncTask类.RegisterAsyncTask方法.ExecuteRegisteredAsyncTasks方法和Timeout