Как распечатать таблицу с помощью Javascript?

Я нашел этот код для печати в Javascript.

function printData()
{
   var divToPrint=document.getElementById("printTable");
   newWin= window.open("");
   newWin.document.write(divToPrint.outerHTML);
   newWin.print();
   newWin.close();
}

Идентификатор элемента "printTable" - это идентификатор таблицы, которую я хочу напечатать, но, к сожалению, он выводит только содержимое таблицы, а не стиль таблицы. Я просто хочу иметь границы на нем, чтобы его было легче читать в печати. Может кто-нибудь мне помочь?

Ответ 1

Вот ваш код в примере jsfiddle. Я тестировал его, и он выглядит нормально.

http://jsfiddle.net/dimshik/9DbEP/4/

Я использовал простую таблицу, возможно, вам не хватает CSS на вашей новой странице, которая была создана с помощью JavaScript.

<table border="1" cellpadding="3" id="printTable">
    <tbody><tr>
        <th>First Name</th>
        <th>Last Name</th>      
        <th>Points</th>
    </tr>
    <tr>
        <td>Jill</td>
        <td>Smith</td>      
        <td>50</td>
    </tr>
    <tr>
        <td>Eve</td>
        <td>Jackson</td>        
        <td>94</td>
    </tr>
    <tr>
        <td>John</td>
        <td>Doe</td>        
        <td>80</td>
    </tr>
    <tr>
        <td>Adam</td>
        <td>Johnson</td>        
        <td>67</td>
    </tr>
</tbody></table>

Ответ 3

Одно дерзкое решение:

  function printDiv(divID) {
        //Get the HTML of div
        var divElements = document.getElementById(divID).innerHTML;
        //Get the HTML of whole page
        var oldPage = document.body.innerHTML;
        //Reset the page HTML with div HTML only
        document.body.innerHTML = 
          "<html><head><title></title></head><body>" + 
          divElements + "</body>";
        //Print Page
        window.print();
        //Restore orignal HTML
        document.body.innerHTML = oldPage;

    }

HTML:

<form id="form1" runat="server">
    <div id="printablediv" style="width: 100%; background-color: Blue; height: 200px">
        Print me I am in 1st Div
    </div>
    <div id="donotprintdiv" style="width: 100%; background-color: Gray; height: 200px">
        I am not going to print
    </div>
    <input type="button" value="Print 1st Div" onclick="javascript:printDiv('printablediv')" />
</form>

Ответ 4

Мои собратья,

В январе 2019 года я использовал код, сделанный ранее:

 <script type="text/javascript">   
    function imprimir() {
        var divToPrint=document.getElementById("ConsutaBPM");
        newWin= window.open("");
        newWin.document.write(divToPrint.outerHTML);
        newWin.print();
        newWin.close();
    }
</script>

Чтобы понять: ConsutaBPM - это DIV, который содержит внутренние фразы и таблицы. Я хотел напечатать ВСЕ, названия, таблицы и другие. Проблема была в том, когда пытался напечатать ТАБЛИЦУ...

Таблицы могут быть определены с помощью BORDER и CELLPADDING:

<table border='1' cellpadding='1' id='Tablbpm1' >

Работало нормально !!!