中文字幕免费精品_亚洲视频自拍_亚洲综合国产激情另类一区_色综合咪咪久久

關于ASP.NET頁面打印技術的總結
來源:易賢網 閱讀:1922 次 日期:2015-04-29 14:21:17
溫馨提示:易賢網小編為您整理了“關于ASP.NET頁面打印技術的總結”,方便廣大網友查閱!

B/S結構導致了Web應用程序中打印的特殊性。

● 程序運行在瀏覽器中,打印機在本地,而文件確可能在服務器上,導致了打印控制不是很靈活。

● 格式如何控制和定制等,是我們開發中可能會面對的問題。

打印文檔的生成

1、客戶端腳本方式

一般情況下,主要使用JS 可以分析源頁面的內容,將欲打印的頁面元素提取出來,實現打印。通過分析源文檔的內容,可以生成打印目標文檔。

優點:客戶端獨立完成打印目標文檔的生成,減輕服務器負荷;

缺點:源文檔的分析操作復雜,并且源文檔中的打印內容要有約定。

2、服務器端程序方式

利用后臺代碼從數據庫中讀取打印源,生成打印目標文檔。當的頁面生成時,還應適當考慮使用CSS 來實現強制分頁控制。

優點:可以生成內容非常豐富的打印目標文檔,目標文檔的內容的可控性強。由于打印內容是從數據庫中獲取的,所以生成操作相對簡單;

缺點:服務器端負載比較大;

頁面設置

● 頁面設置主要是指設置

打印文檔的頁邊距、頁眉、頁腳、紙張等內容。頁面設置將直接影響到打印文檔版面的生成效果,所以它和打印文檔的生成有著密切的關系。比如:表格的行數、大小、位置、字體的大小等。

現有的技術是利用IE6.0 內置的打印模板方式來控制頁面設置,其可以對打印目標文檔產生非常大的影響。打印模板可以控制頁邊距、頁眉、頁腳、奇偶頁等內容,并可以將用戶的設置取得,還可以將設置發送到服務器端。打印模板技術可以自定預覽窗口和打印格式,最大限度地影響目標文檔和打印效果。

IE直接打印

● 即直接調用window.print或者webrower控件的ExecWB方法來打印。

● 優點:方便快捷,客戶端無需任何設置即可。

● 缺點:打印控制不是很靈活。如果直接調用

window.print來打印頁面,頁面上別的元素也會被打印處理,頁頭頁尾的格式也不好控制。

● 常用方法:大部分情況會把查詢的結果綁定到DataGrid上來,然后打印DataGrid。這種情況的打印一般來說格式比較固定簡單,確定后基本不會再作更改。所以可以采用IE直接打印。

【實例代碼】

注:①這是客戶端通過window.print打印指定內容。這里定義sprnstr和eprnstr來指定內容

執行代碼:

<input type="button" name="print" value="預覽并打印" onclick="preview()">

$news_page$

② 如果直接使用window.print將打印頁面上的所有內容,但是我們可以使用

<script language="Javascript">

function preview()

{

bdhtml=window.document.body.innerHTML;

sprnstr="<!--startprint-->";

eprnstr="<!--endprint-->";

prnhtml=bdhtml.substr(bdhtml.indexOf(sprnstr)+17);

prnhtml=prnhtml.substring(0,prnhtml.indexOf(eprnstr));

window.document.body.innerHTML=prnhtml;

window.print();

}

</script>

<!--省略部分代碼-->

<form id="WebForm1" method="post" runat="server">

<center>本部分以上不被打印</center>

<!--startprint-->

<div align="center">

<asp:DataGrid id="dgShow" runat="server">

<!--省略部分代碼-->

</asp:DataGrid>

</div>

<!--endprint-->

<center>本部分以下不被打印</center>

<div align="center">

<input type="button" name="print" value="預覽并打印" onclick="preview()">

</div>

<style> @media Print { .Noprn { DISPLAY: none }}

</style>

<p class="Noprn">不打印</p>

<table id="datagrid">

<tr>

<td>打印</td>

</tr>

</table>

<input class="Noprn" type="button" onclick="window.print()" value="print">

</form>

WebBrowser 控件技術

● 打印操作的實現

此功能的實現主要是利用WebBrowser控件的函數接口來實現打印、打印預覽(默認的)、頁面設置(默認的)。

<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);

//自定義類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="<html><body>"+"<object ID='WebBrowser' WIDTH=0 HEIGHT=0 CLASSID='CLSID:8856F961-340A-11D0-A96B-00C04FD705A2'VIEWASTEXT></object>" +"<table><tr>";

for(int i=0;i<myCol;i++)

{

colHeaders +="<td>"+ myDataTable.Columns[i].ColumnName.ToString()+"</td>";

}

colHeaders += "</tr>";

sb.Append(colHeaders);

for(int i=0;i<myRow;i++)

{

sb.Append("<tr>");

for(int j=0;j<myCol;j++)

{

sb.Append("<td>");

sb.Append(myDataTable.Rows[i][j].ToString().Trim());

sb.Append("</td>");

}

sb.Append("</tr>");

}

sb.Append("</table></body></html>");

colHeaders=sb.ToString();

colHeaders+="<script languge='Javascript'>WebBrowser.ExecWB(6,1); window.opener=null;window.close();</script>";

return(colHeaders);

}

$news_page$

//頁面:打印按鈕事件

PrintClass myP = new PrintClass();

Response.Write(myP.DGPrint(Bind());

在把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("<html><body>");

dgShow.RenderControl(hw);

sb.Append("</body></html>");

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

$news_page$

利用.Net組件打印

利用.Net組件

● 優點:這種打印方式對于格式變化大,數據量小的應用來說非常合適。

● 缺點:

– 需要客戶端安.Net framework組件。

– Xml的解析上,如果文件較大速度上不是很理想。

– 頁面首次加載時會有明顯的延時。

使用XSL和XSLT轉換Xml

● XSL:擴展樣式表語言,可以通過它來把Xml轉換為其他的文本格式

● XSL轉換包括發現或者選擇一個模式匹配,通過使用XPath選擇一個結果集,然后對結果集中的每一項,為這些匹配定義結果輸出。

● XSL是一個功能強大的工具,可以把Xml轉換成任何你想要的格式。

代碼如下:

XslTransform xslt = new XslTransform();

xslt.Load(Server.MapPath( "StudentsToHTML.xsl") );

XPathDocument XDoc = new XPathDocument(Server.MapPath( "Students.Xml" ));

XmlWriter writer = new XmlTextWriter( server.MapPath("Students.html"), System.Text.Encoding.UTF8 );

xslt.Transform( XDoc, null, writer );

writer.Close();

Response.Redirect("Students.html");

利用ActiveX控件打印

利用第三方控件

● 自己開發控件。這種方式很多商用軟件采用這種方式,寫成控件后已經無所謂是在web中使用還是應用程序中使用了。

● 優點:打印方式非常靈活,基本上程序能做到的web也能做得到。

● 缺點:客戶端需要安裝組件,部署不是很方便。

使用水晶報表

● 用戶僅需要Web 瀏覽器就可以查看報表

● 報表查看器控件可以是應用程序中眾多控件之一。

● 與報表輕松交互

● 用戶可將報表導出為Microsoft word 和Excel 格式,以及PDF、HTML 和Crystal Reports for visual Studio .Net格式。

● 可以使用報表控件直接打印

$news_page$

代碼如下:

//水晶報表的填充,省略連接代碼

myReport ReportDoc = new myReport();

ReportDoc.SetDataSource(ds);

Crv.ReportSource = ReportDoc;

//輸出為指定類型文件

CrystalDecisions.Shared.DiskFileDestinationOptions DiskOpts = new CrystalDecisions.Shared.DiskFileDestinationOptions();

ReportDoc.ExportOptions.ExportDestinationType = CrystalDecisions.Shared.ExportDestinationType.DiskFile;

string strFileName = server.MapPath("Output");

switch (ddlFormat.SelectedItem.Text)

{

case "Rich Text (RTF)":

ReportDoc.ExportOptions.ExportFormatType = CrystalDecisions.Shared.ExportFormatType.RichText;

DiskOpts.DiskFileName =strFileName + ".rtf";

break;

case "Portable Document (PDF)":

ReportDoc.ExportOptions.ExportFormatType = CrystalDecisions.Shared.ExportFormatType.PortableDocFormat;

DiskOpts.DiskFileName = strFileName + ".pdf";

break;

case "MS word (DOC)":

ReportDoc.ExportOptions.ExportFormatType = CrystalDecisions.Shared.ExportFormatType.WordForWindows;

DiskOpts.DiskFileName = strFileName + ".doc";

break;

case "MS excel (XLS)":

ReportDoc.ExportOptions.ExportFormatType = CrystalDecisions.Shared.ExportFormatType.Excel;//

DiskOpts.DiskFileName = strFileName + ".xls";

break;

default:

break;

}

ReportDoc.ExportOptions.DestinationOptions = DiskOpts;

ReportDoc.Export();

//打印

// 指定打印機名稱

string strPrinterName;

strPrinterName = @"Canon Bubble-Jet BJC-210SP";

// 設置打印頁邊距

PageMargins margins;

margins = ReportDoc.PrintOptions.PageMargins;

margins.bottomMargin = 250;

margins.leftMargin = 350;

margins.rightMargin = 350;

margins.topMargin = 450;

ReportDoc.PrintOptions.ApplyPageMargins(margins);

//應用打印機名稱

ReportDoc.PrintOptions.PrinterName = strPrinterName;

// 打印 // 打印報表。將startPageN 和endPageN

// 參數設置為0 表示打印所有頁。

ReportDoc.PrintToPrinter(1, false,0,0);

更多信息請查看IT技術專欄

更多信息請查看網絡編程
易賢網手機網站地址:關于ASP.NET頁面打印技術的總結
由于各方面情況的不斷調整與變化,易賢網提供的所有考試信息和咨詢回復僅供參考,敬請考生以權威部門公布的正式信息和咨詢為準!

2026上岸·考公考編培訓報班

  • 報班類型
  • 姓名
  • 手機號
  • 驗證碼
關于我們 | 聯系我們 | 人才招聘 | 網站聲明 | 網站幫助 | 非正式的簡要咨詢 | 簡要咨詢須知 | 新媒體/短視頻平臺 | 手機站點 | 投訴建議
工業和信息化部備案號:滇ICP備2023014141號-1 云南省教育廳備案號:云教ICP備0901021 滇公網安備53010202001879號 人力資源服務許可證:(云)人服證字(2023)第0102001523號
云南網警備案專用圖標
聯系電話:0871-65099533/13759567129 獲取招聘考試信息及咨詢關注公眾號:hfpxwx
咨詢QQ:1093837350(9:00—18:00)版權所有:易賢網
云南網警報警專用圖標
中文字幕免费精品_亚洲视频自拍_亚洲综合国产激情另类一区_色综合咪咪久久
欧美日韩精品伦理作品在线免费观看 | 欧美色精品天天在线观看视频| 亚洲高清激情| 欧美国产亚洲精品久久久8v| 亚洲午夜电影网| 狠狠色狠狠色综合日日小说| 欧美激情一区三区| 亚洲综合视频在线| 亚洲国产你懂的| 国产一区二区欧美| 久久蜜臀精品av| 在线观看福利一区| 欧美视频一区二区三区…| 久久亚洲精品伦理| 亚洲欧美日韩一区二区三区在线| 国产精品自拍小视频| 欧美黄色网络| 久久中文久久字幕| 欧美午夜大胆人体| 蜜桃av综合| 欧美一级在线亚洲天堂| 9久草视频在线视频精品| 亚洲成色www久久网站| 国产一区深夜福利| 国产亚洲第一区| 国产精品亚洲一区二区三区在线| 欧美日韩伦理在线| 欧美久久一区| aa级大片欧美三级| 亚洲激情一区二区| 1024精品一区二区三区| 娇妻被交换粗又大又硬视频欧美| 国产情人节一区| 国产日韩亚洲欧美| 国产日本欧美视频| 国产精品亚洲产品| 国产精品有限公司| 国产欧美欧美| 国产精品一区毛片| 国产精品日韩精品欧美精品| 欧美午夜欧美| 国产精品网站一区| 国产精品日韩一区| 国产视频精品免费播放| 国产在线精品二区| 在线观看欧美成人| 亚洲肉体裸体xxxx137| 亚洲精品专区| aa级大片欧美| 亚洲一区二区三区成人在线视频精品| 中文精品一区二区三区| 亚洲在线1234| av成人福利| 亚洲女女女同性video| 亚洲欧美高清| 亚洲免费视频观看| 久久久精品一区| 欧美成人在线影院| 欧美人与性动交α欧美精品济南到| 午夜精品一区二区三区在线视| 午夜精品影院| 久久久精品日韩| 久久精品理论片| 久久综合色播五月| 欧美日韩国产片| 国产精品日韩在线| 在线观看91精品国产麻豆| 欧美日韩久久精品| 亚洲视频国产视频| 久久成人18免费观看| 欧美自拍丝袜亚洲| 蜜臀av国产精品久久久久| 欧美成人免费va影院高清| 欧美视频在线免费| 欧美~级网站不卡| 欧美精品自拍| 国产深夜精品| 亚洲国产精品久久人人爱蜜臀| 亚洲午夜在线视频| 欧美精品一区二| 亚洲东热激情| 久久午夜影视| 国产精品日韩欧美| 亚洲素人在线| 欧美午夜在线| 一本久久综合亚洲鲁鲁五月天| 玖玖国产精品视频| 欧美**人妖| 在线观看视频日韩| 久久婷婷丁香| 在线观看国产精品淫| 久久精品一区二区| 国产一区二区三区久久精品| 午夜精品福利一区二区三区av| 欧美三级欧美一级| 一区二区三区精品视频| 欧美色欧美亚洲另类二区| 日韩写真在线| 欧美视频中文字幕在线| 亚洲无亚洲人成网站77777| 欧美日本在线看| 一区二区免费在线视频| 欧美日韩国产系列| 亚洲一级黄色片| 国产精品亚洲片夜色在线| 欧美一区日韩一区| 国内精品久久国产| 免费看的黄色欧美网站| 亚洲国内精品在线| 欧美精选一区| 亚洲影视中文字幕| 国产精品一区久久| 久久综合九九| 亚洲片区在线| 国产精品白丝黑袜喷水久久久 | 99精品99| 欧美视频在线一区二区三区| 亚洲欧美精品| 一区视频在线播放| 欧美久久精品午夜青青大伊人| 亚洲一区二区三区乱码aⅴ蜜桃女| 国产精品男gay被猛男狂揉视频| 欧美一区二区三区另类 | 欧美日韩国产区一| 亚洲丝袜av一区| 国产毛片一区二区| 久热精品视频在线观看| 亚洲久色影视| 国产亚洲欧美日韩美女| 免费在线日韩av| 亚洲一区二区在线视频| 黑人一区二区| 国产精品国产三级国产| 久久久亚洲国产天美传媒修理工 | 亚洲天堂免费在线观看视频| 国产精品综合色区在线观看| 开心色5月久久精品| 欧美色精品天天在线观看视频| 性感少妇一区| 亚洲精品久久嫩草网站秘色| 久久精品国产一区二区电影| 精品88久久久久88久久久| 欧美日韩国产影院| 久久久夜夜夜| 羞羞色国产精品| 亚洲精品国产精品乱码不99| 国产手机视频精品| 欧美色中文字幕| 巨胸喷奶水www久久久免费动漫| 一区二区三区四区精品| 在线观看成人av电影| 国产伦精品一区二区三区视频孕妇 | 国产欧美精品一区二区三区介绍| 麻豆成人在线播放| 欧美一区二区在线免费播放| 亚洲毛片在线观看.| 伊人久久大香线蕉综合热线| 欧美午夜一区二区福利视频| 欧美激情一区在线观看| 久久久综合网站| 欧美专区日韩视频| 亚洲一区二区三区色| 日韩一区二区免费看| 狠狠v欧美v日韩v亚洲ⅴ| 国产麻豆91精品| 欧美午夜精品理论片a级按摩| 美女图片一区二区| 久久久夜精品| 久久精品国产综合| 久久不射电影网| 欧美中文字幕精品| 午夜国产不卡在线观看视频| 亚洲视屏在线播放| 亚洲深夜影院| 中文在线资源观看视频网站免费不卡| 亚洲精品久久久久中文字幕欢迎你| 激情久久五月| 激情一区二区三区| 狠狠色综合播放一区二区| 国产欧美一级| 国产日韩欧美在线一区| 国产麻豆视频精品| 国产欧美日韩一区| 国产亚洲一区在线| 国精产品99永久一区一区| 好吊色欧美一区二区三区视频| 国产视频综合在线| 精品91免费| 亚洲国产片色| 日韩亚洲国产精品| 亚洲精品久久7777| 99视频一区二区| 亚洲一区在线视频| 欧美一区二区在线免费播放| 性色av一区二区怡红| 久久日韩粉嫩一区二区三区| 玖玖综合伊人| 欧美日韩国产综合视频在线观看| 欧美精品自拍偷拍动漫精品| 欧美色视频一区|