Excel 组件
excel 导入导出操作
项目中使用到的是 XLSX,具体文档可以参考XLSX 文档
Import
Usage
<template> <ImpExcel @success="loadDataSuccess"> <a-button class="m-3">导入Excel</a-button> </ImpExcel></template><script lang="ts"> import { defineComponent, ref } from 'vue'; import { ImpExcel, ExcelData } from '/@/components/Excel'; export default defineComponent({ components: { ImpExcel }, setup() { function loadDataSuccess(excelDataList: ExcelData[]) { tableListRef.value = []; console.log(excelDataList); for (const excelData of excelDataList) { const { header, results, meta: { sheetName }, } = excelData; const columns: BasicColumn[] = []; for (const title of header) { columns.push({ title, dataIndex: title }); } tableListRef.value.push({ title: sheetName, dataSource: results, columns }); } } return { loadDataSuccess, }; }, });</script>Events
| 事件 | 回调参数 | 说明 |
|---|---|---|
| success | (res:ExcelData)=>void | 导入成功回调 |
| error | ()=>void | 导出错误 |
ExcelData
| 属性 | 类型 | 默认值 | 说明 |
|---|---|---|---|
| header: | string[]; | table 表头 | |
| results: | T[]; | table 数据 | |
| meta: | { sheetName: string }; | table title |
Export
具体详情可以参考完整版示例
import { jsonToSheetXlsx, aoaToSheetXlsx } from '/@/components/Excel';数组格式数据导出
import { aoaToSheetXlsx } from '/@/components/Excel';// 保证data顺序与header一致aoaToSheetXlsx({ data: [], header: [], filename: '二维数组方式导出excel.xlsx',});自定义导出格式
import { jsonToSheetXlsx } from '/@/components/Excel';
jsonToSheetXlsx({ data, filename, write2excelOpts: { // 可以是 xlsx/html/csv/txt bookType, },});json 格式导出
import { jsonToSheetXlsx } from '/@/components/Excel';
jsonToSheetXlsx({ data, filename: '使用key作为默认头部.xlsx',});
jsonToSheetXlsx({ data, header: { id: 'ID', name: '姓名', age: '年龄', no: '编号', address: '地址', beginTime: '开始时间', endTime: '结束时间', }, filename: '自定义头部.xlsx', json2sheetOpts: { // 指定顺序 header: ['name', 'id'], },});Function
| 方法 | 回调参数 | 返回值 | 说明 |
|---|---|---|---|
| jsonToSheetXlsx | Function(JsonToSheet) | json 格式数据,导出到 excel | |
| aoaToSheetXlsx | Function(AoAToSheet) | 数组格式,导出到 excel |
JsonToSheet Type
| 属性 | 类型 | 默认值 | 说明 |
|---|---|---|---|
| data | T[] | JSON 对象数组 | |
| header?: | T; | 表头未设置则取 JSON 对象的 key 作为 header | |
| filename?: | string | excel-list.xlsx | 导出的文件名 |
| json2sheetOpts?: | JSON2SheetOpts | 调用 XLSX.utils.json_to_sheet 的可选参数 | |
| write2excelOpts?: | WritingOptions | { bookType: 'xlsx' } | 调用 XLSX.writeFile 的可选参数,具体参 XLSX 文档 |
AoAToSheet Type
| 属性 | 类型 | 默认值 | 说明 |
|---|---|---|---|
| data | T[][]; | 二维数组 | |
| header?: | T; | 表头 ;未设置则没有表头 | |
| filename?: | string; | excel-list.xlsx | 导出的文件名 |
| write2excelOpts?: | WritingOptions; | { bookType: 'xlsx' } | 调用 XLSX.writeFile 的可选参数 |