vue实现导出表格
Vue 实现导出表格的方法
使用 xlsx 库导出 Excel
安装 xlsx 库
npm install xlsx
在 Vue 组件中引入 xlsx
import * as XLSX from 'xlsx';
创建导出方法
exportToExcel() {
const table = document.getElementById('export-table');
const workbook = XLSX.utils.table_to_book(table);
XLSX.writeFile(workbook, 'table.xlsx');
}
模板中使用

<button @click="exportToExcel">导出Excel</button>
<table id="export-table">
<!-- 表格内容 -->
</table>
使用 html2canvas 和 jsPDF 导出 PDF
安装依赖
npm install html2canvas jspdf
引入库
import html2canvas from 'html2canvas';
import jsPDF from 'jspdf';
创建导出方法

exportToPDF() {
const element = document.getElementById('export-table');
html2canvas(element).then(canvas => {
const imgData = canvas.toDataURL('image/png');
const pdf = new jsPDF();
pdf.addImage(imgData, 'PNG', 0, 0);
pdf.save('table.pdf');
});
}
使用 CSV 格式导出
创建 CSV 导出方法
exportToCSV() {
let csv = '';
const rows = document.querySelectorAll('#export-table tr');
rows.forEach(row => {
const cols = row.querySelectorAll('td, th');
const rowData = Array.from(cols).map(col => col.innerText);
csv += rowData.join(',') + '\r\n';
});
const link = document.createElement('a');
link.href = 'data:text/csv;charset=utf-8,' + encodeURI(csv);
link.download = 'table.csv';
link.click();
}
使用第三方组件库
对于 Element UI 用户
import { exportExcel } from '@/utils/exportExcel'; // 自定义封装方法
exportTable() {
exportExcel(this.tableData, '导出文件名');
}
对于 Ant Design Vue 用户
import { exportCsv } from 'ant-design-vue/es/_util/exportCsv';
exportData() {
exportCsv(this.columns, this.dataSource, '导出文件');
}
注意事项
- 确保表格有唯一的 ID 用于 DOM 查询
- 处理大量数据时考虑分页或分批导出
- 对于复杂表格样式,PDF 导出可能需要额外调整
- 导出的文件名应避免特殊字符
以上方法可以根据具体需求选择使用,xlsx 适用于专业 Excel 导出,CSV 适合简单数据交换,PDF 适合需要保持格式的场景。






