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内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Nuxt封装@nuxtjs/axios请求后端数据方式

    Nuxt封装@nuxtjs/axios请求后端数据方式

    这篇文章主要介绍了Nuxt封装@nuxtjs/axios请求后端数据方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-10-10
  • vue.js中过滤器的使用教程

    vue.js中过滤器的使用教程

    过滤器是一个通过输入数据,能够及时对数据进行处理并返回一个数据结果的简单函数。下面这篇文章主要给大家介绍了关于vue.js中过滤器使用的相关资料,需要的朋友可以参考借鉴,下面来看看详细的介绍。
    2017-06-06
  • vue实现卡片遮罩层交互式功能

    vue实现卡片遮罩层交互式功能

    在前端开发中,卡片遮罩层是一种常见的交互设计元素,用于强调某个区域或内容,并提供用户操作的入口,本文将带大家在 vue 中结合实际案例实现此功能,感兴趣的朋友一起看看吧
    2024-08-08
  • Vue中使用require.context自动引入组件的操作方法

    Vue中使用require.context自动引入组件的操作方法

    require.context 是 webpack 提供的一个API,用于创建context,即一组具有相同上下文的模块,使用 require.context 可以方便地加载多个模块,并且可以灵活地控制模块的加载顺序和依赖关系,本文给大家讲解Vue中使用require.context自动引入组件的方法,感兴趣的朋友一起看看吧
    2024-01-01
  • vue.js动画中的js钩子函数的实现

    vue.js动画中的js钩子函数的实现

    这篇文章主要介绍了vue.js动画中的js钩子函数的实现,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-07-07
  • vue3中的setup()函数基本使用详解

    vue3中的setup()函数基本使用详解

    在 Vue3 中,setup 函数是一个新引入的概念,它代替了之前版本中的 data、computed、methods 等选项,用于设置组件的初始状态和逻辑,本文将主要介绍Setup的基本用法和少量原理,感兴趣的朋友一起看看吧
    2024-02-02
  • Vue之监听方法案例详解

    Vue之监听方法案例详解

    这篇文章主要介绍了Vue之监听方法案例详解,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
    2021-07-07
  • Vue.js实现一个漂亮、灵活、可复用的提示组件示例

    Vue.js实现一个漂亮、灵活、可复用的提示组件示例

    这篇文章主要介绍了Vue.js实现一个漂亮、灵活、可复用的提示组件示例,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。
    2017-03-03
  • Vue3中Composition API和Options API的区别

    Vue3中Composition API和Options API的区别

    Vue3的Composition API和Options API是Vue.js框架中的两种不同的API,本文主要介绍了Vue3中Composition API和Options API的区别,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来一起学习学习吧
    2023-06-06
  • VUE开发分布式医疗挂号系统后台管理页面步骤

    VUE开发分布式医疗挂号系统后台管理页面步骤

    本文从整体上介绍Vue框架的开发流程,结合具体的案例,使用Vue框架调用具体的后端接口,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-04-04

最新评论