0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Vue2 × Vuetify でローカルのCSVファイルをテーブル表示してみた

Last updated at Posted at 2023-03-17

はじめに

Vue2とVuetifyでローカルのCSVファイルをテーブルに表示してみました。
実装の流れは以下の通りです。

  1. Vueプロジェクトの作成
  2. papaparseライブラリのインストール
  3. CSVファイルを選択するinput要素と表示するテーブルの作成
  4. CSVファイルを読み込むハンドラーメソッドの作成

開発環境

  • Windows 11
  • Vue CLI 5.0.8
  • Vue 2.7.14
  • npm 6.14.14
  • Node.js 14.17.5

実装

Vueプロジェクトの作成

Vue CLIを使ってVueプロジェクトを作成します。

ターミナル
vue create フォルダ名(任意)

作成したプロジェクトがあるフォルダに移動し、以下のコマンドを実行して、Vuetifyを追加します。

ターミナル
vue add vuetify

途中でプリセットの選択を聞かれるので、Default(recommended)を選択します。

今回は、Vueプロジェクト内のHelloWorld.vueを編集していきます。最初に、デフォルトで生成されるコードを削除し、templateタグとscriptタグのみを残してください。

HelloWorld.vue
<template>
</template>

<script>
</script>

papaparseライブラリのインストール

papaparseは、CSVファイルの解析を簡単に扱えるライブラリです。

まずは、以下のコマンドでpapaparseをインストールします。

ターミナル
npm install papaparse --save

script開始タグの直下でpapaparseをインポートします。

import Papa from 'papaparse'

ファイルを選択するinput要素と表示するテーブルの作成

HelloWorld.vueのtemplateタグを以下のように書き換えます。

input要素のtype属性を"file"にすることで、ファイルをアップロードできるようになります。また、ファイルが選択された際には@changeイベントを介してhandleFileUploadメソッドが呼び出されます。このhandleFileUploadメソッドは後ほど作成します。

v-data-tableタグを使用することで、テーブルを配置できます。:headers属性は、テーブルの列名を定義した配列で、:items属性はテーブルの行データを定義した配列です。これらのプロパティは、scriptタグのdata内で定義します。

HelloWorld.vue
<template>
  <div>
    <input type="file" @change="handleFileUpload" />
    <v-data-table :headers="headers" :items="items" />
  </div>
</template>
<script>
import Papa from 'papaparse'

export default {
  data() {
    return {
      headers: [],
      items: []
    }
  }
}
</script>

CSVファイルを読み込むハンドラーメソッドの作成

次に、handleFileUploadメソッドを作成します。1行目をヘッダーとして使用し、2行目以降をitemsプロパティに入れます。

HelloWorld.vue
<template>
  <div>
    <input type="file" @change="handleFileUpload" />
    <v-data-table :headers="headers" :items="items" />
  </div>
</template>

<script>
import Papa from 'papaparse' 

export default {
  data() {
    return {
      headers: [],
      items: []
    }
  },
  //以下、methodsを追加
  methods: {
    handleFileUpload(event) {
      const file = event.target.files[0]
      Papa.parse(file, {
        header: true,
        complete: (results) => {
          this.headers = Object.keys(results.data[0]).map((key) => ({
            text: key,
            value: key
          }))
          this.items = results.data
        }
      })
    }
  }
}
</script>

ここまで終えると、実装は完了です。テーブルに表示してみましょう。

「ファイルを選択」をクリックし、任意のCSVファイルをアップロードします。
screencapture-localhost-8080-2023-03-16-20_46_57.png

アップロードが完了すると、以下のようにテーブルに表示されます。
screencapture-localhost-8080-2023-03-16-20_49_38.png

おわりに

今回は、Vue2とVuetifyを使用して、ローカルのCSVファイルをテーブルに表示してみました。
papaparseというライブラリを使用することで、CSVを簡単に解析することができました。ライブラリを使うことで、開発のハードルを下げることができますね。ぜひ使ってみてください。

0
1
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
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?