当前位置:首页 > 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

全局注册组件:

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 防止界面卡顿:

// 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 }  // 第三列宽度
]

导出多个工作表

创建多个工作表:

vue实现网页导出excel

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 的实现原理 Vue 是一个渐进式 JavaScript 框架,其核心实现主要包括响应式系统、虚拟 DOM、模板编译和组件化机制。以下是 Vue 实现的主要技术细节。 响应式系统 Vue 的响…

vue实现异步

vue实现异步

Vue 实现异步操作的常见方法 Vue 提供了多种方式来处理异步操作,包括数据获取、事件处理等场景。 使用 async/await 在 Vue 方法中可以直接使用 async/await 语法处理异…

vue实现反转

vue实现反转

实现数组反转 在Vue中反转数组可以通过多种方式实现,以下是几种常见方法: 使用JavaScript原生reverse方法 // 在methods中定义方法 methods: { revers…

vue实现屏幕撑满

vue实现屏幕撑满

使用 CSS 设置全屏 在 Vue 中实现屏幕撑满可以通过 CSS 样式来控制。确保根元素和子元素的高度设置为 100%。 <template> <div class="ful…

验证码实现vue

验证码实现vue

验证码实现(Vue) 在Vue中实现验证码功能通常需要结合前端生成和验证逻辑,以及可能的后端校验。以下是两种常见实现方式: 基于Canvas的图形验证码 通过Canvas动态生成包含随机字符…

vue实现anchor

vue实现anchor

Vue 实现锚点功能 在 Vue 中实现锚点功能可以通过多种方式完成,以下是几种常见的方法: 使用 HTML 原生锚点 在 Vue 模板中直接使用 HTML 的 id 和 href 属性实现锚点跳…