2012-04-16 170 views
1

我有下面的表格,例如,我如何添加打印功能只是爲了表格?和一個按鈕,單擊時,下表是通過打印機打印打印html表

<table border="1"> 
<tr> 
<th>Header 1</th> 
<th>Header 2</th> 
</tr> 
<tr> 
<td>row 1, cell 1</td> 
<td>row 1, cell 2</td> 
</tr> 
<tr> 
<td>row 2, cell 1</td> 
<td>row 2, cell 2</td> 
</tr> 
</table> 
+0

啊,但它打印整個頁面,而不僅僅是表 – dames 2012-04-16 12:07:46

+0

此功能將不可用,如果JavaScript是禁用。 – Bakudan 2012-04-16 12:11:19

回答

4

您需要創建例如新樣式表print.css並設置CSS媒體=打印

<style media="screen"> 
    .noPrint{ display: block; } 
    .yesPrint{ display: block !important; } 
</style> 

<style media="print"> 
    .noPrint{ display: none; } 
    .yesPrint{ display: block !important; } 
</style> 

,並添加類「yesPrint」你要打印

章節
<div class= "yesPrint"> 
<table border="1"> 
<tr> 
<th>Header 1</th> 
<th>Header 2</th> 
</tr> 
<tr> 
<td>row 1, cell 1</td> 
<td>row 1, cell 2</td> 
</tr> 
<tr> 
<td>row 2, cell 1</td> 
<td>row 2, cell 2</td> 
</tr> 
</table> 
</div> 

現在添加一個按鈕

<input TYPE="button" onClick="window.print()"> 

更多detatil:http://www.codeproject.com/KB/HTML/Printing_with_CSS.aspx

+0

好吧,我的實際表是一個從MySQL數據庫檢索信息的HTML表格,使用PHP,當我嘗試打印所有我看到的是HTML的東西 – dames 2012-04-16 12:42:43

+0

你可以在這裏粘貼輸出? ? – 2012-04-16 12:52:11

+0

FILEID 姓 姓氏 結果」; while($ row = mysql_fetch_array($ result)) { echo「」; echo「​​」。 $ row ['app_file_id']。 「」; 回聲「​​」。 $ row ['app_fname']。「」; 回聲「​​」。 $ row ['app_lname']。「」; echo「」; } echo「」; ?> – dames 2012-04-16 12:54:49

0

js方式:(你不能只打印表)

<FORM> 
<INPUT TYPE="button" onClick="window.print()"> 
</FORM> 

c#方式:

你應該打開新的頁面或容器,包含樣式或水晶報表 - 並使用c#命令進行打印。

2

我用這個函數:

<script type="text/javascript"> 
function PrintElem(elem) 
    { 
     Popup($(elem).html()); 
    } 

    function Popup(data) 
    { 
     var mywindow = window.open('', 'my div', 'height=400,width=600'); 
     mywindow.document.write('<html><head><title></title>'); 
     /*optional stylesheet*/ //mywindow.document.write('<link rel="stylesheet" href="main.css" type="text/css" />'); 
     mywindow.document.write('</head><body style="direction:rtl;"><pre>'); 
     mywindow.document.write(data); 
     mywindow.document.write('</pre></body></html>'); 
     mywindow.document.close(); 
     mywindow.print(); 
     return true; 
    } 
</script> 

你可以把它修改您的需求。
實際上,它會打開一個包含此元素的新窗口並將其打印出來。

0

其實你只能打印表格。它需要一些JavaScript魔法(靈感來自this page)。這個想法是,我們打開一個新的頁面(JS窗口元素),將表插入該頁面並打印它。不同瀏覽器可能存在一些可移植性問題。另外,一些瀏覽器可能會抱怨彈出式窗口,但是......理論上它應該起作用。 :-)

該代碼可能看起來像這樣;

<script type="text/javascript"> 
    var win = window.open(); // We create the window 

    win.document.open(); // We open the window (popup-warning!) 
    win.document.write("<h1>Hello world</h1>"); // Insert table here <-- 

    win.print(); // Print the content 
    win.close(); // Close down the page 
</script> 
+0

什麼用隱藏的iframe,而不是彈出? – Frizi 2013-03-09 13:47:21

1

一種方法是在新頁面中打開表格。您可以通過將表單的JavaScript提交到新頁面來完成此操作,並傳遞構建表格所需的所有變量。

<form name = "theform" .... > 
<input type = "hidden" name = "something" value = "importantdata"> 
    ... stuff 
</form> 

<script type = "text/javascript"> 
submit('theform') 
</script> 

然後把代碼與您的按鈕一起在新頁面上生成表。如果你不想要一個按鈕,你仍然可以通過簡單地參照你的JavaScript函數的HTML代碼中調用打印功能:

<script type = "text/javascript"> 
printit() 
</script> 

您可以在一個新的頁面使用JavaScript窗口也打開表。 open()方法。如果您沒有太多變量傳遞到新窗口,這是一個好方法。你可以通過url變量傳遞一些小東西,你可以在你的javascript函數中設置它們。

我也使用了一種方法,我呆在同一頁面上,用戶可以點擊某個東西來刪除除表格以外的所有東西的顯示。這是由一個div

<div id= "remove"> 
    stuff 
</div> 

當用戶不點擊包裹可移動的東西做了,那就是解僱的JavaScript功能設置顯示爲ID爲「無」。

document.getElementById('remove').style.display = 'none'; 

第二次點擊恢復顯示。點擊不必在按鈕上。我在報告標題上使用了它,以便除報告本身之外的所有內容都會消失。你可以把它放在你的一個表格單元格上。

在任何情況下,window.print()方法將只打開打印機的窗口;然後用戶可以設置爲他/她希望,確保打印機在打印作業等