首页 > 解决方案 > 使用 vue.js 从 xlsx 文件中获取列数据

问题描述

我能够读取 Excel 文件,我需要逐列读取 xls 文件,读取每一列中的数据并将其转换为 JSON。

如何按col读取xls文件col?

使用 vuejs 从 xlsx 文件中获取第一列数据时遇到问题

如何使用Vue js从xlsx文件中获取特定的列数据,任何人/?我是 Vue js 的新手。这里,是我使用的代码。

<template>
  <div>
    <p v-if="err!==''">{{err}}</p>  <!-- Used to display errors -->
    
    <table v-if="content!==''">  <!-- Set center,Do not display if no content is obtained -->
      <!-- <tr>
        <th v-for="h in content[0]" :key="h.id">{{h}}</th>
      </tr>  Cycle read data and display -->
      
      <tr v-for="row in content.slice(0,)" :key=row.id>
        <td v-for="item in row" :key=item.id>{{item}}</td>
      </tr>
    </table>
  </div>
</template>

<script>
import axios from 'axios'
import XLSX from 'xlsx'

  export default {
    name: "App",
    data(){
    return {
      content: '',    //Initialization data
      err: ''
    }
  },
  created() {
    var url = "/filw.csv"  //Files placed in the public directory can be accessed directly
    
    axios.get(url, {responseType:'arraybuffer'})
    .then((res) => {
      var data = new Uint8Array(res.data)
      var wb = XLSX.read(data, {type:"array"})
      const firstSheetName = wb.SheetNames[0]
      const sheets = wb.Sheets[firstSheetName]
      // const results = XLSX.utils.sheet_to_json(sheets)
      // this.content = results
      this.content = this.getColumnData(sheets)
    }).catch( err =>{
      this.err = err
    })
  },
   methods: {
    getColumnData(sheet) {
      const ColData = []
      const range = XLSX.utils.decode_range(sheet['!refs'])
      let C
      const R = range.s.r
      /* start in the first row */
      for (C = range.s.c; C <= range.e.c; ++C) { /* walk every column in the range */
        const cell = sheet[XLSX.utils.encode_col({ c: C, r: R })]
       
        ColData.push(cell)
      }
      return ColData
    }
  }
  
}
</script>

<style>

</style>

任何知道的人,将不胜感激;-)

标签: excelvue.js

解决方案


您可以将数据转换为 json,然后读取结果,如下所示:

created() {
       var url = "/test.xlsx"  
       axios.get(url, {responseType:'arraybuffer'})
       .then((res) => {
                        var data = new Uint8Array(res.data)
                        var wb = XLSX.read(data, {type:"array"})
                        const firstSheetName = wb.SheetNames[0]
                        const first_worksheet = wb.Sheets[firstSheetName]
                        // convert to json
                        const file_data = XLSX.utils.sheet_to_json(first_worksheet, { header: 1 });
                        // first column first row value
                        console.log(file_data[0][0])
                        })
       .catch( err =>{this.err = err})
},

推荐阅读