当前位置:首页 > VUE

vue实现网页导出excel

2026-02-22 12:00:39VUE

使用 xlsx 库实现导出

安装 xlsx 库:

npm install xlsx

在 Vue 组件中引入:

import * as XLSX from 'xlsx'

导出方法示例:

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')
}

使用 vue-json-excel 插件

安装插件:

npm install vue-json-excel

全局注册组件:

vue实现网页导出excel

import JsonExcel from 'vue-json-excel'
Vue.component('downloadExcel', JsonExcel)

模板中使用:

<download-excel
  :data="json_data"
  :fields="json_fields"
  name="文件名.xlsx">
  导出Excel
</download-excel>

数据格式示例:

export default {
  data() {
    return {
      json_fields: {
        '姓名': 'name',
        '年龄': 'age',
        '城市': 'city'
      },
      json_data: [
        {name: '张三', age: 25, city: '北京'},
        {name: '李四', age: 30, city: '上海'}
      ]
    }
  }
}

处理大数据量导出

使用 Web Worker 防止界面卡顿:

vue实现网页导出excel

// worker.js
self.importScripts('https://cdn.jsdelivr.net/npm/xlsx@0.18.5/dist/xlsx.full.min.js')

self.onmessage = function(e) {
  const { data, fileName } = e.data
  const ws = XLSX.utils.json_to_sheet(data)
  const wb = XLSX.utils.book_new()
  XLSX.utils.book_append_sheet(wb, ws, 'Sheet1')
  XLSX.writeFile(wb, fileName)
  self.postMessage('done')
}

主线程调用:

const worker = new Worker('./worker.js')
worker.postMessage({
  data: largeDataArray,
  fileName: '大数据导出.xlsx'
})

自定义样式和格式

设置单元格样式:

const ws = XLSX.utils.json_to_sheet(data)
ws['A1'].s = { font: { bold: true, color: { rgb: 'FF0000' } } }

设置列宽:

ws['!cols'] = [
  { wch: 20 }, // 第一列宽度
  { wch: 10 }, // 第二列宽度
  { wch: 15 }  // 第三列宽度
]

导出多个工作表

创建多个工作表:

const wb = XLSX.utils.book_new()
const ws1 = XLSX.utils.json_to_sheet(data1)
const ws2 = XLSX.utils.json_to_sheet(data2)

XLSX.utils.book_append_sheet(wb, ws1, 'Sheet1')
XLSX.utils.book_append_sheet(wb, ws2, 'Sheet2')
XLSX.writeFile(wb, '多工作表.xlsx')

标签: 网页vue
分享给朋友:

相关文章

vue 实现长列表

vue 实现长列表

Vue 实现长列表的优化方案 虚拟滚动技术 虚拟滚动是处理长列表的高效方式,仅渲染可视区域内的元素。通过计算滚动位置动态加载和卸载DOM节点,大幅减少内存占用和渲染压力。 <template&…

vue实现方法

vue实现方法

Vue 实现方法 Vue 是一种流行的前端框架,用于构建用户界面和单页应用。以下是几种常见的 Vue 实现方法: 创建 Vue 实例 通过 new Vue() 创建一个 Vue 实例,传入配置对象,…

vue实现换肤

vue实现换肤

使用 CSS 变量实现换肤 在 Vue 项目中,可以通过 CSS 变量(Custom Properties)动态切换主题色。CSS 变量可以在运行时修改,适合实现换肤功能。 定义全局 CSS 变量:…

vue实现分栏

vue实现分栏

Vue实现分栏的常见方法 使用CSS Flexbox布局 通过Flexbox可以快速实现分栏效果,适合大多数响应式布局场景 <template> <div class="con…

vue实现刷卡

vue实现刷卡

Vue 实现刷卡效果 在 Vue 中实现刷卡效果可以通过 CSS 动画和 Vue 的过渡系统结合完成。以下是一种常见的实现方式: 基础实现方法 安装 Vue 过渡依赖(如果尚未安装): npm i…

vue实现组件跟随

vue实现组件跟随

实现组件跟随的常见方法 使用CSS定位 通过CSS的position: fixed或position: absolute属性实现组件跟随。需要结合JavaScript计算目标元素的位置。 &…