vue echarts 图表数据导出excel

注意:该文章基于vue-cli4.5,vue-cli3以上都可以啦。
首先是依赖的准备:
jquery与jquery-table2excel-1.1.2

引入jquery

  • 安装jquery
npm install jquery --save
  • 观察package.json中的dependencies是否有jquery

在这里插入图片描述

  • .eslintrc.js 中,添加jquery:true
    在这里插入图片描述
  • vue.config.js 是这么写的,因为我是新项目,还没有这个文件,所以就是引入jquery相关的配置了:
const webpack = require("webpack");
module.exports = {
  configureWebpack: {
    plugins: [
      new webpack.ProvidePlugin({
        $: "jquery",
        jQuery: "jquery",
        "windows.jQuery": "jquery",
      }),
    ],
  },
};

至此,jquery引入vue项目完成。

引入jquery-table2excel

这个库是将表格转换成excel进行输出,所以前提是得把图表数据转换成表格。
github下载地址:我用的是1.1.2
下载解压之后,将文件夹丢到scr目录下。
在main.js中引入即可:

import "./jquery-table2excel-1.1.2/src/jquery.table2excel.js";

关于echarts

可以会出现引入echarts,但用不了echarts相应的方法的情况:
如果是5.0以上的版本,大多搜到的都是将版本,实际上改一下引入写法就好了:
import * as echarts from 'echarts'

完整页面代码

<template>
  <div id="pieChart" style="width: 500px; height: 400px"></div>
</template>
<script>
import echarts from "echarts";

export default {
  name: "",
  data() {
    return {
      opinion: ["o1", "o2", "o3", "o4", "o5"],
      opinionData: [
        { value: 235, name: "o1" },
        { value: 340, name: "o2" },
        { value: 124, name: "o3" },
        { value: 35, name: "o4" },
        { value: 548, name: "o5" },
      ],
    };
  },
  methods: {
    drawPie(id) {
      this.charts = echarts.init(document.getElementById(id));
      this.charts.setOption({
        tooltip: {
          trigger: "item",
          formatter: "{a}<br/>{b}:{c} ({d}%)",
        },
        legend: {
          orient: "vertical",
          x: "left",
          data: this.opinion,
        },
        series: [
          {
            name: "访问来源",
            type: "pie",
            radius: ["50%", "70%"],
            avoidLabelOverlap: false,
            label: {
              normal: {
                show: false,
                position: "center",
              },
              emphasis: {
                show: true,
                textStyle: {
                  fontSize: "30",
                  fontWeight: "blod",
                },
              },
            },
            labelLine: {
              normal: {
                show: false,
              },
            },
            data: this.opinionData,
          },
        ],
        toolbox: {
          feature: {
            dataView: {
              show: true,
              title: "数据视图",
              lang: ["数据视图", "关闭", "导出Excel"],
              contentToOption: function () {
              //这里的#tableExcel ID 指的是table的ID 而非echarts图表
                $("#tableExcel").table2excel({
                  filename: "测试.xls",
                  // 文件名称
                  name: "Excel Document Name.xls",
                  exclude_img: true,
                  exclude_links: true,
                  exclude_inputs: true,
                });
              },
              // 将数据视图展示为table
              optionToContent: function (opt) {
                var seriesData = opt.series[0].data;
                var tdHeads =
                  '<td  style="padding: 0 10px">名称</td>' +
                  '<td  style="padding: 0 10px">数值</td>';
                var table =
                  '<table id="tableExcel" border="1" class="table-bordered table-striped" style="width:100%;text-align:center" ><tbody><tr>' +
                  tdHeads +
                  " </tr>";
                seriesData.forEach((obj) => {
                  table +=
                    '<tr><td style="padding: 0 10px">' +
                    obj.name +
                    "</td>" +
                    "<td>" +
                    obj.value +
                    "</td></td>" +
                    "</td>";
                });
                table += "</tbody></table>";
                return table;
              },
            },
          },
        },
      });
    },
  },
  mounted() {
    this.drawPie("pieChart");
  },
};
</script>

注意:图表是饼图,其它的图表可以修改 optionToContent 方法进行适配。

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
要在Vue 2中导出数据Excel,你可以使用以下步骤: 1. 首先,安装 `xlsx` 和 `file-saver` 库。你可以使用 npm 或者 yarn 来安装: ```bash npm install xlsx file-saver ``` 2. 在需要导出Excel的组件中,引入这两个库: ```javascript import XLSX from 'xlsx' import { saveAs } from 'file-saver' ``` 3. 创建一个方法来处理导出Excel的逻辑,例如: ```javascript export default { methods: { exportToExcel() { // 创建一个空的工作簿 const wb = XLSX.utils.book_new() // 数据格式化为数组形式 const data = [ ['姓名', '年龄'], ['张三', 25], ['李四', 30], ['王五', 28] ] // 创建一个工作表 const ws = XLSX.utils.aoa_to_sheet(data) // 将工作表添加到工作簿中 XLSX.utils.book_append_sheet(wb, ws, 'Sheet1') // 将工作簿转换为二进制对象 const wbout = XLSX.write(wb, { type: 'array', bookType: 'xlsx' }) // 使用 file-saver 库保存文件 saveAs(new Blob([wbout], { type: 'application/octet-stream' }), 'example.xlsx') } } } ``` 4. 在模板中添加一个按钮或者其他触发导出操作的元素,并绑定 `exportToExcel` 方法: ```html <template> <div> <button @click="exportToExcel">导出Excel</button> </div> </template> ``` 这样,当用户点击按钮时,数据将被导出为一个名为 `example.xlsx` 的Excel文件。 请注意,这只是一个简单的示例,你可以根据自己的需求进行修改和扩展。你也可以使用其他库来实现相同的导出功能,这只是其中一种方法。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值