背景

  做后台项目时避免不了excel文件上传,有的还要求对文件内容做校验,或者把文件内容转成数据上传保存.

操作

  1.引入xlsx插件,最好安装指定版本,否则会报错

npm i xlsx@0.16.0 -save

  2.页面引入 

import XLSX from 'xlsx'

  3.页面触发

<el-upload class="upload-demo" ref="upload" accept=".xls,.xlsx" action="" :on-change="uploadExcel"
:show-file-list="false" :auto-upload="false">
<el-button slot="trigger" size="large">导入excel</el-button>
</el-upload>

  4.使用处理数据

import { ref } from 'vue'
import XLSX from 'xlsx'
const menuData: any = ref([])
const tableData: any = ref([])
const uploadExcel = (file: any, fileList: any) => {
let files = { 0: file.raw }
const fileReader = new FileReader()
fileReader.onload = (e: any) => {
try {
const workbook = XLSX.read(e.target.result, {
type: 'binary'
})
const wsname = workbook.SheetNames[0] // 取第一张表
const ws: any = XLSX.utils.sheet_to_json(workbook.Sheets[wsname])// 生成json表格内容
const data: any = []
ws.map((item: any) => {
let obj: any = {
arr:[]
}
Object.values(item).map((child: any, index: number) => {
obj.arr.push('name' + index)
obj[`name${index}`] = child
})
data.push(obj)
})
tableData.value = data
menuData.value = Object.keys(ws[0])
} catch (err) {
console.log(err)
}
}
fileReader.readAsBinaryString(files[0])
}

excel文件如下:

读取后,处理数据展示如下:

具体代码地址:https://gitee.com/yuexiayunsheng/vue3learn/blob/master/src/views/GetExcelContent.vue

    

最新文章

  1. Can I Win
  2. Leetcode N-Queens
  3. java8中CAS的增强
  4. GridView----CustomRowCellEdit 使用注意事项
  5. PHP配置,php.ini以及覆盖问题
  6. mtk的安卓手机刷机时出现的错误信息
  7. 开发版本控制git
  8. [Bootstrap] 4. Typogrphy
  9. C# HashSet类(复杂)对象的去重
  10. LABJS源码浅析
  11. iOS开展-clang: error: unknown argument: &amp;#39;-websockets&amp;#39;解决方案
  12. 【Unity与23种设计模式】状态模式(State)
  13. python基础知识练习题(二)
  14. Liunx网络技术管理及进程管理
  15. 16、JDBC-DBUtils封装
  16. TP框架M方法 create方法丢失字段问题
  17. 20165212 学习基础和C语言基础调查
  18. java.security.MessageDigest的使用之生成安全令牌!
  19. Bzoj3510:首都
  20. mvc路由引起异步调用web服务的问题

热门文章

  1. Hexo博客搭建记录
  2. 从0到1手把手教你实现vite系列--重写依赖请求路径,处理/@modules/vue引用
  3. TIM—高级定时器输出PWM
  4. MATLAB实现随机森林(RF)回归与自变量影响程度分析
  5. 一次生产环境CPU占用高的排查
  6. NetCore使用ZipFile 和ZipOutputStream
  7. ES6的新特性有哪些
  8. JZOJ 5352. 【NOIP2017提高A组模拟9.7】计数题
  9. 在 CentOS7 部署 ELK8.0.1
  10. CF863E - Turn Off The TV