🖥

Nuxt3 + Exceljs – ブラウザでエクセルファイルを選択した時にWorkbookとして受け取る (アップロードに使いたい)

2024/03/06に公開

前提

ブラウザでファイル選択した時に、エクセルファイルの内容をフロント(Nuxt3)で解析して、その内容を元に何らかのアップロード処理的なことをしたい

(エクセルファイル本体を送信するわけではなく、JSONでリクエストするなどしたい)

Exceljs のインストール

npm install exceljs

ファイル例

以下の例では全てのシートの名前と、A1のセルの値を console 出力している

ブラウザでエクセルファイルをファイル選択した時に、
exceljs でワークブックを読み取って、その内容を console 出力してみる

<script lang="ts" setup>
import * as Excel from 'exceljs'

async function fileSelected(event: Event) {
  const target = event.target as HTMLInputElement
  const files = target.files

  if (files && files[0]) {
    const arrayBuffer = await files[0].arrayBuffer()
    const workbook = new Excel.Workbook()
    await workbook.xlsx.load(arrayBuffer)

    workbook.worksheets.forEach((worksheet) => {
      console.log(worksheet.name)
      console.log(worksheet.getCell('A1').value)
    })
  }
}

const fileInput = ref()
</script>

<template>
  <input ref="fileInput" type="file" @change="fileSelected" />
</template>

解説

  • ファイルを選択すると File が得られる
  • File からバッファが得られる ( File.arrayBuffer() )
  • バッファを workbook.xlsx.load でワークブックとして読み込むことが出来る

アップロード処理

workbook を使って fetch とかでてきとうにバックエンド(サーバー)にアップロードする

チャットメンバー募集

何か質問、悩み事、相談などあればLINEオープンチャットもご利用ください。

https://line.me/ti/g2/eEPltQ6Tzh3pYAZV8JXKZqc7PJ6L0rpm573dcQ

プロフィール・経歴

https://github.com/YumaInaura/YumaInaura

公開日時

2024-02-29

GitHubで編集を提案

Discussion