关于 asp.net 的 Word 打印

问题描述

大家好,碰到一个奇怪的问题,正在做一个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才有问题,
解决方案十:
对哦,我也碰到过,我没有办法直接解决,就做了一个下载窗口,让用户下载到本地然后再打印:(

时间: 2024-07-30 01:57:19

关于 asp.net 的 Word 打印的相关文章

asp调用Word打印的代码_应用技巧

调用Word打印...  运行下列的脚本需要将IE的安全级别设为低,或在中级安全级别下将那个ActiveX控件设为启用,别忘记了:  <html>  <head>  <title>Build Document by Script</TITLE>  </HEAD>  <Table id="myData" border=1 align=center>  <Tr align=center>  <Td&g

ASP开发必备:WEB打印代码大全

web|web打印 ASP开发必备:WEB打印代码大全这篇文章主要介绍了如何使用ASP控制Web的各种打印效果,它能够控制纵打.横打和页面边距等. 1.控制"纵打". "横打"和"页面的边距".   (1) <script defer>   function SetPrintSettings() {   // -- advanced features   factory.printing.SetMarginMeasure(2) //

关于Word打印调用...

word|打印 调用Word打印... 运行下列的脚本需要将IE的安全级别设为低,或在中级安全级别下将那个ActiveX控件设为启用,别忘记了: <html><head><title>Build Document by Script</TITLE></HEAD><Table id="myData" border=1 align=center><Tr align=center> <Td>产品名

ASP.NET之Web打印-终极解决篇

asp.net|web|web打印|解决 做过bs开发的同志应该都深有体会,在web程序中打印不再象应用程序中那样便于控制了,web程序天生的一些特性造成了这个缺点,如:打印机在本地,而文件确可能在服务器上:格式如何控制和定制等等.都给我们开发中带来了很多问题,虽说有水晶报表等控件来解决但总归是不方便.当然有了问题就会有人来研究解决,这里我先对目前流行的几种方式做个简单介绍: 1.IE直接打印 这个不用多说,直接调用window.print或者webrower控件的ExecWB方法来打印.方便快

Word打印设置技巧

Word作为最常被使用的文本编辑工具在日常工作学习中广泛使用.随之对于文档打印自然也有着不小的需求.下面就给大家分享几条Word打印技巧. 1.逆页序打印 如果你有一篇很多页的文档需要打印,按照Word中的默认设置总是从第一页打印到最后一页,所以整篇文档打印完后是最后一页在最上面,第一页在最下面,这样我们又要手工将所有的页逆序整理一边,十分麻烦.其实我们在打印前只要先在"工具"->"选项"->"打印"选项卡中选中"逆页序打印

Word打印技巧:页序排列和双面打印技巧

输出文档按页序排列 我们平时用电脑的时候可能都少不了打印材料,Word是我们平常用的最多的Office软件之一,那么我们在用Word打印文档的时候要注意哪些问题,可以使我们的打印更加简单有效,来提高我们的办公效率呢? 比如,如果我们想使Word输出文档按页序排列,该怎么办呢? 我们打印一篇有很多页的文档时,Word默认总是从第一页打印到最后一页,所以文档打印完后是最后一页在最上面,第一页在最下面,是按页号的逆序排列的.现在有一部分激光打印机可以使输出的文档按页号正序排列,或者有的打印机有两个输出

WORD打印命令疑难释义

Word打印有强大的功能,它给我们的工作.生活带来了极大的方便,可由于它是西方人开发的软件,是西方人为中国人做的"中山装",因此,做得不合国人的口味是在所难免的,而同时也使得有些很有用的命令对许多不熟悉它的人来说很为难懂,更别说运用了.在此,请让我将一些对多数 人来说能用得上的但却较难懂的Word打印命令分别作一下简要的解释及说明一下它们的用途.用法. 1.打印到文件 如果你需要把一篇用Word编辑好的文档打印出来,而该电脑又没有配备打印机,怎么办?我们可以在Word的"文件

ASP输出生成Word 、Excel、Txt文件的方法

  在ASP中生成Word文件.Excel文件和Txt文件,参考了微软的官方文档,自己简单弄了下,基本可以实现了,不足之处,望指导!下面言归正传. 1.用ASP生成Word文档,代码示例:     用这种方法生成的Word文档,有时候会出现一个提示:"Microsoft Office Word 需要转换器以正确显示该文件.这项功能目前尚未安装,是否现在安装?",这时候重新安装SKU011.CAB就可以了,原因不明. 2.ASP生成Excel文档:   3.ASP生成Txt文档,这个最简

七种常见的Word打印设置技巧

  七种常见的Word打印设置技巧          1.打印指定页码 有些时候,我们只希望打印文档中的某些页码,只要点击菜单命令"文件→打印",在打开的"打印"对话框中,选中"打印当前页面"单选项,那么就可以打印当前鼠标所在的页面内容. 如果我们选中"打印自定义范围"单选项,就可以随意指定打印页码了. 假如我们要打印的页码是连续的,那么只要选择"打印自定义范围"后输入起始和终止的页码,中间用"-