项目中Excel的导入导出功能的实现

1.导入功能

  1. 基于vue-element-admin 提供的 UploadExcel 组件,拷贝到项目的 components 目录。

  2. 全局注册,components/index.js

  3. 安转依赖需要使用 npm 包 xlsx,所以需要安装 xlsx 插件。

    npm i xlsx@0.17.0
    # 如果出现 core-js 相关的报错,可以执行下面代码尝试
    # npm i core-js
  4. 安装完成之后可以在项目引用这个导入组件啦.

    // 用到组件的页面
    <template>
      <UploadExcel :before-upload="beforeUpload" :on-success="handleSuccess" />
    </template>
    <script>
        export default {
            name: 'Import',
            methods: {
                // 上传成功
                handleSuccess(o) {
                // o 表示上传的文件
                    console.log(o)
                },
                // 上传前校验
                beforeUpload(file) {
                    // file.size 的单位是字节 B
                    const isLt1M = file.size / 1024 / 1024 < 1
                    if (isLt1M) {
                        return true
                    }
                    this.$message({
                        message: 'Please do not upload files larger than 1m in size.',
                        type: 'warning'
                    })
                    return false
                }
            }
        }
    </script>

    这个是导入组件的两个自定义属性:before-upload="beforeUpload" :on-success="handleSuccess".自定义属性相对应的两个监听回调

2.导出功能 

1.同样基于 vue-element-admin 提供的 Excel导出组件迁移到自己的项目中

2.  Excel 的导入导出都是依赖于 xlsx 来实现的,导出功能在 xlsx 的基础上又封装了      Export2Excel.js 文件。

3.安装导出 Excel 所需依赖。

npm i file-saver
# 处理压缩包
npm i script-loader -D

4.导出的话,后端可以做,前端也可以做,相对于前端,后端处理比较简单

 

export default {
    name: 'Employees',
    methods: {
        exportData() {
            // #1 懒加载的方式导入第三方包 提高性能
            import('@/vendor/Export2Excel').then((excel) => {
                // #2 调用导出方法
                excel.export_json_to_excel({
                    // #3 准备表头,必填
                    header: ['手机号', '姓名', '入职日期', '聘用形式', '转正日期', '工号', '部门'],
                    // #4 准备具体数据,必填
                    data: [
                        ['管理员', '13800000002', '2018-11-02', '正式', '2018-11-30', '9002', '总裁办'],
                        ['孙财', '13800000003', '2018-11-04', '正式', '2018-11-20', '111', '市场部'],
                    ],
                    // #5 文件名,非必填
                    filename: '学生信息表',
                    // #6 列宽是否自适应,非必填
                    autoWidth: true,
                    // #7 文件后缀名,非必填
                    bookType: 'xlsx',
                })
            })
        }
    }
}

5.复杂表头多了两个参数  如下

 3.总之导入导出都是基于vue-element-admin来完成的

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

金凯枫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值