现在好像很多地方都用到了将数据导出为Excel或Word格式,以及打印
百度了一下,发现有几种方法,如下:
导出Excel的代码:
System.IO.StringWriter SW = new System.IO.StringWriter();
System.Web.UI.HtmlTextWriter HTW = new System.Web.UI.HtmlTextWriter(SW);
//Page为要导出的对象,当前是Page,如果是DataGrid,DataList等都可以
Page.Response.Buffer = true;
Page.Response.Clear();
Page.Response.ClearContent();
Page.Response.ClearHeaders();
Page.Response.ContentType = "application nd.ms-excel";
//Response.ContentType是输出流的 HTTP MIME 类型
//Response.ContentType --- word文件
//application nd.ms-excel --- excel文件
Response.Charset = "gb2312";
Response.ContentEncoding = System.Text.Encoding.GetEncoding("gb2312");
Response.AddHeader("Content-Disposition", "attachment;filename=Out.xls");
//attachment --- 作为附件下载
//inline --- 在线打开
//filename如过是中文,则可以用HttpUtility.UrlEncode(fileName,System.Text.Encoding.UTF8)
//进行进行编码,以解决文件名乱码的问题
//ImportWord.RenderControl(HTW);
Page.RenderControl(HTW);
Page.ApplyStyleSheetSkin(Page);
Response.Write(SW.ToString());
Response.Flush();
Response.Close();
一丶直接利用IE和CSS进行打印
用CSS来控制好页面的输入格式
<input type="button" οnclick="window.print()" value="print">在页面上添加"打印"按钮就OK
主要是通过JavaScript脚本语言调用window.print()方法来实现打印
但是这样的话它打印的是整个页面,包括上面所有的控件如"打印"按钮也会被打印出来了,而且不好进行"打印设置"和"打印预览"
二丶调用IE内置的WebBrowser控件实现打印
WebBrowser控件是IE内置的浏览器控件,是ActiveX控件,无需用户下载,可以通过调用WebBrowser控件的ExecWB方法实现打印,代码如下:
<OBJECT id="WebBrowser" classid="CLSID:8856F961-340A-11D0-A96B-00C04FD705A2" height="0" width="0" class="Noprint"></OBJECT>
<input type="button" value="打印" οnclick="document.all.WebBrowser.ExecWB(6,1)" class="common_button"/>
<input type="button" value="页面设置" οnclick="document.all.WebBrowser.ExecWB(8,1)" class="common_button"/>
<input type="button" value="打印预览" οnclick="document.all.WebBrowser.ExecWB(7,1)" class="common_button" />
但是打印的时候整个页面都会被打印出来,因些要控件一下样式
<!--打印时不打印的区域-->
<style type="text/css" media="print">
.noprint{display : none }
</style>
然后把对应的不要显示的内容 class设置为noprint 如:class="noprint"
有些时候有的不想要页眉和页脚的,清空页码:
<script language="JavaScript"> 三丶利用.NET组件实现Web打印,代码如下: //格式化A1到D1范围内文字的大小为"9",字体为"粗字体",对齐方式为"中间对齐" //该范围内设置外面一层边框 //该范围内设置里面所有单元格的边框 //合并该范围内的所有单位格为一个单元格
//范围内单元格自动适应文字的长短 //范围内单元格添加背景颜色 _x.ActiveWorkbook.PrintOut(missing, missing, missing, missing, missing, missing, missing, missing); |