前端上传excel转换成json并传给后台用vue
时间: 2024-02-22 22:57:51 浏览: 22
前端上传 excel 文件并转换成 JSON 格式可以通过以下步骤实现:
1. 引入 js-xlsx 库:js-xlsx 是一个用于读取和写入 Excel 文件的 JavaScript 库,可以通过 CDN 引入或者本地引入。
2. 创建 input 标签:在 HTML 页面中创建一个 input 标签,用于上传 Excel 文件。
3. 监听 input 标签的 change 事件:当用户选择文件并上传时,会触发 change 事件,我们可以在事件处理函数中读取文件内容并转换为 JSON 格式。
4. 将 JSON 格式的数据提交给后台:可以使用 Axios 等库将 JSON 数据提交给后台。
下面是一个使用 Vue.js 实现上传 Excel 文件并转换成 JSON 格式的示例:
```html
<template>
<div>
<input type="file" @change="handleFileUpload">
<button @click="submitData">提交数据</button>
</div>
</template>
<script>
import XLSX from 'xlsx'
import axios from 'axios'
export default {
data() {
return {
jsonData: null
}
},
methods: {
handleFileUpload(event) {
const file = event.target.files[0]
const reader = new FileReader()
reader.onload = (e) => {
const data = e.target.result
const workbook = XLSX.read(data, { type: 'binary' })
const worksheet = workbook.Sheets[workbook.SheetNames[0]]
this.jsonData = XLSX.utils.sheet_to_json(worksheet)
}
reader.readAsBinaryString(file)
},
async submitData() {
try {
const response = await axios.post('/api/upload', this.jsonData)
console.log(response.data)
} catch (error) {
console.error(error)
}
}
}
}
</script>
```
在上面的示例中,我们首先在 Vue 组件中引入了 js-xlsx 和 axios 库。在模板中,我们创建了一个 input 标签和一个提交按钮。当用户选择文件并上传时,会触发 handleFileUpload 方法,该方法使用 FileReader API 将文件内容读取为二进制字符串,然后使用 js-xlsx 库解析 Excel 文件并转换为 JSON 格式。在 submitData 方法中,我们使用 axios 库将 JSON 数据提交给后台接口。