美文网首页
打印el-table表格

打印el-table表格

作者: 而生lhw | 来源:发表于2023-09-20 09:45 被阅读0次
WechatIMG11363.png
export function printExcel(id) {
    // 空页面
    let printStr = "<html><head><meta http-equiv='Content-Type' content='text/html; charset=utf-8'></head>";
    // 定义element-ui table组件的样式
    // box-sizing:border-box;
    //display:table-cell!important;
    const tabStyle =
    `<style>
      table{width:100%;}
      .el-table__body-wrapper{ max-height:none !important;box-sizing:border-box;}
      .el-table{ max-height:none !important;}
      .el-table__header,.el-table__body,.el-table__footer{ table-layout:fixed!important; width:100%!important;border-collapse: collapse;text-align:center;}
      table,table tr th, table tr td {border:1px solid #ddd;color:#606266;word-wrap:break-word;}
      table tr th,table tr td{ padding:4mm 0mm;word-wrap:break-word; }
      .el-table__body, tr td .cell{width:100%!important;}
      .el-table th.gutter{display: none;}
      .el-table colgroup.gutter{display: none;}

      .el-table__header{ border-collapse: inherit;}
       @media print{
       table{page-break-after: auto;}
       tr{page-break-inside: avoid; page-break-after: auto;}
       td{page-break-inside: avoid; page-break-after: auto;}
       thead{display: table-header-group;}
       tfoot{display: table-footer-group;}
       }
      // --------------------隐藏table gutter列和内容区右侧的空白 start
      .el-table th.gutter{
        display: none;
        width:0
      }
      .el-table colgroup col[name='gutter']{
        display: none;
        width: 0;
      }

      .el-table__body{
        width: 100% !important;
      }
      </style>`;
    let content = "";
    // 获取名为传入id的 dom元素内的内容
    let str = document.getElementById(id).innerHTML;

    // 拼接空页面+style样式+dom内容
    content = content + str;

    printStr = printStr + '<body><div id="ceshi" style="height:atuo;">' + content + "</div></body>" + tabStyle + "</html>";
    // 打开新页面
    let pwin = window.open("_blank");
    // 将内容赋值到新页面
    pwin.document.write(printStr);
    // document.getElementsByTagName('body')[0].style.zoom = 0.75
    pwin.document.close();
    // 聚焦-不加focuse,在某些情况下,打印页面会有问题。
    pwin.focus();
    // 使用setTimeout,等页面dom元素渲染完成后再打印。
    setTimeout(() => {
        pwin.print(); // 打印功能。 例如 window.print() 直接打印当前整个页面。
        // document.getElementsByTagName('body')[0].style.zoom = 1;
        pwin.close(); // 关闭 打印创建的当前页面
    }, 500);

}
  • 打印表格区域
 <!-- 打印表格区域 -->
    <div style="display: none">
      <div id="printArea">
        <el-table
          stripe
          border
          :max-height="tableHeight"
          :data="list"
          ref="tableBox"
        >
          <el-table-column
            align="center"
            v-for="(th, keys) in columns"
            :key="keys"
            :prop="th.prop"
            v-if="th.visible"
            :label="th.label"
            :width="200"
            :show-overflow-tooltip="true"
          >
            <template slot-scope="scope">
              <div>
                <span>{{ scope.row[th.prop] }}</span>
              </div>
            </template>
          </el-table-column>
        </el-table>
      </div>
    </div>
  • 高度超出,自动添加表头
mounted() {
   this.$nextTick(() => {
      let thead = this.$refs.tableBox.$el.querySelector(
        ".el-table__header-wrapper thead"
      );
      //追加到el-table的内容里去
      this.$refs.tableBox.$el
        .querySelector(".el-table__body-wrapper table")
        .appendChild(thead);
    });
}


// css
/* 隐藏咱们dom操作添加的节点,不影响el-table原功能 */
.el-table .el-table__body-wrapper table thead {
  display: none;
}
.el-table__footer-wrapper {
  display: none !important;
}
/* 在打印的时候隐藏el-table的表头,开放咱们dom操作添加的节点 */
@media print {
  .el-table {
    max-height: auto !important;
  }
  .el-table .el-table__header-wrapper {
    display: none;
  }
  .el-table .el-table__body-wrapper table thead {
    display: table-header-group;
  }
}

相关文章

网友评论

      本文标题:打印el-table表格

      本文链接:https://www.haomeiwen.com/subject/tgonvdtx.html