react 经过 xlsx导入excel数据

import React, { Component } from 'react';react

import { Button, Icon, message } from 'antd';json

import * as XLSX from 'xlsx';antd

class Excel extends Component {this

onImportExcel = file => {spa

// 获取上传的文件对象

const { files } = file.target;

// 经过FileReader对象读取文件

const fileReader = new FileReader();

fileReader.onload = event => {

  try {

    const { result } = event.target;

    // 以二进制流方式读取获得整份excel表格对象

    const workbook = XLSX.read(result, { type: 'binary' });

    // 存储获取到的数据

    let data = [];

    // 遍历每张工做表进行读取(这里默认只读取第一张表)

    for (const sheet in workbook.Sheets) {

      // esline-disable-next-line

      if (workbook.Sheets.hasOwnProperty(sheet)) {

        // 利用 sheet_to_json 方法将 excel 转成 json 数据

        data = data.concat(XLSX.utils.sheet_to_json(workbook.Sheets[sheet]));

        // break; // 若是只取第一张表,就取消注释这行

      }

    }

    // 最终获取到而且格式化后的 json 数据

    message.success('上传成功!')

    console.log(data);

  } catch (e) {

    // 这里能够抛出文件类型错误不正确的相关提示

    message.error('文件类型不正确!');

  }

};

// 以二进制方式打开文件

fileReader.readAsBinaryString(files[0]);

}excel

render() {

    return (

      <div>

        <Button >

          <Icon type='upload' />

          <input className={styles['file-uploader']} type='file' accept='.xlsx, .xls' onChange={this.onImportExcel} />

          <span className={styles['upload-text']}>上传文件</span>

        </Button>

        <p className={styles['upload-tip']}>支持 .xlsx、.xls 格式的文件</p>

      </div >

    );

  }

}code

export default Excel;对象

模版

clipboard.png

相关文章
相关标签/搜索