如何使用Javascript打印表格?

如何使用Javascript打印表格?,javascript,html-table,Javascript,Html Table,我发现这段代码是用Javascript打印的 function printData() { var divToPrint=document.getElementById("printTable"); newWin= window.open(""); newWin.document.write(divToPrint.outerHTML); newWin.print(); newWin.close(); } 元素ID“printTable”是我想要打印的表的ID,但不

我发现这段代码是用Javascript打印的

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

元素ID“printTable”是我想要打印的表的ID,但不幸的是,它只打印表的内容,而不打印表的样式。我只想在它上面加上边框,这样在印刷品上更容易阅读。有人能帮我吗

以下是JSFIDLE示例中的代码。我已经测试过了,看起来不错

我使用了一个简单的表,可能您在使用JavaScript创建的新页面上缺少了一些CSS

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

名字
姓
要点
吉尔
史密斯
50
前夕
杰克逊
94
约翰
雌鹿
80
亚当
约翰逊
67

您也可以使用jQuery插件来实现这一点

一种厚颜无耻的解决方案:

  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's HTML with div's HTML only
        document.body.innerHTML = 
          "<html><head><title></title></head><body>" + 
          divElements + "</body>";
        //Print Page
        window.print();
        //Restore orignal HTML
        document.body.innerHTML = oldPage;

    }
函数printDiv(divID){
//获取div的HTML
var divElements=document.getElementById(divID).innerHTML;
//获取整个页面的HTML
var oldPage=document.body.innerHTML;
//仅用div的HTML重置页面的HTML
document.body.innerHTML=
"" + 
divElements+“”;
//打印页
window.print();
//还原原始HTML
document.body.innerHTML=旧页;
}
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>

打印我我在第一组
我不打算打印
我的同事们

2019年1月,我使用了之前制定的代码:

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

函数imprimir(){
var divToPrint=document.getElementById(“ConsutaBPM”);
newWin=window.open(“”);
newWin.document.write(divToPrint.outerHTML);
newWin.print();
newWin.close();
}
要取消理解:ConsutaBPM是一个DIV,它包含内部短语和表。我想打印所有的文件、标题、表格和其他文件。问题是当尝试打印表格时

可以使用边框和单元格填充来定义表格:

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


它工作得很好

没关系。dimshik在他的回答中说,这只是一个额外的选项,当你打开一个新窗口时——你没有在主页上携带任何CSS或JavaScript文件,它就像一个空的新实例/窗口。所以这就是为什么你的桌子样式是非常裸露的;您需要添加CSS样式。那么如何将CSS文件附加到新窗口?我尝试了dimshiks方法,但我得到了厚边框。这是因为他使用
border=“1”
属性应用标准HTML边框,尽管这是一种使用HTML4-5应用边框的古老且不标准的方法(毕竟,这只是一个简单的示例)。您可以:向新窗口的头部插入样式表,或向表中添加内联样式。谢谢,。我试过了,效果很好,但是如何使边框更薄呢?有一个古老的表格样式设计工具:)我总是尊重那些添加jiffdle链接的人。关于添加页眉和页脚,如果我们想从CSS文件中添加样式,应该怎么做?。。而不是内联CSS。这是一种节省时间的聪明方法