当前位置:首页 > 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中实现前端分页通常涉及数据分割和页面控制逻辑。以下是常见的实现方式: 使用计算属性分页 通过计算属性对数据进行切片处理: computed: { paginate…

vue实现颜色

vue实现颜色

Vue 实现颜色的方法 在 Vue 中实现颜色管理可以通过多种方式,以下是一些常见的方法: 使用 CSS 变量动态绑定颜色 在 Vue 组件的样式中定义 CSS 变量,并通过 Vue 的数据绑定动…

vue实现长按

vue实现长按

Vue 实现长按功能的方法 在 Vue 中实现长按功能可以通过原生事件监听或自定义指令完成。以下是几种常见实现方式: 使用原生事件监听 通过 @mousedown 和 @mouseup 或 @t…

vue 实现href

vue 实现href

Vue 实现 href 的方法 在 Vue 中实现 href 功能可以通过多种方式,具体取决于需求场景。以下是几种常见的方法: 使用 <a> 标签 直接使用 HTML 的 <a&…

vue实现导出

vue实现导出

Vue 实现导出功能的方法 在 Vue 项目中实现导出功能通常涉及将数据导出为 Excel、CSV 或其他格式。以下是几种常见的实现方式: 使用 xlsx 库导出 Excel 安装 xlsx 库:…

vue 实现excel

vue 实现excel

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