表格导入导出(下载)

1.表格处理需要安装 xlxs 插件

npm i xlsx@0.16.9    // 注意版本兼容性

2. 表格导入概念:

excel表格的导入就是能够将excel表格中的数据批量提交到服务端进行储存,第一种是将表格数据处理成可以在应用中预览的对象数组格式,然后提交到服务端;第二种是可以不做预览数据格式转换处理,直接提交给服务端做文件上传处理。

两种处理流程如下图:

2.1. 前端处理数据在上传

        获取二进制文件数据 ====> 转换成对象数组格式 ====> 前端页面展示 ====> 将处理后的数据发给服务端 ====> 数据库

2.2. 前端不处理直接上传,后端处理数据

        获取二进制文件数据  ====> formData)将二进制数据发送给服务端 ====> 后端处理二进制数据 ====> 数据库

2.3 代码实现 :

    // 1.使用FileReader获取原生二进制数据
    export function readFile(file) {
        return new Promise(resolve => {
                let reader = new FileReader()
                reader.readAsBinaryString(file) // 把当前文件以二进制进行读取
                reader.onload = ev => {
                    // 读完返回文件数据
                    resolve(ev.target.result)    
                }
        })        
    }
    let binayData = await readFile(file.raw)

    // 2.使用xlxs插件实现二进制数据转换==>JSON
    let sheetBinaryData = xlsx.read(binayData, { type: "binary" })
    let sheetData = sheetBinaryData.Sheets[sheetBinaryData.SheetNames[0]]
    let sheetJsonData = xlsx.utils.sheet_to_json(sheetData)
    // 3.将表格数中中文key===>英文(数据库同步){"管理员姓名":"李四"}
    {"username":"李四"}
    let userCharacter = {
        username: {
            text: '管理员姓名',
            type: 'string'
        },
        password: {
            text: '管理员密码',
            type: 'string'
        },
        status: {
            text: '管理员状态',
            type: 'number'
        },
        roleid: {
            text: '管理员角色',
            type: 'number'
        }
    }
    let Data = sheetJsonData.map((item, index) => {
        let obj = {}
        for (let key in userCharacter) {
            // 解构获取text健名 通过健名获取sheet表格中的记录值
            let { text, type } = chart[key]
            let value = item[text]
            // 转换value值的类型
            type == "string" ? value = String(value) : ""
            type == "number" ? value = Number(value) : ""
            obj[key] = value
        }
        return obj
    })
    // 4.将处理完的数据赋值页面展示即可 拼接多个数据数据
    this.tableData = this.tableData.concat(Data)

    // 第二种方式直接存储文件原生数据 直接提交给服务端
    this.file = file.raw;

3. 表格导出(下载)概念:

将应用表格中的数据以excel表格的形式导出下载到用户的本地

3.1代码实现:

    // 将数据中的key转换成中文
    let array = this.selectData.map((item) => {
        return {
            "管理员姓名": item.username,
            "管理员密码": item.password,
            "管理员状态": item.status
        }
    })
    // 通过xlsx实现表格数据转换excel下载到用户浏览器本地
    let sheetData = xlsx.utils.json_to_sheet(array)
    let book = xlsx.utils.book_new()//构建excel表
    xlsx.utils.book_append_sheet(book, sheetData, '管理员信息')//将数据放到表中
    xlsx.writeFile(book, `user${new Date().getTime()}.xls`)//生成excel表

4.使用xlxs注意 xlxs不只是能够导入导出表格数据,还能通过其内部的方法设置表格的样式,比如表头高度、字体颜色等等

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值