exportexcel.js 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. /**
  2. * @Description: 定出Excel文件方法封装处理
  3. * @Author: Rockery
  4. * @Date: 2022-03-28 09:19:59
  5. * @LastEditors: Rockery
  6. * @LastEditTime: 2022-04-18 11:16:33
  7. * @FilePath: \airport_web\src\utils\exportexcel.js
  8. * @Copyright: Copyright (c) 2016~2022 by Rockery(1113269755@qq.com), All Rights Reserved.
  9. */
  10. import { parseTime } from '@/utils/ruoyi';
  11. import { Message } from 'element-ui';
  12. /**
  13. * 导出Excel文件
  14. * @param {*} data 文件数据流
  15. * @param {String} filePrefix 文件前缀名
  16. * @param {String} fileSuffix 文件后缀名
  17. */
  18. export function exportExcel(data, filePrefix, fileSuffix) {
  19. // 判断文件前缀名是否存在,不存在默认'EXPORTEXCEL'
  20. filePrefix = filePrefix ?? 'EXPORTEXCEL';
  21. // 判断文件后缀名是否存在,不存在默认'.xls'
  22. fileSuffix = fileSuffix ?? '.xls';
  23. // 处理文件数据流
  24. const contentByExportExcel = data;
  25. const blobByExportExcel = new Blob([contentByExportExcel], {
  26. type: 'application/vnd.ms-excel;charset=utf-8'
  27. });
  28. // 组装文件名称
  29. const filenameByExportExcel = `${filePrefix}_${parseTime(
  30. new Date(),
  31. '{y}-{m}-{d}'
  32. )}_${new Date().getTime()}${fileSuffix}`;
  33. // 执行文件下载操作
  34. if ('download' in document.createElement('a')) {
  35. const elink = document.createElement('a');
  36. elink.download = filenameByExportExcel;
  37. elink.style.display = 'none';
  38. elink.href = URL.createObjectURL(blobByExportExcel);
  39. document.body.appendChild(elink);
  40. elink.click();
  41. URL.revokeObjectURL(elink.href);
  42. document.body.removeChild(elink);
  43. Message({
  44. message: '导出Excel成功!',
  45. type: 'success',
  46. showClose: true,
  47. center: true
  48. });
  49. } else {
  50. navigator.msSaveBlob(blobByExportExcel, filenameByExportExcel);
  51. Message({
  52. message: '导出Excel成功!',
  53. type: 'success',
  54. showClose: true,
  55. center: true
  56. });
  57. }
  58. }