前言
没有那么多话说了直接看代码吧,也不知道什么人把写入读取弄了那么麻烦,自己是碰到了,刚好给没有碰到的人把这个坑补上
安装 XLSX
pip install xlsx
或
yarn add xlsx
读取
<template>
<div>
<input class="excel-upload-input" type="file" accept=".xlsx, .xls" @change="handleClick">
</div>
</template>
<script>
import XLSX from 'xlsx'
export default {
data () {
return {
}
},
methods: {
// 文件读取
readerData (rawFile) {
return new Promise((resolve, reject) => {
const reader = new FileReader()
reader.onload = e => {
const data = e.target.result
const workbook = XLSX.read(data, {
type: 'array' })
const firstSheetName = workbook.SheetNames[0]
const worksheet = workbook.Sheets[firstSheetName]
const results = XLSX.utils.sheet_to_json(worksheet)
resolve(results)
}
reader.readAsArrayBuffer(rawFile)
})
},
// 文件上传
handleClick (e) {
const files = e.target.files
const rawFile = files[0]
if (!rawFile) return
if (!/\.(xlsx|xls|csv)$/.test(rawFile.name)) {
this.$message.error('只能上传【.xlsx, .xls, .csv】格式文档')
return false
}
this.readerData(rawFile).then(data => {
console.log(data); //读取出来的excel数据
})
},
}
}
</script>
写入
<template>
<div>
<button @click="downloadAuthModelFile">写入</button>
</div>
</template>
<script>
import XLSX from 'xlsx'
export default {
data () {
return {
}
},
methods: {
downloadAuthModelFile () {
var filename = "test.xlsx"; //文件名称
var data = [
['表头1', '表头2', '表头3'],
['数据1', '数据2', '数据3']
]; //数据
var ws_name = "Sheet1"; //sheet的名称
var wb = XLSX.utils.book_new()
var ws = XLSX.utils.aoa_to_sheet(data);
XLSX.utils.book_append_sheet(wb, ws, ws_name);
XLSX.writeFile(wb, filename); //导出Excel到本地
}
}
}
</script>