WebBrowser控件技术
◆打印操作的实现
此功能的实现主要是利用WebBrowser控件的函数接口来实现打印、打印预览(默认的)、页面设置(默认的)。
|
【实例代码】
//自定义类PrintClass public string DGPrint(DataSet ds) { //DGPrint执行的功能:根据DataTable转换成对应的HTML对应的字符串 DataTable myDataTable=new DataTable(); myDataTable=ds.Tables[0]; int myRow=myDataTable.Rows.Count; int myCol=myDataTable.Columns.Count; StringBuilder sb=new StringBuilder(); string colHeaders=""+"<object ID=‘WebBrowser1’ WIDTH=0 HEIGHT=0 CLASSID=‘CLSID:8856F961-340A-11D0-A96B-00C04FD705A2’> //打印 WebBrowser1.ExecWB(6,1); //打印设置 WebBrowser1.ExecWB(8,1); //打印预览 WebBrowser1.ExecWB(7,1); //直接打印 WebBrowser1.ExecWB(6,6); |
在把DataGrid转换为对应的HTML代码时,如果存在按钮列就会报错,最好把这一列隐藏,一般只能转换数据列。其次要注意分页问题,一般只能打印当前一页,最好在打印之前除掉分页。导出到Excel,Word中去打印。可以在服务端或者客户端进行。
优点:使用这种方法,可适应性比较强,控制较好。
缺点:在服务端使用的话,要求服务端要安装Word,Excel,在客户端使用的话,要求客户端在IE的安全设置上有一定要求。
广州网站建设,网站建设,广州网页设计,广州网站设计
【实例代码】
protected void btnMIME_Click(object sender, System.EventArgs e) { BindData(); Response.ContentType = "application/vnd.ms-excel"; Response.AddHeader("Content-Disposition", "inline; filename="+HttpUtility.UrlEncode("下载文件.xls",Encoding.UTF8)); //如果输出为Word,修改为以下代码 //Response.ContentType = "application/ms-word" //Response.AddHeader("Content-Disposition", "inline;filename=test.doc") StringBuilder sb=new StringBuilder(); System.IO.StringWriter sw = new System.IO.StringWriter(sb); System.Web.UI.HtmlTextWriter hw = new System.Web.UI.HtmlTextWriter(sw); sb.Append(""); dgShow.RenderControl(hw); sb.Append(""); Response.Write(sb.ToString()); Response.End(); } protected void btnCom_Click(object sender, System.EventArgs e) { ExportToExcel(BindData(),Server.MapPath("ComExcel.xls")); } //从DataSet到出到Excel #region从DataSet到出到Excel ///导出指定的Excel文件 public void ExportToExcel(DataSet ds,string strExcelFileName) { if (ds.Tables.Count==0 || strExcelFileName=="") return; doExport(ds,strExcelFileName); } ///执行导出 private void doExport(DataSet ds,string strExcelFileName) { excel.Application excel= new excel.Application(); int rowIndex=1; int colIndex=0; excel.Application.Workbooks.Add(true); System.Data.DataTable table=ds.Tables[0] ; foreach(DataColumn col in table.Columns) { colIndex++; excel.Cells[1,colIndex]=col.ColumnName; } foreach(DataRow row in table.Rows) { rowIndex++; colIndex=0; foreach(DataColumn col in table.Columns) { colIndex++; excel.Cells[rowIndex,colIndex]=row[col.ColumnName].ToString(); } } excel.Visible=false; excel.ActiveWorkbook.SaveAs(strExcelFileName+".XLS", Excel.XlFileFormat.xlExcel9795,null,null,false,false, Excel.XlSaveAsAccessMode.xlNoChange,null,null,null,null,null); excel.Quit(); excel=null; GC.Collect();//垃圾回收 } #endregion |