Web端用到的Excel插件

把数组转换成Excel表格

js-export-excel

  • 安装依赖
npm install js-export-excel

yarn add js-export-excel
  • 在使用页面引入依赖
const ExportJsonExcel = require('js-export-excel');

import ExportJsonExcel from 'js-export-excel';
  • 调用
 /**
    |--------------------------------------------------
    | @dataSource 
    |   下载的全部数据
    | @TableObject
    |   所要下载的表格的表头和值
    |--------------------------------------------------
    */
const downloadExcel = ({ dataSource, TableObject }) => {
      const option = {};
      let dataTable = [];
      const KEYS = Object.keys(TableObject);
      // eslint-disable-next-line compat/compat
      const Values = Object.values(TableObject);
      if (dataSource) {
        dataSource.forEach(item => {
          const obj = {};
          KEYS.forEach(key => {
            obj[key] = item[key] || ''
          })
          dataTable = [...dataTable, obj];
        })
      }
      // fileName 表格名称
      option.fileName = ExportUserObj[ExType].title;
      option.datas = [
        {
          sheetData: dataTable,      // 筛选的符合的表格数据
          sheetName: 'sheet',        // sheet
          sheetFilter: KEYS,         // 需要筛选的字段
          sheetHeader: Values,       // 表头
        }
      ];

      const toExcel = new ExportJsonExcel(option);
      toExcel.saveExcel();
    }
// 调用
const TableObject = {
  name: '名字',
  age: '年龄'
}
downloadExcel({ dataSource, TableObject });

上传Excel时,获取Excel的内容

xlsx

  • 安装依赖
npm install xlsx

yarn add xlsx
  • 在使用页面引入依赖
import * as XLSX from 'xlsx';
  • 调用
// js
const onImportExcel = files => {


    let data = [];// 存储获取到的数据

    // 通过FileReader对象读取文件

    const fileReader = new FileReader();

    fileReader.readAsBinaryString(files);
    // 二进制

    fileReader.onload = event => {

      try {

        const { result } = event.target;

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

        const workbook = XLSX.read(result, { type: 'binary' });
        // 遍历每张工作表进行读取(这里默认只读取第一张表)

        // eslint-disable-next-line no-restricted-syntax
        for (const sheet in workbook.Sheets) {
          // eslint-disable-next-line no-prototype-builtins
          if (workbook.Sheets.hasOwnProperty(sheet)) {
            data = data.concat(XLSX.utils.sheet_to_json(workbook.Sheets[sheet]))
          }
        }
       console.log(data)     // 这里获取的就是从Excel中得到的全部数据(Array)
      } catch (e) {

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

        message.warning('文件类型不正确');
        return false

      }

    };

  }


  // html

  <Upload
    {...props}
    beforeUpload={e => onImportExcel(e)}
    onDownload={e => handleDownload(e)}
  >
    <Button disabled={Boolean(file)}>
      <Icon type="upload" /> 上传文件
    </Button>
  </Upload>
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值