0 Comments

ASP.NET页面打印技术的总结(2)

发布于:2013-08-07  |   作者:广州网站建设  |   已聚集:人围观

WebBrowser控件技术

◆打印操作的实现

此功能的实现主要是利用WebBrowser控件的函数接口来实现打印、打印预览(默认的)、页面设置(默认的)。

 


				

CLASSID=‘CLSID:8856F961-340A-11D0-A96B-00C04FD705A2’> //打印 WebBrowser1.ExecWB(6,1); //打印设置 WebBrowser1.ExecWB(8,1); //打印预览 WebBrowser1.ExecWB(7,1); //直接打印 WebBrowser1.ExecWB(6,6);

 

 

 

【实例代码】

广州网站建设,网站建设,广州网页设计,广州网站设计


				

//自定义类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
 

标签:
飞机