上传文件

import XLSX from 'xlsx'

export default {

props: {

beforeUpload: Function,

onSuccess: Function

},

data() {

return {

loading: false,

excelData: {

header: null,

results: null

}

}

},

methods: {

generateData({ header, results }) {

this.excelData.header = header

this.excelData.results = results

this.onSuccess && this.onSuccess(this.excelData)

},

handleUpload() {

this.$refs['excel-upload-input'].click()

},

handleClick(e) {

const files = e.target.files

const rawFile = files[0]

if (!rawFile) return

this.upload(rawFile)

},

upload(rawFile) {

this.$refs['excel-upload-input'].value = null

if (!this.beforeUpload) {

this.readerData(rawFile)

return

}

const before = this.beforeUpload(rawFile)

if (before) {

this.readerData(rawFile)

}

},

readerData(rawFile) {

this.loading = true

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 header = this.getHeaderRow(worksheet)

const results = XLSX.utils.sheet_to_json(worksheet)

this.generateData({ header, results })

this.loading = false

resolve()

}

reader.readAsArrayBuffer(rawFile)

})

},

getHeaderRow(sheet) {

const headers = []

const range = XLSX.utils.decode_range(sheet['!ref'])

let C

const R = range.s.r

/* start in the first row */

for (C = range.s.c; C <= range.e.c; ++C) { /* walk every column in the range */

const cell = sheet[XLSX.utils.encode_cell({ c: C, r: R })]

/* find the cell in the first row */

let hdr = 'UNKNOWN ' + C //

if (cell && cell.t) hdr = XLSX.utils.format_cell(cell)

headers.push(hdr)

}

return headers

},

isExcel(file) {

return /\.(xlsx|xls|csv)$/.test(file.name)

}

}

}

.excel-upload-input{

display: none;

z-index: -9999;

}

.drop{

border: 2px dashed #bbb;

width: 600px;

height: 160px;

line-height: 160px;

margin: 0 auto;

font-size: 24px;

border-radius: 5px;

text-align: center;

color: #bbb;

position: relative;

}

vue 导入excel解析_Vue实现Excel导入并解析相关推荐

  1. vue导入excel进度条_Vue 前端开发——导入Excel/Csv

    项目开发中遇到导入表格常见的就是excel和csv 格式,一般情况下我们会前端首先得到这个表格里面的数据,然后再把数据发送给后端,也有的是直接上传文件传给后台后台自己处理,这样就不好控制上传前预览和处 ...

  2. vue导出excel加一个进度条_vue 实现Excel 导入导出功能

    第一步:安装依赖 使用npm: npm install -S file-saver xlsx(这里其实安装了2个依赖) npm install -D script-loader 或使用yarn: ya ...

  3. vue导入excel进度条_Vue结合后台导入导出Excel问题详解

    最近Vue项目中用到了导入导出功能,在网上搜索了一番之后,决定采用Blob方式,这也是大家推荐的一种的方式,特此做下记录. 导出Excel功能 这里不谈别人怎么实现的,我是从后台生成了Excel流文件 ...

  4. 导入数据任务(id:373985)异常, 错误信息:解析导入文件错误,请检查导入文件内容,仅支持导入json格式数据及excel文件

    导入数据任务(id:373985)异常, 错误信息:解析导入文件错误,请检查导入文件内容,仅支持导入json格式数据及excel文件 参考文章: (1)导入数据任务(id:373985)异常, 错误信 ...

  5. 导入数据任务(id:373985)异常, 错误信息:解析导入文件错误,请检查导入文件内容,仅支持导入json格式数据及excel文件...

    小程序导入,别人导出的数据库json文件,错误信息如下: 导入数据库失败, Error: Poll error, 导入数据任务(id:373985)异常,错误信息:解析导入文件错误,请检查导入文件内容 ...

  6. Vue 人资 实战篇七 员工管理上 封装通用的组件、formatter属性、过滤器的使用、树形结构、建立公共导入的页面路由、excel的导入和导出、

    1.0 封装一个通用的工具栏 目标:封装一个通用的工具栏供大家使用 1.1 通用工具栏的组件结构 在后续的业务开发中,经常会用到一个类似下图的工具栏,作为公共组件,进行一下封装 组件 src/comp ...

  7. excel winform 导入 导出_强大的 Excel 导入导出工具 hutool

    " 最近项目上需要用到 Excel 的导入导出功能,想着之前使用的都有点麻烦,所以结合多方资料,终于找到了这个还算不错的 Excel 处理工具,一起来看" 今日安利好物名为 Hut ...

  8. SQL Server 与 Excel,Access 数据表的导入导出(注:参照博园.NET大观)

    我们知道在Sql Server 中 集成了数据的导入导出这么一个工具,那用Sql 脚本怎么轻松操作 Access 和 Excel 中的数据呢,接下来我们看一看: 一. SQL SERVER 和EXCE ...

  9. 如何在 MySQL / MariaDB 中导入导出数据,导入导出数据库文件、Excel、CSV

    文章目录 本教程将详细讲解 1. MySQL / MariaDB 数据库数据「导出」 2. MySQL / MariaDB 数据库数据「导入」 3. 使用「卡拉云」一键导入导出 MySQL / Mar ...

最新文章

  1. 2021年大数据环境命令(一):常用命令汇总
  2. 《精通Nginx》——1.2 从源代码安装Nginx
  3. Ice笔记---异步程序设计demo
  4. Node提示:npm does not support Node.js v12.16.3
  5. 智能高柜机器人_丰田公司推出新型助力机器人
  6. 1001:Hello,World!
  7. pyecharts简单使用
  8. 为什么kill进程后socket一直处于FIN_WAIT_1状态
  9. 贝叶斯优化混合核极限学习机回归预测
  10. 即时通讯源码|IM即时通讯源码开源
  11. 弦图(Chordal Graph)学习小记
  12. 我的世界刷猪人塔java版_我的世界僵尸猪人刷怪塔制作思路 猪人塔介绍
  13. Blender制作火焰烟雾特效
  14. ILOM escalation mode下的管理命令用法几输出
  15. VS 2019Xamarin开发Android App生成apk文件
  16. oracle怎么绑定vue,Oracle AutoVue 安装与配置教程,oracleautovue
  17. 喜讯 雨笋教育优秀学员荣获望城区网络安全攻防演练二等奖
  18. matlab绘制银河系,科学家们是如何绘制宇宙星系图的?
  19. c语言排考场座位链表,用Excel制作考场座位布置图
  20. 主要是web开发和android开发 最好是选择一个方向先专一去学, 半瓶子醋什么都想学你会发现到最后什么都不会,或者比别人多花出了太多的精力 我曾经学java的时候好高骛远,因为当时老师是一个c+

热门文章

  1. Ubuntu16.04.1安装Caffe(GPU)
  2. CCF201609-5 祭坛【线段树】(100分解题链接)
  3. CodeForces - 1513B AND Sequences
  4. POJ2033 LA3078 HDU1508 ZOJ2202 Alphacode【DFS+DP】
  5. UVA665 LA5658 False coin【暴力】
  6. Bailian2693 最远距离【序列处理】
  7. Bailian4013 中位数【中位数】
  8. Python 绘图利器 —— ggplot
  9. parfor —— matlab 下的并行循环
  10. Java 原生数据类型、Integer