当前位置:首页 > VUE

vue实现表格打印

2026-01-19 14:22:27VUE

Vue 实现表格打印的方法

使用 window.print() 方法

在 Vue 中可以通过调用浏览器的 window.print() 方法实现打印功能。创建一个打印按钮,点击时触发打印事件。

<template>
  <div>
    <button @click="printTable">打印表格</button>
    <table ref="printTableRef">
      <!-- 表格内容 -->
    </table>
  </div>
</template>

<script>
export default {
  methods: {
    printTable() {
      window.print();
    }
  }
};
</script>

<style>
@media print {
  body * {
    visibility: hidden;
  }
  table, table * {
    visibility: visible;
  }
  table {
    position: absolute;
    left: 0;
    top: 0;
  }
}
</style>

使用第三方库 vue-print-nb

vue-print-nb 是一个专门为 Vue 设计的打印插件,使用起来更加方便。

安装插件:

npm install vue-print-nb --save

在 Vue 项目中使用:

import Print from 'vue-print-nb'
Vue.use(Print);

模板中使用:

<template>
  <div>
    <button v-print="printObj">打印表格</button>
    <table id="printTable">
      <!-- 表格内容 -->
    </table>
  </div>
</template>

<script>
export default {
  data() {
    return {
      printObj: {
        id: 'printTable',
        popTitle: '表格打印'
      }
    }
  }
};
</script>

自定义打印样式

通过 CSS 的 @media print 可以自定义打印时的样式,隐藏不需要打印的元素。

@media print {
  .no-print {
    display: none;
  }
  .print-table {
    width: 100%;
    border-collapse: collapse;
  }
  .print-table th, .print-table td {
    border: 1px solid #000;
    padding: 8px;
  }
}

使用 iframe 打印

创建一个隐藏的 iframe,将表格内容复制到 iframe 中,然后打印 iframe 的内容。

methods: {
  printUsingIframe() {
    const content = this.$refs.printTable.innerHTML;
    const iframe = document.createElement('iframe');
    iframe.style.display = 'none';
    document.body.appendChild(iframe);
    const frameDoc = iframe.contentDocument || iframe.contentWindow.document;
    frameDoc.open();
    frameDoc.write(`
      <!DOCTYPE html>
      <html>
        <head>
          <title>打印表格</title>
          <style>
            table {
              width: 100%;
              border-collapse: collapse;
            }
            th, td {
              border: 1px solid #000;
              padding: 8px;
            }
          </style>
        </head>
        <body>
          ${content}
        </body>
      </html>
    `);
    frameDoc.close();
    iframe.contentWindow.focus();
    iframe.contentWindow.print();
    document.body.removeChild(iframe);
  }
}

打印特定区域

通过 CSS 控制只打印特定的区域,隐藏其他内容。

vue实现表格打印

@media print {
  body * {
    visibility: hidden;
  }
  .print-area, .print-area * {
    visibility: visible;
  }
  .print-area {
    position: absolute;
    left: 0;
    top: 0;
  }
}
<div class="print-area">
  <!-- 需要打印的表格内容 -->
</div>

标签: 表格vue
分享给朋友:

相关文章

vue聊天实现

vue聊天实现

Vue 聊天应用实现步骤 创建 Vue 项目 使用 Vue CLI 或 Vite 初始化项目,安装必要依赖(如 Vue 3、Element UI 或 Vuetify 用于 UI 组件)。 npm c…

vue实现键盘

vue实现键盘

Vue 实现键盘功能 在Vue中实现键盘功能通常涉及监听键盘事件、处理输入以及渲染虚拟键盘界面。以下是几种常见的实现方式: 监听键盘事件 通过@keydown或@keyup指令监听键盘事件,适用于需…

vue实现erp

vue实现erp

Vue实现ERP系统的关键步骤 技术选型与架构设计 采用Vue 3 + TypeScript构建前端,搭配Pinia状态管理,Element Plus或Ant Design Vue作为UI框架。后端可…

vue实现粘贴

vue实现粘贴

Vue 实现粘贴功能的方法 在 Vue 中实现粘贴功能通常涉及监听粘贴事件并处理剪贴板数据。以下是几种常见的实现方式: 监听原生粘贴事件 通过 @paste 指令或原生 addEventListen…

实现vue cli

实现vue cli

安装 Vue CLI 确保系统中已安装 Node.js(版本建议 12.x 或更高)。通过 npm 全局安装 Vue CLI: npm install -g @vue/cli 安装完成后验证版本:…

vue登录实现

vue登录实现

Vue 登录实现 实现登录功能通常需要前端与后端配合,Vue 作为前端框架,主要负责表单处理、请求发送和状态管理。以下是常见的实现方式: 表单设计与数据绑定 使用 Vue 的 v-model 实现表…