index.js 1.3 KB
Newer Older
涂茜's avatar
涂茜 committed
1
import React from 'react';
李纪文's avatar
李纪文 committed
2 3 4 5 6 7
import PropTypes from 'prop-types';
import ExportJsonExcel from 'js-export-excel';
import JSZip from 'jszip';

// 导出Excel表格
const ExportExcel = (props) => {
李纪文's avatar
李纪文 committed
8
  let option = {};
李纪文's avatar
李纪文 committed
9 10 11
  option.fileName = props.name;
  option.datas = props.content;

李纪文's avatar
李纪文 committed
12
  let toExcel = new ExportJsonExcel(option); //new
李纪文's avatar
李纪文 committed
13 14 15 16 17 18 19 20 21 22 23 24 25 26
  toExcel.saveExcel();
};
ExportExcel.defaultProps = {
  name: 'excel',
  content: [],
};

ExportExcel.propTypes = {
  name: PropTypes.string, // 下载文件名称
  content: PropTypes.array, // 下载文件内容
};

// 导出压缩Excel表格
const ExportExcelZip = (props) => {
李纪文's avatar
李纪文 committed
27
  let option = {};
李纪文's avatar
李纪文 committed
28 29 30 31 32
  option.fileName = props.name;
  option.saveAsBlob = true;

  option.datas = props.content;

李纪文's avatar
李纪文 committed
33
  let toExcel = new ExportJsonExcel(option); //new
李纪文's avatar
李纪文 committed
34 35 36
  let file = toExcel.saveExcel();

  // 压缩文件
李纪文's avatar
李纪文 committed
37
  let zip = new JSZip();
李纪文's avatar
李纪文 committed
38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57

  // 多个excel 依次加入(fileName不能相同)
  zip.file(file.name, file);

  zip.generateAsync({ type: 'blob' }).then(function (content) {
    // see FileSaver.js
    saveAs(content, `${props.name}.zip`); // 下载文件
  });
};
ExportExcelZip.defaultProps = {
  name: 'excel',
  content: [],
};

ExportExcelZip.propTypes = {
  name: PropTypes.string, // 下载文件名称
  content: PropTypes.array, // 下载文件内容
};

export { ExportExcel, ExportExcelZip };