WebBrowser控件技术
◆打印操作的实现
此功能的实现主要是利用WebBrowser控件的函数接口来实现打印、打印预览(默认的)、页面设置(默认的)。
//打印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
|