问题描述
大家好,碰到一个奇怪的问题,正在做一个word打印的功能,用window.open("printTemp.aspx")打开以下页面,即打印预览。在ie6与firefox中均正常,在ie7中却有问题,打开的弹出窗口不到二秒钟就自动关闭,请问,这是什么问题?万分感谢printTemp.aspx.cs代码如下:#regionusingSystem;usingSystem.IO;usingSystem.Text;usingSystem.Web.UI;#endregionpublicpartialclassCRM_PrintTemp:Page{protectedvoidPage_Load(objectsender,EventArgse){if(!IsPostBack){stringwordPath="";try{wordPath=Path.Combine(Server.MapPath("~"),@"uploadfilePrint");if(Request.QueryString["wordId"]!=null){wordPath+=@"UserPrint"+Request.QueryString["wordId"].ToString()+".doc";Response.Clear();Response.Buffer=true;Response.Charset="GB2312";Response.ContentEncoding=Encoding.GetEncoding("GB2312");Response.ContentType="application/msword";Response.WriteFile(wordPath);//指定文件路径Response.Flush();Response.Close();}}catch(Exception){}try{File.Delete(wordPath);}catch{}}}}
解决方案
解决方案二:
学习
解决方案三:
帮顶
解决方案四:
usingSystem;usingSystem.Collections.Generic;usingSystem.Text;usingSystem.Xml;usingSystem.Xml.Xsl;usingSystem.Web;usingSystem.Data;usingSystem.IO;namespaceHelper{///<summary>///常用Helper///</summary>publicpartialclassCommon{///<summary>///导出为Excel///</summary>///<paramname="dt">数据源</param>///<paramname="exportFormat">导出文件的格式</param>///<paramname="fileName">输出文件名</param>///<paramname="encoding">编码</param>publicstaticvoidExport(DataTabledt,ExportFormatexportFormat,stringfileName,Encodingencoding){DataSetdsExport=newDataSet("Export");DataTabledtExport=dt.Copy();dtExport.TableName="Values";dsExport.Tables.Add(dtExport);string[]headers=newstring[dtExport.Columns.Count];string[]fields=newstring[dtExport.Columns.Count];for(inti=0;i<dtExport.Columns.Count;i++){headers[i]=dtExport.Columns[i].ColumnName;fields[i]=ReplaceSpecialChars(dtExport.Columns[i].ColumnName);}Export(dsExport,headers,fields,exportFormat,fileName,encoding);}///<summary>///导出为Excel///</summary>///<paramname="dt">数据源</param>///<paramname="columnIndexList">列索引集合</param>///<paramname="exportFormat">导出文件的格式</param>///<paramname="fileName">输出文件名</param>///<paramname="encoding">编码</param>publicstaticvoidExport(DataTabledt,int[]columnIndexList,ExportFormatexportFormat,stringfileName,Encodingencoding){DataSetdsExport=newDataSet("Export");DataTabledtExport=dt.Copy();dtExport.TableName="Values";dsExport.Tables.Add(dtExport);string[]headers=newstring[columnIndexList.Length];string[]fields=newstring[columnIndexList.Length];for(inti=0;i<columnIndexList.Length;i++){headers[i]=dtExport.Columns[columnIndexList[i]].ColumnName;fields[i]=ReplaceSpecialChars(dtExport.Columns[columnIndexList[i]].ColumnName);}Export(dsExport,headers,fields,exportFormat,fileName,encoding);}
解决方案五:
///<summary>///导出为Excel///</summary>///<paramname="dt">数据源</param>///<paramname="columnIndexList">列索引集合</param>///<paramname="headers">字段数组</param>///<paramname="exportFormat">导出文件的格式</param>///<paramname="fileName">输出文件名</param>///<paramname="encoding">编码</param>publicstaticvoidExport(DataTabledt,int[]columnIndexList,string[]headers,ExportFormatexportFormat,stringfileName,Encodingencoding){DataSetdsExport=newDataSet("Export");DataTabledtExport=dt.Copy();dtExport.TableName="Values";dsExport.Tables.Add(dtExport);string[]fields=newstring[columnIndexList.Length];for(inti=0;i<columnIndexList.Length;i++){fields[i]=ReplaceSpecialChars(dtExport.Columns[columnIndexList[i]].ColumnName);}Export(dsExport,headers,fields,exportFormat,fileName,encoding);}///<summary>///导出为Excel///</summary>///<paramname="ds">数据源</param>///<paramname="headers">表头数组</param>///<paramname="fields">字段数组</param>///<paramname="exportFormat">导出文件的格式</param>///<paramname="fileName">输出文件名</param>///<paramname="encoding">编码</param>privatestaticvoidExport(DataSetds,string[]headers,string[]fields,ExportFormatexportFormat,stringfileName,Encodingencoding){HttpContext.Current.Response.Clear();HttpContext.Current.Response.Buffer=true;HttpContext.Current.Response.ContentType=String.Format("text/{0}",exportFormat.ToString().ToLower());HttpContext.Current.Response.AddHeader("content-disposition",String.Format("attachment;filename={0}.{1}",fileName,exportFormat.ToString().ToLower()));HttpContext.Current.Response.ContentEncoding=encoding;MemoryStreamstream=newMemoryStream();XmlTextWriterwriter=newXmlTextWriter(stream,encoding);CreateStylesheet(writer,headers,fields,exportFormat);writer.Flush();stream.Seek(0,SeekOrigin.Begin);XmlDataDocumentxmlDoc=newXmlDataDocument(ds);XslCompiledTransformxslTran=newXslCompiledTransform();xslTran.Load(newXmlTextReader(stream));System.IO.StringWritersw=newSystem.IO.StringWriter();xslTran.Transform(xmlDoc,null,sw);HttpContext.Current.Response.Write(sw.ToString());sw.Close();writer.Close();stream.Close();HttpContext.Current.Response.End();}///<summary>///动态生成XSL,并写入XML流///</summary>///<paramname="writer">XML流</param>///<paramname="headers">表头数组</param>///<paramname="fields">字段数组</param>///<paramname="exportFormat">导出文件的格式</param>privatestaticvoidCreateStylesheet(XmlTextWriterwriter,string[]headers,string[]fields,ExportFormatexportFormat){stringns="http://www.w3.org/1999/XSL/Transform";writer.Formatting=Formatting.Indented;writer.WriteStartDocument();writer.WriteStartElement("xsl","stylesheet",ns);writer.WriteAttributeString("version","1.0");writer.WriteStartElement("xsl:output");writer.WriteAttributeString("method","text");writer.WriteAttributeString("version","4.0");writer.WriteEndElement();//xsl-templatewriter.WriteStartElement("xsl:template");writer.WriteAttributeString("match","/");//xsl:value-offorheadersfor(inti=0;i<headers.Length;i++){writer.WriteString(""");writer.WriteStartElement("xsl:value-of");writer.WriteAttributeString("select","'"+headers[i]+"'");writer.WriteEndElement();//xsl:value-ofwriter.WriteString(""");if(i!=fields.Length-1)writer.WriteString((exportFormat==ExportFormat.CSV)?",":"");}//xsl:for-eachwriter.WriteStartElement("xsl:for-each");writer.WriteAttributeString("select","Export/Values");writer.WriteString("rn");//xsl:value-offordatafieldsfor(inti=0;i<fields.Length;i++){writer.WriteString(""");writer.WriteStartElement("xsl:value-of");writer.WriteAttributeString("select",fields[i]);writer.WriteEndElement();//xsl:value-ofwriter.WriteString(""");if(i!=fields.Length-1)writer.WriteString((exportFormat==ExportFormat.CSV)?",":"");}writer.WriteEndElement();//xsl:for-eachwriter.WriteEndElement();//xsl-templatewriter.WriteEndElement();//xsl:stylesheet}}///<summary>///导出文件的格式///</summary>publicenumExportFormat{///<summary>///CSV///</summary>CSV,///<summary>///DOC///</summary>DOC,///<summary>///TXT///</summary>TXT}publicpartialclassCommon{///<summary>///替换特殊字符///</summary>///<paramname="input">字符串</param>///<returns></returns>publicstaticstringReplaceSpecialChars(stringinput){//space->_x0020_//%->_x0025_//#->_x0023_//&->_x0026_///->_x002F_input=input.Replace("","_x0020_").Replace("%","_x0025_").Replace("#","_x0023_").Replace("&","_x0026_").Replace("/","_x002F_");returninput;}}}我写的类.//调用Helper.Common.Export(dt,ExportFormat.DOC,"测试",System.Text.Encoding.GetEncoding("GB2312"));
解决方案六:
学习学习
解决方案七:
可能是IE的问题吧
解决方案八:
我想也应该是IE7的问题,不知道是不是安全性问题,烦。。。
解决方案九:
谢谢各位,我输出excel的时候也不会有问题,输出Word才有问题,
解决方案十:
对哦,我也碰到过,我没有办法直接解决,就做了一个下载窗口,让用户下载到本地然后再打印:(