帮一个单位作的系统,打印的报表很多,没有用水晶报表,直接用的Table,然后调用IE的打印,存在的问题不少,如:当内容输出的比较多的时候,会把表格冲破,分两页打印,第一页脚的下边框和第二页眉的上边框都不存在了,查了一下以前的帖子,好像没有人解决,所以又发了这个帖子,请高手给指点一下!谢谢!

解决方案 »

  1.   

    css: <TR style="page-break-after:always;"><TD>表格内容</TD><TD>表格内容</TD></TR>参考:
    利用CSS控制打印分页
    http://blog.csdn.net/net_lover/archive/2004/07/06/35228.aspx
      

  2.   

    你在表格里放label试试看,吧要显示的文字用label输出,如果文字很多可以在label换行的,用文本框不好换行。这样可能不会影响到表格的格式,最多就是把表格的下边框挤道下页
      

  3.   

    对阿,就是放的label, 今天一直忙别的,athossmth(athos) 兄的方法还没试,如有别的方法还请畅所欲言,
    学习...
      

  4.   

    每页打印的内容自己编程控制吧
    我给你贴个打印示例,自己修改<!--语言无关 保存成 .HTML 看看-->
    <html>
    <head>
    <meta name=vs_targetSchema content="http://schemas.microsoft.com/intellisense/ie5">
    <title>看看</title>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
    <script language="JavaScript" >
    var hkey_root,hkey_path,hkey_key
    hkey_root="HKEY_CURRENT_USER"
    hkey_path="\\Software\\Microsoft\\Internet Explorer\\PageSetup\\"
    //设置网页打印的页眉页脚为空
    function pagesetup_null()
    {
      try{
        var RegWsh = new ActiveXObject("WScript.Shell")
        hkey_key="header"    
        RegWsh.RegWrite(hkey_root+hkey_path+hkey_key,"")
        hkey_key="footer"
        RegWsh.RegWrite(hkey_root+hkey_path+hkey_key,"")
      }catch(e){}
    }function DtPrint() {
    if (window.print) {
    var p_1       = document.all.p_1.innerHTML;
    var p_2     = document.all.p_2.innerHTML;
    //**************
    //这里根据你要打印的哪些内容,从原显示页面中用
    //<div id=P_1>p_1....</div><div id=P_2>p_2...</div>等标示,要打印多少项目就用多少下
    //提示一下,自己体会:),此处我只写出两个出来:D
    //**************
    var css = '<style type="text/css">' +
      'p {  line-height: 120%}' +
      '.ftitle {  line-height: 120%; font-size: 18px; color: #000000}' +
      'td {  font-size: 10px; color: #000000}' +
      '</style>' ;
    //**************
    //这里是定义打印用的CSS,可以根据你自己的设定去写适合你的格式哦
    //本文只定义三个,p,.ftitle,td,其余自己写。越美观越好。
    //**************
    var body ='<table width="640" border="0" cellspacing="0" cellpadding="5">' +
         '  <tr> ' +
         '    <td  class="fbody"> ' +
         '      <div align="center" class=ftitle>' + p_title + '</div>' + p_2 + 
         '    </td>' +
         '  </tr>' +
         '</table>';
    //**************
    //body这才是你重新设置的打印格式,根据你的打印要求,重新把原显示网页的DIV内容重新
    //组合,可以根据你原来的表格内容,去掉不要打印的东东,只调用你要打印的内容
    //另外:根据经验,表格大小为640左右正好是适合A4打印幅面!哈!
    //**************
    document.body.innerHTML = '<center>' + css + body + '</center>';
    //**************
    //然后在这里把document.body重新设一下,这就是打印文档!(有加CSS格式了)
    //**************
    window.print();
    //**************
    //一定要调用window.print()哦,否则,打印无效……说了那么多就成废话了:'(
    //**************
    }
    }</script>
    <!--media=print 这个属性可以在打印时有效-->
    <style media=print>
    .Noprint{display:none;}
    .PageNext{page-break-after: always;}
    </style><style>
    .tdp
    {
        border-bottom: 1 solid #000000;
        border-left:  1 solid #000000;
        border-right:  0 solid #ffffff;
        border-top: 0 solid #ffffff;
    }
    .tabp
    {
        border-color: #000000 #000000 #000000 #000000;
        border-style: solid;
        border-top-width: 2px;
        border-right-width: 2px;
        border-bottom-width: 1px;
        border-left-width: 1px;
    }
    .NOPRINT {
    font-family: "宋体";
    font-size: 9pt;
    }table.MsoTableGrid
    {border:1.0pt solid windowtext;
    text-align:justify;
    text-justify:inter-ideograph;
    font-size:10.0pt;
    font-family:"Times New Roman";
    }
    </style></head><body >
    <center class="Noprint" >
      <p>
      <OBJECT  id=WebBrowser  classid=CLSID:8856F961-340A-11D0-A96B-00C04FD705A2  height=0  width=0>
      </OBJECT>
      
      <input  type=button  value=页面设置  onclick="document.all.WebBrowser.ExecWB(8,1);"> 
      <input  type=button  value=打印预览  onclick="document.all.WebBrowser.ExecWB(7,1)">
      <input  type=button  value=打印      onclick="document.all.WebBrowser.ExecWB(6,1)">
      <input  type=button  value=直接打印  onclick="document.all.WebBrowser.ExecWB(6,6)">         
      <input  type=button  value=保存网页  onclick=document.all.WebBrowser.ExecWB(4,1)>    
        <br/>
      </p>
      <hr align="center" width="90%" size="1" noshade>
    </center>
          
      <table width="90%" border="0" align="center" cellpadding="2" cellspacing="0"  class="tabp">
    <tr>
    <td colspan="3" class="tdp">第1页</td>
        </tr>
    <tr>
      <td width="29%" class="tdp"> </td>
      <td width="28%" class="tdp"> </td>
          <td width="43%" class="tdp"> </td>
      </tr>
    <tr>
      <td colspan="3" class="tdp"> </td>
      </tr>
    <tr>
      <td colspan="3" class="tdp"><table width="100%"  border="0" cellspacing="0" cellpadding="0">
            <tr>
              <td width="50%" class="tdp"><p>这样的报表</p>
              <p>对一般的要求就够了。</p></td>
              <td> </td>
            </tr>
          </table></td>
      </tr>
    </table>
    <hr align="center" width="90%" size="1" noshade class="NOPRINT" >
    <!--分页-->
    <div class="PageNext"></div>
    <table width="90%" border="0" align="center" cellpadding="2" cellspacing="0"  class="tabp">
      <tr>
        <td class="tdp">第2页</td>
      </tr>
      <tr>
        <td class="tdp">看到分页了吧</td>
      </tr>
      <tr>
        <td class="tdp"> </td>
      </tr>
      <tr>
        <td class="tdp"> </td>
      </tr>
      <tr>
        <td class="tdp"><table width="100%"  border="0" cellspacing="0" cellpadding="0">
            <tr>
              <td width="50%" class="tdp"><p>这样的报表</p>
                  <p>对一般的要求就够了。</p></td>
              <td> </td>
            </tr>
        </table></td>
      </tr>
    </table>
    <hr align="center" width="90%" size="1" noshade class="NOPRINT" >
    <!--分页-->
    <div class="PageNext"></div>
    <table width="90%" border="0" align="center" cellpadding="2" cellspacing="0"  class="tabp">
      <tr>
        <td class="tdp">第3页</td>
      </tr>
      <tr>
        <td class="tdp">是不是很好用?</td>
      </tr>
      <tr>
        <td class="tdp"> </td>
      </tr>
      <tr>
        <td class="tdp"> </td>
      </tr>
      <tr>
        <td class="tdp"><table width="100%"  border="0" cellspacing="0" cellpadding="0">
            <tr>
              <td width="50%" class="tdp"><p>这样的报表</p>
                  <p>对一般的要求就够了。</p></td>
              <td  width="50%" class="tdp"> 123</td>
            </tr>
        </table>
        </td>
      </tr>
    </table>
    </body>
    </html>
      

  5.   

    引用一个CSS样式表吧,这样可以固定下来
      

  6.   

    to athossmth(athos) :
    刚才试了一下老兄的方法,在每页表头的地方放一条横线,可以勉强解决第二页无边框的问题,虽然不是很完美,不过应该可以交差了,谢谢!····················
    to  ywcyj(江南) :
    老兄给的代码非常详细,先谢谢了!
    不过你好像没没明白我的问题出在什么地方,是这样的,我的表格中有一个<TD></TD>单元里的内容长度是不定的,正常情况下,A4纸一页打印没问题,不过有时内容的长度过长,那么打印时A4一页就放不下了,就会自动分成两页打印,而表格的下边框就被冲破,打印出来不好看,当然,在每页表头的地方放一条横线,可以勉强解决无边框的问题,但是是否还有更好的方法呢?