vue实现导出 打印
Vue 实现导出功能
在Vue中实现导出功能通常需要结合前端库或后端支持,以下是几种常见实现方式:
使用xlsx库导出Excel 安装xlsx库:
npm install xlsx
代码示例:
import * as XLSX from 'xlsx';
export default {
methods: {
exportToExcel() {
const data = [
['姓名', '年龄', '性别'],
['张三', 25, '男'],
['李四', 30, '女']
];
const ws = XLSX.utils.aoa_to_sheet(data);
const wb = XLSX.utils.book_new();
XLSX.utils.book_append_sheet(wb, ws, "Sheet1");
XLSX.writeFile(wb, "导出数据.xlsx");
}
}
}
使用FileSaver.js导出文件 安装FileSaver:
npm install file-saver
代码示例:

import { saveAs } from 'file-saver';
export default {
methods: {
exportTextFile() {
const content = "这是要导出的文本内容";
const blob = new Blob([content], {type: "text/plain;charset=utf-8"});
saveAs(blob, "导出文件.txt");
}
}
}
Vue 实现打印功能
Vue中实现打印功能可以通过原生JavaScript或第三方库实现:
原生JavaScript打印
export default {
methods: {
printContent() {
const printContent = document.getElementById('print-area').innerHTML;
const originalContent = document.body.innerHTML;
document.body.innerHTML = printContent;
window.print();
document.body.innerHTML = originalContent;
}
}
}
使用vue-print-nb插件 安装插件:

npm install vue-print-nb
全局注册:
import Print from 'vue-print-nb'
Vue.use(Print);
模板中使用:
<template>
<div id="print-area">
<!-- 要打印的内容 -->
</div>
<button v-print="'#print-area'">打印</button>
</template>
打印样式优化 在CSS中添加打印专用样式:
@media print {
body * {
visibility: hidden;
}
#print-area, #print-area * {
visibility: visible;
}
#print-area {
position: absolute;
left: 0;
top: 0;
}
}
结合导出和打印功能
可以创建一个通用组件同时支持导出和打印:
<template>
<div>
<div id="print-export-area">
<!-- 要打印和导出的内容 -->
</div>
<button @click="handleExport">导出</button>
<button @click="handlePrint">打印</button>
</div>
</template>
<script>
import * as XLSX from 'xlsx';
import { saveAs } from 'file-saver';
export default {
methods: {
handleExport() {
// 导出逻辑
},
handlePrint() {
// 打印逻辑
}
}
}
</script>
这些方法可以根据具体需求进行调整和组合,满足不同的业务场景需求。






