当前位置: 首页 > article >正文

前端将echarts的图和element表格 一起导出到excel中

一:安装依赖

npm install  xlsx file-saver  --save

二:在组件中导入

import ExcelJS from "exceljs";
import FileSaver from 'file-saver'
import * as XLSX from 'xlsx/xlsx.mjs'

三:给对应表格添加id,绑定方法

<ECharts ref="echartRef" />
<el-button @click="exportExcel">导出 Excel</el-button>

四:只导出echarts

// dom: echartRef.value (对应要导出的echarts图表)
// fileName:'test.xlsx' (文件名)
const exportExcel = (dom, fileName) => {
  const workbook = new ExcelJS.Workbook(); // 创建工作簿
  const worksheet = workbook.addWorksheet('Sheet1'); // 添加工作表
  const base64Image = dom.getDataURL({
    pixelRatio: 2, // 导出图片的分辨率比例,默认为1,即图片的分辨率为屏幕分辨率的一倍
    backgroundColor: '#fff' // 导出图片的背景色
  })
  let image= workbook.addImage({ // 添加图片
    base64: base64Image, // 图片的base64编码
    extension: 'png'  // 图片的扩展名
  });
  worksheet.addImage(image, 'A1:J20'); // 将图片添加到工作表中
  workbook.xlsx.writeBuffer().then(function (buffer) { // 生成excel文件的二进制数据
    FileSaver.saveAs(new Blob([buffer], {  // 生成Blob对象
      type: 'application/octet-stream'  // 指定文件的MIME类型
    }), fileName);  // 指定文件名
  });
}

五:导出echarts+表格

// dom: echartRef.value (对应要导出的echarts图表)
// tableColunms: 表头
// tableRows: 行内数据
// fileName:'test.xlsx' (文件名)

const exportExcel = (dom, tableColunms, tableRows, fileName) => {
  const workbook = new ExcelJS.Workbook(); // 创建工作簿
  const worksheet = workbook.addWorksheet('Sheet1'); // 添加工作表

  const base64Image = dom.getDataURL({
    pixelRatio: 2, // 导出图片的分辨率比例,默认为1,即图片的分辨率为屏幕分辨率的一倍
    backgroundColor: '#fff' // 导出图片的背景色
  })
  let image= workbook.addImage({ // 添加图片
    base64: base64Image, // 图片的base64编码
    extension: 'png'  // 图片的扩展名
  });

  // 将图片添加到工作表中
  // worksheet.addImage(image, 'A1:J20');
  // 添加到sheet2中
  // workbook.addWorksheet('Sheet2').addImage(image, 'A1:J20')

  // 将图片添加到工作表中
  worksheet.addImage(image, {
    // 指定在哪个单元格插入
    tl: { col: 0, row: tableRows.length + 3 },
    // 指定图像大小
    ext: { width: 1000, height: 400 }
  });

  // 表头
  worksheet.columns = tableColunms.map((v: any) => {
    return {
      header: v.label,
      key: v.prop,
      width: 15,
    }
  })
  // 表格数据
  tableRows.forEach((row: any, index: any) => {
    row.sort = index + 1
    worksheet.addRow(row)
  })

  workbook.xlsx.writeBuffer().then(function (buffer) { // 生成excel文件的二进制数据
    FileSaver.saveAs(new Blob([buffer], {  // 生成Blob对象
      type: 'application/octet-stream'  // 指定文件的MIME类型
    }), fileName);  // 指定文件名
  });

}

表格的测试数据

// 添加表头列数据
worksheet.columns = [
  {label: "姓名", prop: "name", width: 20},
  {label: "年龄", prop: "age", width: 10},
  {label: "身高", prop: "height", width: 10},
  {label: "体重", prop: "weight", width: 10},
];
// 添加内容列数据
worksheet.addRow({sort: 1, name: "张三", age: 18, height: 175, weight: 74});
worksheet.addRow({sort: 2, name: "李四", age: 22, height: 177, weight: 88});
worksheet.addRow({sort: 3, name: "王五", age: 53, height: 155, weight: 62});

六:实现效果
在这里插入图片描述

前端element表格导出excel
vue中将echarts的图导出到excel表格中(1)
VUE前端使用exceljs导出table以及echart图 生成excel文件
vue中xlsx导出多个sheet页(多个表格多个sheet页)


http://www.kler.cn/a/419264.html

相关文章:

  • Spring boot之BeanDefinition介绍
  • 【Android】组件化嘻嘻嘻gradle耶耶耶
  • mapstruct DTO转换使用
  • 深入解析 MySQL 启动方式:`systemctl` 与 `mysqld` 的对比与应用
  • 基于Matlab实现三维点坐标生成点云(源码+数据)
  • 泷羽sec学习打卡-shell命令5
  • el-tree的使用及控制全选、反选、获取选中
  • 韩顺平 一周学会Linux | Linux 实操篇-组管理和权限管理
  • 根据后台数据结构,构建搜索目录树
  • openssl 基本命令使用方法
  • Oracle之提高PLSQL的执行性能
  • 三十二:网络爬虫的工作原理与应对方式
  • ASP网络安全讲述
  • 易速鲜花聊天客服机器人的开发(上)
  • 一体化数据安全平台uDSP 入选【年度创新安全产品 TOP10】榜单
  • Ubuntu 22.04 LTS vs Ubuntu 24.04 LTS:深度剖析,哪个版本更胜一筹?
  • ORB-SLAM2源码学习:LocalMapping.cc: LocalMapping::MapPointCulling剔除不合格的地图点
  • 使用 Docker 容器创建一个 Web 服务器:从入门到实践
  • 怎么选拔人才
  • MySQL--SQL优化
  • 私有库gitea安装
  • DRM(数字权限管理技术)防截屏录屏----ffmpeg安装
  • 图片预处理技术介绍4——降噪
  • VM+Ubuntu18.04+XSHELL+VSCode环境配置
  • 探索Scala:文本分析与文件操作的艺术
  • Ubuntu 22.04 离线安装软件包