当前位置:首页 > VUE

前端vue实现导入导出

2026-02-22 06:26:09VUE

Vue 实现 Excel 导入功能

使用 xlsx 库解析 Excel 文件 安装依赖包:npm install xlsx

<template>
  <input type="file" @change="handleImport" accept=".xlsx, .xls" />
</template>

<script>
import * as XLSX from 'xlsx';

export default {
  methods: {
    handleImport(e) {
      const files = e.target.files;
      if (files.length === 0) return;

      const file = files[0];
      const reader = new FileReader();

      reader.onload = (e) => {
        const data = new Uint8Array(e.target.result);
        const workbook = XLSX.read(data, { type: 'array' });
        const firstSheet = workbook.Sheets[workbook.SheetNames[0]];
        const jsonData = XLSX.utils.sheet_to_json(firstSheet);

        console.log(jsonData); // 处理导入数据
      };

      reader.readAsArrayBuffer(file);
    }
  }
};
</script>

Vue 实现 Excel 导出功能

使用 xlsxfile-saver 库 安装依赖:npm install xlsx file-saver

import * as XLSX from 'xlsx';
import { saveAs } from 'file-saver';

export default {
  methods: {
    exportToExcel() {
      const data = [
        ['姓名', '年龄', '性别'],
        ['张三', 25, '男'],
        ['李四', 30, '女']
      ];

      const workbook = XLSX.utils.book_new();
      const worksheet = XLSX.utils.aoa_to_sheet(data);
      XLSX.utils.book_append_sheet(workbook, worksheet, 'Sheet1');

      const excelBuffer = XLSX.write(workbook, { 
        bookType: 'xlsx', 
        type: 'array' 
      });

      const blob = new Blob([excelBuffer], { 
        type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' 
      });

      saveAs(blob, '导出数据.xlsx');
    }
  }
};

使用 Element UI 上传组件实现导入

<template>
  <el-upload
    action=""
    :auto-upload="false"
    :on-change="handleImport"
    accept=".xlsx, .xls">
    <el-button type="primary">导入Excel</el-button>
  </el-upload>
</template>

处理复杂数据结构导出

exportComplexData() {
  const headers = ['ID', 'Name', 'Address'];
  const body = this.tableData.map(item => [
    item.id,
    item.name,
    item.address.city + ' ' + item.address.street
  ]);

  const data = [headers, ...body];
  const worksheet = XLSX.utils.aoa_to_sheet(data);
  // 其余导出代码同上
}

注意事项

文件大小限制:大文件导入需要分片处理或使用Web Worker避免界面卡顿

数据类型处理:Excel中的数字和日期需要特殊转换

性能优化:大量数据导出时可考虑分多个Sheet存储

样式处理:如需复杂样式,可考虑使用专业报表工具替代

前端vue实现导入导出

错误处理:添加文件类型校验和解析失败的异常捕获

标签: vue
分享给朋友:

相关文章

vue实现动态

vue实现动态

Vue 实现动态路由的方法 在 Vue 中实现动态路由通常涉及以下几个关键步骤: 使用 Vue Router 的动态路由匹配 通过 Vue Router 的 :param 语法可以实现动态路由匹配。…

vue 实现列表

vue 实现列表

Vue 实现列表的方法 在 Vue 中实现列表通常使用 v-for 指令,结合数组或对象数据渲染动态列表。以下是几种常见的实现方式: 基础列表渲染 使用 v-for 指令遍历数组,渲染列表项。ite…

vue实现拖动

vue实现拖动

Vue实现拖动的常用方法 在Vue中实现拖动功能通常需要结合HTML5的拖放API或第三方库。以下是几种常见实现方式: 使用HTML5原生拖放API HTML5提供了原生拖放API,可以通过drag…

vue 实现excel

vue 实现excel

Vue 实现 Excel 功能 前端导出 Excel 使用 xlsx 库可以轻松实现前端 Excel 导出功能。安装依赖: npm install xlsx 导出 Excel 示例代码: impo…

vue实现Pop

vue实现Pop

Vue 实现 Popover 组件的方法 使用 Vue 内置指令 v-show/v-if 和事件监听 通过 Vue 的指令和事件绑定实现基础的 Popover 功能。定义一个布尔值控制 Popover…

vue删除实现

vue删除实现

Vue 删除功能的实现方法 在 Vue 中实现删除功能通常涉及以下几个步骤: 方法一:使用数组的 splice 方法 通过索引删除数组中的元素,适用于列表渲染的场景。 methods: {…