Vue项目导入excel表,自动下载导入失败数据的excel表(使用ElementUI upload组件,自定义导入excel表)(1)

Element - The world’s most popular Vue UI frameworkElement,一套为开发者、设计师和产品经理准备的基于 Vue 2.0 的桌面端组件库外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传https://element.eleme.cn/#/zh-CN/component/upload官网详细介绍upload组件的属性和使用方法,就不展开了,这里主要通过使用它实现开篇的导入excel表的需求。(在vue项目中需要引入ElementUI库,详细步骤请查阅官网)

1、引入ElementUI上传组件upload

<el-upload

class=“upload-demo”

action=“https://jsonplaceholder.typicode.com/posts/”

multiple

:auto-upload=“false”

:file-list=“fileList”

:on-change=“fileChange”>

导入

页面效果

属性介绍

属性、说明、类型

action必选参数,上传的地址string
multiple是否支持多选文件boolean
auto-upload是否在选取文件后立即进行上传boolean

auto-upload我们设置为false,避免自动上传,以便使用自定义上传方式。

file-list上传的文件列表, 例如: [{name: 'food.jpg', url: 'https://xxx.cdn.com/xxx.jpg'}]array
on-change文件状态改变时的钩子,添加文件、上传成功和上传失败时都会被调用function(file, fileList)

2、点击导入按钮,选择文件(点击“打开”触发on-change)

此时可以通过fileChange方法在控制台打印查看文件结构

fileChange(file,fileList){

console.log(file,‘file’)

console.log(fileList,‘fileList’)

}

3、此时我们已经拿到选择的文件,可以自定义上传方式,将其发送至后端服务器

fileChange(file,fileList){

console.log(file,‘file’)

console.log(fileList,‘fileList’)

let url = ‘xxx’ //后端服务器API

let headers = {

‘Content-Type’:‘multipart/form-data’ //自定义上传时,该请求头参数必填

}

let formData = ‘’

for(let i = 0;i < fileList.length;i++){ //遍历文件数组,fileList有可能存在多个文件

formData = new FormData()

formData.append(‘name’,fileList[i].name)

formData.append(‘type’,‘.xlsx’)

formData.append(‘file’,fileList[i].raw)

}

this.$axios({

headers: headers,

method: ‘post’,

data: formData,

url: url,

responseType:‘blob’ //该参数必填,不然下载下来的excel表会提示文件损坏,无法打开

}).then(res=>{

if(res && res.data.size == 0){

//若后台不返回流,说明全部数据导入成功,提示“导入成功”,不自动下载

最后

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。

因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点!不论你是刚入门Android开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
都将为你打开新的学习之门!**

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

  • 8
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 要导入Excel数据,可以使用Element UI提供的el-upload组件。首先需要安装并引入xlsx和file-saver库,然后在el-upload组件中设置accept属性为".xlsx",即只接受Excel文件。在上传成功后,可以使用xlsx库将Excel文件转换为JSON格式的数据,然后进行处理和展示。具体实现可以参考Element UI官方文档中的el-upload组件和xlsx库的使用。 ### 回答2: Vue是一种流行的JavaScript框架,ElementUI是建立在它之上的UI组件库,可以让您使用预制的组件轻松构建前端应用程序。在这篇文章中,我们将讨论使用VueElementUI导入Excel数据的方法。 首先,您需要安装两个npm包,即element-ui和xlsx。在使用Vue CLI构建Vue应用程序时,您可以使用以下命令安装这些包: ```bash npm install element-ui xlsx ``` 然后,在Vue组件中,您需要定义一个data对象来存储导入数据: ```javascript data() { return { excelData: [], headers: [] } } ``` 这里,“excelData”即包含导入数据的数组,“headers”是一个保存Excel文件标题行的数组。接下来,您需要为用户提供一个上传Excel文件的按钮,并在用户上传时调用导入函数: ```html <el-upload accept=".xlsx" @change="handleImportExcel" > <el-button slot="trigger" type="primary"> <i class="el-icon-upload"></i> 上传Excel文件 </el-button> </el-upload> ``` 注意,“handleImportExcel”是一个在Vue组件中定义的方法,它将在用户上传Excel文件时被调用。下面是导入函数的代码: ```javascript handleImportExcel(file) { const reader = new FileReader() reader.onload = (event) => { const workbook = xlsx.read(event.target.result, {type: 'binary'}) const worksheet = workbook.Sheets[workbook.SheetNames[0]] const header = this.getHeaderRow(worksheet) const rows = xlsx.utils.sheet_to_json(worksheet) this.headers = header this.excelData = rows } reader.readAsBinaryString(file.raw) }, getHeaderRow(sheet) { const range = xlsx.utils.decode_range(sheet['!ref']) const header = [] let C const R = range.s.r for (C = range.s.c; C <= range.e.c; ++C) { const cell = sheet[xlsx.utils.encode_cell({c: C, r: R})] let hdr = 'UNKNOWN ' + C if (cell && cell.t) hdr = xlsx.utils.format_cell(cell) header.push(hdr) } return header } ``` 该函数使用FileReader对象读取上传Excel文件。之后,它使用XLSX库解析Excel文件并将其转换为JavaScript对象。此时,它从Excel文件中获取标题行以及任何数据行。 最后,数据将存储在Vue组件的“excelData”和“headers”属性中,你可以使用这些数据来渲染组件的界面。 在本文中,我们演示了通过VueElementUI展示导入Excel数据的方法。这样可以帮助您在前后端开发中更好地处理Excel文件。 ### 回答3: Vue ElementUI 是一种 UI 框架,提供了丰富的组件来帮助开发人员构建各种 Web 应用程序。其中包含了一个非常强大的 Excel 导入组件,可以轻松地将 Excel 数据导入到你的 Vue.js 应用程序中。 要实现 Excel 数据导入,我们需要先在项目中安装 element-ui 和 xlsx 插件。安装完成后,我们需要在组件中引入以下插件: ```javascript import { ElUpload, ElButton } from 'element-ui' import XLSX from 'xlsx' ``` 其中,ElUpload 和 ElButton 是 ElementUI 中的两个组件,用于提供上传按钮和触发导入事件的按钮。XLSX 则是一个用于处理 Excel 和 CSV 文件的 JavaScript 库,可以将 Excel 文件转换为 JSON 和其他格式。 接下来,我们需要在模板中添加以下代码: ```html <template> <div> <el-upload class="upload-excel" drag accept=".xlsx,.xls,.csv" :before-upload="beforeUpload" :on-success="onSuccess" :on-error="onError" > <i class="el-icon-upload"></i> <div class="el-upload__text">将文件拖到此处,或点击<em>上传</em></div> <div class="el-upload__tip">支持 .xlsx,.xls,.csv 格式</div> </el-upload> <el-button @click="importExcel">导入数据</el-button> </div> </template> ``` 上面的代码中,我们使用 ElUpload 组件创建了一个文件上传区域,允许拖放、点击上传、接受 Excel 和 CSV 文件,并分别绑定了 beforeUpload、onSuccess 和 onError 事件。同时,我们使用 ElButton 组件创建了一个触发导入事件的按钮。 在 script 中,我们需要添加以下代码来处理上传导入事件: ```javascript <script> export default { data() { return { excelData: [] // 导入Excel 数据 } }, methods: { beforeUpload(file) { // 校验文件类型和大小 }, onSuccess(response) { // 处理上传成功后的响应 // 读取 Excel 文件数据 const reader = new FileReader() reader.readAsBinaryString(response.file) reader.onload = (e) => { const data = e.target.result const workbook = XLSX.read(data, { type: 'binary' }) const worksheet = workbook.Sheets[workbook.SheetNames[0]] const jsonData = XLSX.utils.sheet_to_json(worksheet, { header: 1 }) this.excelData = jsonData } }, onError(error) { // 处理上传失败后的响应 }, importExcel() { // 处理导入 Excel 数据 console.log(this.excelData) } } } </script> ``` 在上面的代码中,我们使用 FileReader 对象将上传Excel 文件读取为二进制数据,并使用 XLSX.read 方法将其转换为 workbook 对象。然后,我们使用 XLSX.utils.sheet_to_json 方法将工作数据转换为 JSON 格式,并将其保存在 excelData 数组中。在导入按钮被点击的时候,我们可以使用 this.excelData 来处理所有的 Excel 数据。 综上所述,通过使用 ElementUI 中的 Excel 导入组件,我们可以轻松地将 Excel 数据导入Vue.js 应用程序中,并对其进行处理。同时,我们还可以使用其他的工具和库来扩展该功能,并根据实际需要进行多样化的配置和修改。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值