在vue2.0项目结合QuasarUI框架中实现js-xlsx解析Excel并上传

4 篇文章 0 订阅

Git地址:https://github.com/SheetJS/sheetjs

QuasarUI文件上传文档

安装

npm install xlsx

引入

import XLSX from 'xlsx';

实例

<template>
	<div>
		<!--文件上传UI组件,不懂的看上面的文档即可-->
		<q-uploader url="/ht/file/upload" color="teal" flat bordered style="max-width:300px;" 
			max-files="1" accept=".xls,.xlsx" @added="added" @uploading="uploading" fieldName="file" no-thumbnails/>
		<q-space />
	</div>
</template>
<script>
import XLSX from "xlsx";
export default {
        data(){
                return{
                
                }
        },
        methods:{
                uploading(val){
                        console.log(val.xhr.response);//上传excel文件完后台返回的数据
                },
                added(val) {
                        let fileName = "";//excel文件名
                        // 读取表格文件
                        if (val.length <= 0) {//文件是否存在
                                return false;
                        } else if (!/\.(xls|xlsx)$/.test(val[0].name.toLowerCase())) {//excel判断是不是excel,不是则提示用户文件格式不正确
                                this.$q.notify({position: 'center',type:"negative",message:'上传格式不正确,请上传xls或者xlsx格式',timeout:3000});
                                return false;
                        } else {//如果是excel文件则获取文件名给上面的变量
                                // 更新获取文件名
                                fileName = val[0].name;
                        }

                        const fileReader = new FileReader();//创建读excel的对象
                        fileReader.onload = ev => {
                                try {
                                        const data = ev.target.result;//数据集
                                        const workbook = XLSX.read(data, {
                                                type: "binary"//二进制方式读
                                        });

                                        let bookName = workbook.SheetNames[0];//获取excel第一个工作簿的名称
                                        let ws = workbook.Sheets[bookName];//获取工作簿下的数据
                                        
                                        //const d = XLSX.utils.sheet_to_json(ws);//数据转化成JS数组对象(不带第一行(表头)的数据)
                                        const d = XLSX.utils.sheet_to_json(ws, {header: 1});//数据转化成JS数组对象(带第一行(表头)的数据)

                                        console.log(d);//解析的结果
                                } catch (e) {
                                        this.$q.notify({position: 'center',type:"negative",message:'表格解析失败!',timeout:3000});
                                        return false;
                                }
                        };
                        fileReader.readAsBinaryString(val[0]);
                }
                
        }
}
</script>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值