vue上传解析excel文件并在列表中输出内容

 更新时间:2023年09月14日 11:19:27   作者:还是大剑师兰特  
在vue的项目开发中,我们会遇到加载excel或者csv等情形,这个示例展示了这个需求,上传一个excel文件,通过解析,生成数组,然后再列表中将内容展示出来,这篇文章主要介绍了vue上传解析excel文件,列表中输出内容,需要的朋友可以参考下,

需求背景

在vue的项目开发中,我们会遇到加载excel或者csv等情形,这个示例展示了这个需求。上传一个excel文件,通过解析,生成数组,然后再列表中将内容展示出来。

示例效果

在这里插入图片描述

示例源代码(共105行)

/*
* @Author: 大剑师兰特(xiaozhuanlan),还是大剑师兰特(CSDN)
* @此源代码版权归大剑师兰特所有,可供学习或商业项目中借鉴,未经授权,不得重复地发表到博客、论坛,问答,git等公共空间或网站中。
* @Email: 2909222303@qq.com
* @weixin: gis-dajianshi
* @First published in CSDN
* @First published time: 2022-09-07
*/
<template>
	<div class="container">
		<div class="top">
			<h3>vue上传解析excel文件,输出列表内容 </h3>
			<div class="author">大剑师兰特, 还是大剑师兰特,gis-dajianshi</div>
		</div>
		<h4>
			<el-upload ref="upload" action="/" :show-file-list="false" :on-change="importExcel" :auto-upload="false">
				<el-button slot="trigger" icon="el-icon-upload" size="small" type="success">上传文件</el-button>
			</el-upload>
		</h4>
		<div style="width: 80%; margin:10px auto">
			<el-table :data="xlsxData" style="width: 100%">
				<el-table-column prop="name" label="姓名" width="180"></el-table-column>
				<el-table-column prop="class" label="班级" width="180"></el-table-column>
				<el-table-column prop="score" label="成绩"></el-table-column>
				<el-table-column prop="level" label="等级"></el-table-column>
			</el-table>
		</div>
	</div>
</template>
<script>
	import * as XLSX from 'xlsx'
	export default {
		data() {
			return {
				wb: null,
				xlsxData: [],
			}
		},
		methods: {
			importExcel(file) {
				// let filefile = file.files[0] // 使用传统的input方法需要加上这一步 
				const types = file.name.split('.')[1]
				const fileType = ['xlsx', 'xlc', 'xlm', 'xls', 'xlt', 'xlw', 'csv'].some(item => item === types)
				if (!fileType) {
					alert('格式错误!请重新选择')
					return
				}
				this.fileExchange(file).then(tabJson => {
			  if (tabJson && tabJson.length > 0) {
						this.xlsxData = tabJson[0].sheet
						console.log(this.xlsxData)
						// xlsxJson就是解析出来的json数据,数据格式如下 
						// [ 
						//   { 
						//     sheetName: sheet1 
						//     sheet: sheetData 
						//   } 
						// ] 
					}
				})
			},
			fileExchange(file) {
				return new Promise(function(resolve, reject) {
					const reader = new FileReader()
			  reader.onload = function(e) {
						const data = e.target.result
						this.wb = XLSX.read(data, {
							type: 'binary'
						})
						const result = []
						this.wb.SheetNames.forEach((sheetName) => {
							result.push({
								sheetName: sheetName,
								sheet: XLSX.utils.sheet_to_json(this.wb.Sheets[sheetName])
							})
						})
						resolve(result)
					}
					reader.readAsBinaryString(file.raw)
			 	// reader.readAsBinaryString(file) // 传统input方法 
				})
			}
		},
	}
</script>
<style scoped>
	.container {
		width: 1000px;
		height: 580px;
		margin: 50px auto;
		border: 1px solid green;
	}
	.top {
		margin: 0 auto 30px;
		padding: 10px 0;
		background: #23B486;
		color: #fff;
	}
</style>

安装引用依赖

// 安装插件 
npm install xlsx --save 
// 在vue中导入XLSX 
import  * as XLSX from 'xlsx' 

API参考

https://www.npmjs.com/package/xlsx

到此这篇关于vue上传解析excel文件,列表中输出内容的文章就介绍到这了,更多相关vue上传解析excel内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Vue watch原理源码层深入讲解

    Vue watch原理源码层深入讲解

    watch 是由用户定义的数据监听,当监听的属性发生改变就会触发回调,这项配置在业务中是很常用。在面试时,也是必问知识点,一般会用作和 computed 进行比较。那么本文就来带大家从源码理解 watch 的工作流程,以及依赖收集和深度监听的实现
    2022-10-10
  • Vue项目WebPack打包删除注释和console

    Vue项目WebPack打包删除注释和console

    这篇文章主要介绍了Vue项目WebPack打包删除注释和console,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-04-04
  • vue获取当前日期时间(使用moment和new Date())

    vue获取当前日期时间(使用moment和new Date())

    在项目开发中我遇到了日期范围选择器,两种获取当前日期并做处理的写法,这里记录一下,下面这篇文章主要给大家介绍了关于vue获取当前日期时间(使用moment和new Date())的相关资料,需要的朋友可以参考下
    2023-06-06
  • vue+elementui实现动态添加行/可编辑的table

    vue+elementui实现动态添加行/可编辑的table

    这篇文章主要为大家详细介绍了vue+elementui实现动态添加行/可编辑的table,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-07-07
  • Vue中使用icon的几种常用方法

    Vue中使用icon的几种常用方法

    这篇文章主要给大家介绍了关于Vue中使用icon的几种常用方法,icon图标的使用 Vue是现在前端最流行的框架之一,作为前端开发人员应该要熟练的掌握它,需要的朋友可以参考下
    2023-07-07
  • vue解决花括号数据绑定不成功的问题

    vue解决花括号数据绑定不成功的问题

    今天小编就为大家分享一篇vue解决花括号数据绑定不成功的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-10-10
  • 如何实现vue的tree组件

    如何实现vue的tree组件

    这篇文章主要介绍了如何实现vue的tree组件,帮助大家更好的理解和学习vue框架,感兴趣的朋友可以了解下
    2020-12-12
  • Vue中$bus的用法及$on、$off的使用说明

    Vue中$bus的用法及$on、$off的使用说明

    这篇文章主要介绍了Vue中$bus的用法及$on、$off的使用说明,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-05-05
  • vue实现列表左右联动效果

    vue实现列表左右联动效果

    这篇文章主要为大家详细介绍了vue实现列表左右联动效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-04-04
  • vue filter 完美时间日期格式的代码

    vue filter 完美时间日期格式的代码

    这篇文章主要介绍了vue filter 完美时间日期格式的方法,文中给大家提到了vue filter方法-时间格式化 的代码,非常不错,具有一定的参考借鉴价值,需要的朋友参考下吧
    2019-08-08

最新评论