LoginSignup
8
8

More than 3 years have passed since last update.

vue.jsやNuxt.jsでcsvダウンロード機能を実装する方法

Posted at

バックエンド側から取得しておいたデータをフロントの管理画面で表示していて、そのデータをcsvにして吐き出す機能を実装したいときがあります。
こんなときはわざわざバックエンドにまたリクエストかけるのではなく、vue.js上で受け取ったjsonデータをいじってcsvにしたほうが効率的です。

vue.jsやNuxt.jsでcsvダウンロード機能を実装する方法

とりあえずライブラリに頼ります。
https://www.npmjs.com/package/vue-json-to-csv

npm
npm i vue-json-to-csv
yarn
yarn add vue-json-to-csv
vue.js
<template>
  <VueJsonToCsv :json-data="csvData" :csv-title="csvファイルのタイトル" :labels="labels">
    <v-btn @click="download">
      csvダウンロード
    </v-btn>
  </VueJsonToCsv>
</template>

<script>
import Vue from 'vue';
import VueJsonToCsv from "vue-json-to-csv";

export default {
  components: {
    VueJsonToCsv,
  },

  data() {
    return {
      csvData: [],
    //labelsはcsvの各データのラベルを決められます。
      labels: {
        id: { title: "ID" },
        url: { title: "URL" },
        name: { title: "購入者" },
        purchaseDate: { title: "申込購入日" },
      },
    }
  },

  methods: {
    download() {
      // date型とか変換したいときはこのタイミングで変換
      this.jsonData.forEach((data) => {
        this.csvData.push({
          id: data.id,
          url: data.url,
          purchaseDate: data.purchaseDate,
        });
      });
    }
  }
}

たったこれだけです。

こんな感じでaxiosとかで取得したデータを整えてcsvダウンロード可能です。

8
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
8