前端 js 基于react ts的excel文件模板下载 文件导入、导出

基于react ts的excel文件模板下载 文件导入、导出
按钮
{pagePermission?.pageActionModels.find(item => item.name === 'OPP_DOWNLOAD_TEMPLATE') &&
          <Button icon={<CopyOutlined />} onClick={(): void => headerHandBtn('down')}>
            {t('OPP_DOWNLOAD_TEMPLATE')}
          </Button>}
        {pagePermission?.pageActionModels.find(item => item.name === 'OPP_DATAIMPORT') &&
          <Upload {...uploadProps2}>
            <Button icon={<PlusOutlined />} loading={uploading} >
              {t('OPP_DATAIMPORT')}
            </Button>
          </Upload>
        }
        {pagePermission?.pageActionModels.find(item => item.name === 'OPP_DATAEXPORT') &&
          <Button icon={<ExportOutlined />} onClick={(): void => headerHandBtn('export')}>
            {t('OPP_DATAEXPORT')}
          </Button>
        }
模板下载
getOppCsv: async (headers:any) => {
    const res = await axios.get(`${URL}/api/Opportunity/ExecleDnowloadTemplet`, headers);
    console.log(res.data, '下载模板的接口返回值')
   // headers接收一个对象
    return res.data
  },
  // 下载模板的接口返回值: Blob {size: 23220, type: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"}
size: 23220
type: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
__proto__: Blob

在这里插入图片描述

// getCsvFile
 const getCsvFile = async () => {
    const fileName = 'OppTemplate';
    let d = {
      "responseType": "blob"
    }
    let result = await req.getOppCsv(d);
    downLoadCsv(result, fileName)
  }
  // 下载/导出
  const downLoadCsv = (result: any, fileName: any) => {
    let url = window.URL.createObjectURL(new Blob([result]));
    let link = document.createElement('a');
    link.style.display = 'none';
    link.href = url;
    link.setAttribute('download', `${fileName}.xlsx`);
    document.body.appendChild(link);
    link.click();
  }
文件导入
const uploadProps2 = {
    name: 'file',
    accept: '.xlsx',
    onChange(info: UploadChangeParam<UploadFile<any>> ) {},
    beforeUpload: (file: RcFile, fileList: RcFile[]) => {
      setUploading(true);
      req.importOpportunity(file).then(res => {
        console.log(res, '文件导入---');
        if(res.code === 0 && res.msg === 'OK') {
          message.success('success');
        } else {
          message.error('failed');
        }
        setUploading(false);
      });
      return false;
    }
  }
导入接口代码
  // 导入数据
  importOpportunity: async (data: any) => {
    const formData = new FormData();
    formData.append('file', data)
    const res = await axios.post(`${URL}/api/Opportunity/importExecle`, formData, multipartHeader)
    return res.data;
  },
导入接口里用到的参数
const multipartHeader = {
        headers: {
            'Content-Type': 'multipart/form-data'
        }
    }
文件导出
  // 导出数据
  getExportOpp: async (headers:any) => {
    const res = await axios.get(`${URL}/api/Opportunity/ExportOpp`, headers);
    console.log(res);
    return res;
  },
 // 数据导出
  const getExportOpp = async() => {
    setUploading(true);
    let d = {
      "responseType": "blob"
    }
    let result = await req.getExportOpp(d);
    console.log(result);
    if(result.status === 200) {
      setUploading(false);
      message.success('export success');
    } else {
      message.error('export failed');
    }
    const fileName= 'fileName';
    downLoadCsv(result.data, fileName);
  }
 // 下载/导出
  const downLoadCsv = (result: any, fileName: any) => {
    let url = window.URL.createObjectURL(new Blob([result]));
    let link = document.createElement('a');
    link.style.display = 'none';
    link.href = url;
    link.setAttribute('download', `${fileName}.xlsx`);
    document.body.appendChild(link);
    link.click();
  }```

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值