Rumah  >  Artikel  >  hujung hadapan web  >  Interaksi yang cekap antara Vue dan Excel: cara mencapai pengisian batch dan import data

Interaksi yang cekap antara Vue dan Excel: cara mencapai pengisian batch dan import data

王林
王林asal
2023-07-21 10:59:041314semak imbas

Interaksi yang cekap antara Vue dan Excel: Bagaimana untuk merealisasikan pengisian kelompok dan pengimportan data

Dalam kebanyakan projek, pengisian kelompok dan pengimportan data adalah keperluan biasa. Sebagai alat pemprosesan data yang popular, Excel, digabungkan dengan rangka kerja Vue, boleh mencapai interaksi data yang cekap. Artikel ini akan memperkenalkan cara melaksanakan pengisian kelompok dan pengimportan data melalui Vue dan beberapa pemalam yang biasa digunakan serta memberikan contoh kod.

  1. Gunakan pemalam vue-xlsx untuk membaca dan menulis fail Excel
    vue-xlsx ialah komponen Vue berdasarkan pemalam js-xlsx, yang membolehkan kami membaca dan menulis terus fail Excel melalui Vue. Kita boleh menggunakan arahan berikut untuk memasang vue-xlsx:
npm install vue-xlsx -S

Kemudian, perkenalkan vue-xlsx dalam fail main.js projek Vue:

import VueXlsx from 'vue-xlsx'
Vue.use(VueXlsx)
  1. Laksanakan fungsi pengisian batch data
    Katakan kita mempunyai fail mengandungi nama dan gred pelajar Untuk fail Excel, kami boleh melaksanakan pengisian data secara berkelompok melalui kod berikut:
<template>
  <div>
    <input type="file" @change="handleFileUpload" />
    <table>
      <thead>
        <tr>
          <th>学生姓名</th>
          <th>成绩</th>
        </tr>
      </thead>
      <tbody>
        <tr v-for="(student, index) in students" :key="index">
          <td>{{ student.name }}</td>
          <td>{{ student.score }}</td>
        </tr>
      </tbody>
    </table>
  </div>
</template>

<script>
export default {
  data() {
    return {
      students: []
    }
  },
  methods: {
    handleFileUpload(event) {
      this.students = []
      const file = event.target.files[0]
      const reader = new FileReader()

      reader.onload = (e) => {
        const data = new Uint8Array(e.target.result)
        const workbook = this.$xlsx.read(data, { type: 'array' })
        const sheetName = workbook.SheetNames[0]
        const worksheet = workbook.Sheets[sheetName]
        const jsonData = this.$xlsx.utils.sheet_to_json(worksheet, { header: 1 })

        jsonData.forEach((row, index) => {
          if (index !== 0) {
            const student = { name: row[0], score: row[1] }
            this.students.push(student)
          }
        })
      }

      reader.readAsArrayBuffer(file)
    }
  }
}
</script>

Dalam kod di atas, kami mula-mula menambah teg input untuk muat naik fail ke templat dan mendengar acara perubahan. Apabila pengguna memilih fail Excel, fail tersebut akan dibaca dan kaedah handleFileUpload akan dicetuskan.

Di dalam kaedah, this.students terlebih dahulu dibersihkan, dan kemudian FileReader digunakan untuk membaca kandungan fail. Selepas bacaan selesai, gunakan objek this.$xlsx vue-xlsx untuk menghuraikan kandungan fail dan tukar data dalam Excel kepada format JSON melalui kaedah this.$xlsx.utils.sheet_to_json.

Akhir sekali, kami menukar data JSON baris demi baris kepada objek pelajar dan menambahkannya pada tatasusunan this.students. Gunakan arahan v-for dalam templat untuk melintasi tatasusunan dan memaparkan nama dan gred pelajar.

  1. Laksanakan fungsi import data
    Selain pengisian batch, kami juga boleh melaksanakan fungsi import data untuk mengimport data dalam Excel ke dalam borang atau pangkalan data dalam Vue. Berikut ialah contoh mudah:
<template>
  <div>
    <input type="file" @change="handleFileUpload" />
    <form>
      <div>
        <label>学生姓名:</label>
        <input v-model="student.name" />
      </div>
      <div>
        <label>成绩:</label>
        <input v-model="student.score" />
      </div>
      <button @click="importData">导入数据</button>
    </form>
  </div>
</template>

<script>
export default {
  data() {
    return {
      student: {}
    }
  },
  methods: {
    handleFileUpload(event) {
      const file = event.target.files[0]
      const reader = new FileReader()

      reader.onload = (e) => {
        const data = new Uint8Array(e.target.result)
        const workbook = this.$xlsx.read(data, { type: 'array' })
        const sheetName = workbook.SheetNames[0]
        const worksheet = workbook.Sheets[sheetName]
        const jsonData = this.$xlsx.utils.sheet_to_json(worksheet, { header: 1 })

        if (jsonData.length > 0) {
          const row = jsonData[1]
          this.student = { name: row[0], score: row[1] }
        }
      }

      reader.readAsArrayBuffer(file)
    },
    importData() {
      // 将this.student中的数据导入表单或数据库
    }
  }
}
</script>

Dalam kod di atas, kami menggunakan borang untuk memaparkan data yang akan diimport, yang mengandungi kotak input untuk nama dan gred pelajar. Apabila pengguna memilih fail Excel, kandungan fail dihuraikan dengan cara yang sama dan baris pertama data digunakan sebagai data yang diimport.

Pengguna boleh mengubah suai data dalam kotak input, kemudian klik butang "Import Data" dan laksanakan kaedah importData untuk mengimport data dalam this.student ke dalam borang atau pangkalan data.

Melalui contoh kod di atas, kita dapat melihat interaksi yang cekap antara Vue dan Excel. Sama ada pengisian kelompok atau import data, menggunakan pemalam Vue dan vue-xlsx boleh memudahkan proses pembangunan dan meningkatkan kecekapan kerja.

Ringkasan
Artikel ini memperkenalkan cara untuk mencapai pengisian batch dan import data melalui pemalam Vue dan vue-xlsx. Dengan memasang dan menggunakan pemalam vue-xlsx dengan betul, kami boleh membaca dan menulis fail Excel dengan mudah dan menggunakannya dengan rangka kerja Vue. Sama ada untuk pengurusan data atau keperluan import data, interaksi yang cekap sebegini boleh meningkatkan kecekapan pembangunan.

Atas ialah kandungan terperinci Interaksi yang cekap antara Vue dan Excel: cara mencapai pengisian batch dan import data. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn