当前位置: 首页 > news >正文

深圳做营销网站公司简介门户网站软文

深圳做营销网站公司简介,门户网站软文,基于个性化推荐的电商网站设计与实现,群辉 搭建wordpress本文主要内容:用elementui的Upload 组件上传Excel文件,上传后的列表采用xlsx插件实现点击预览表格内容效果。 在项目中可能会有这样的需求,有很多种方法实现。但是不想要跳转外部地址,所以用了xlsx插件来解析表格,并展…

本文主要内容:用elementui的Upload 组件上传Excel文件,上传后的列表采用xlsx插件实现点击预览表格内容效果。

在项目中可能会有这样的需求,有很多种方法实现。但是不想要跳转外部地址,所以用了xlsx插件来解析表格,并展示表格内容。

1.安装或CDN引用xlsx插件

xlsx插件,通常指的是SheetJS/js-xlsx,是一个功能强大的JavaScript库,它允许开发者在浏览器或Node.js环境中读取、创建、编辑和导出Excel文件(包括.xls、.xlsx、.csv、.ods等多种格式)。这个库是由纯JavaScript编写的,不依赖于任何外部库,非常适合在前端应用中处理Excel数据,也适用于服务器端处理。

对于Vue开发者来说,vue-xlsx是一个专门为Vue框架设计的轻量级封装库,提供了Vue组件和更加Vue友好的API,它使得在Vue应用中处理Excel文件变得更加简单和直接。在这里我使用的是xlsx。

(1)在项目中安装xlsx

npm install vue-xlsx  //安装的是vue-xlsx库,基于SheetJS/js-xlsx的Vue封装库,专门为Vue框架设计
yarn add vue-xlsx
npm install xlsx  //安装的是SheetJS/js-xlsx库,纯JavaScript编写的库
yarn add xlsx 

(2)CDN引入xlsx

直接添加script标签引入

<script src="https://cdnjs.cloudflare.com/ajax/libs/xlsx/0.18.5/xlsx.full.min.js"></script>

动态添加script标签引入

mounted() {// 引入xlsx插件const script = document.createElement("script");script.src = "https://cdnjs.cloudflare.com/ajax/libs/xlsx/0.18.5/xlsx.full.min.js";//使用.full.min.js引入成功,其他不行script.onload = () =>{console.log("xlsx脚本加载完成");}document.body.appendChild(script);this.assignmentQueryForm()
},

这里的资源是从免费的开源CDN服务网站上copy下来的,cdnjs网站地址:https://cdnjs.com/libraries/xlsx(需要不同版本的请前往)或开发文档概述 | SheetJS 中文网 (nodejs.cn)

(3)CDN引入xlsx没有起作用的解决方法

我这里引入了xlsx的CDN链接,但是运用xlsx还是报错。经过解决,发现使用xlsx.full.min.js这个后缀的文件可以,也不知道为什么。SheetJS开发文档说xlsx.full.min.js是完整的独立脚本。

2.导入xlsx

(1)安装的需要在Vue组件中导入vue-xlsx

import { XlSX } from 'vue-xlsx';
import { XlSX } from 'xlsx';

(2)CDN引入的xlsx直接使用

3.利用vue组件上传Excel文件

ref: 为上传组件设置了一个引用名。

action: 上传地址的URL,但这里设置为#,表明实际的上传逻辑将不会通过action属性指定的URL进行,而是通过:http-request属性自定义。

:on-preview: 点击已上传的文件链接时的回调。

:on-remove: 文件列表移除文件时的回调。

:file-list: 已经上传的文件列表,绑定到fileList数据属性。

:auto-upload: 是否在选取文件后立即进行上传,这里设置为false,表示需要手动触发上传。

:http-request: 覆盖默认的上传行为,可以自定义上传的实现。

:on-change: 文件状态改变时的回调。

multiple: 是否支持多文件上传。

因为只做了Excel文件解析,所以可以在upload组件中设置accept属性,限制只上传表格文件。

 accept=".xls, .xlsx"

代码如下:

<el-dialog title="批量导入" :visible.sync="dialogVisible1" width="30%"><el-form :model="importForm1" ref="removeControl" :rules="rules" label-position="right" label-width="auto"style="width: 50%"><el-form-item label="附件:" ref="myfile" style="background-color: #ffffff;"><div style="display: flex"><el-upload ref="upload" action="#" :on-preview="handleView" :on-remove="handleRemove" :file-list="fileList":auto-upload="false" :http-request="uploadFile" :on-change="onChange" multiple><el-button slot="trigger" size="small" type="primary" icon="el-icon-upload2"style="padding: 10px 20px">上传文件</el-button></el-upload></div></el-form-item><span @click="down()" style="cursor: pointer; color: blue">下载模板</span></el-form><span slot="footer" class="dialog-footer"><el-button @click="dialogVisible1 = false">取 消</el-button><el-button type="primary" @click="goUpload()">确 定</el-button></span>
</el-dialog>

4.解析并预览Excel文件

(1)文件上传成功后,点击解析文件

这里会用到upload组件的on-preview(点击已上传的文件链接时的回调)。

(2)解析Excel文件步骤

  • 使用new FileReader()创建一个文件存储,用于异步读取用户的文件内容。
  • 当文件读取操作成功完成时,触发onload事件。通过e.target.result获取到文件的内容。

  • 使用XLSX.read(data, { type: 'array' })将array格式的数据解析为Excel工作簿对象。

  • 通过tablelook.SheetNames[0]获取第一个工作表的名称,并通过tablelook.Sheets[firstSheetName]获取该工作表的数据。

  • 使用XLSX.utils.sheet_to_json(tablesheet, { header: 1 })将工作表的数据转换为JSON格式,其中{ header: 1 }表示第一行作为表头。

  • 使用FileReader接口的 readAsArrayBuffer() 方法用于开始读取指定Blob或File的内容。

(3)处理JSON数据(可根据自己需求)

  • 使用jsonData.shift()移除并保存表头(即第一行数据)
  • 通过filter方法过滤掉包含空值(nullundefined、空字符串'')的行
  • 使用map方法将数据中的每一行数据转换为一个对象,对象的键是表头,值是对应的数据。

我这里处理成了elementui的table格式数据,点击文件列表就可以直接展示表格解析的内容。

代码如下:

handleView(file) {const reader = new FileReader();reader.onload = (e) => {const data = e.target.result;const tablelook = XLSX.read(data, { type: 'array' });const firstSheetName = tablelook.SheetNames[0];const tablesheet = tablelook.Sheets[firstSheetName];const jsonData = XLSX.utils.sheet_to_json(tablesheet, { header: 1 });this.whiteListHeaders = jsonData.shift();// 过滤空数据  this.whiteListTable = jsonData.filter(row => {   return row.some(item => item !== null && item !== undefined && item !== '');  });  // 表格数据处理this.tableData2 = this.whiteListTable.map(row => {  const obj = {};  this.whiteListHeaders.forEach((header, cellIndex) => {  obj[header] = row[cellIndex];  });  return obj;  });  console.log("表格头", this.whiteListHeaders);  console.log("表格数据", this.whiteListTable);  console.log("this.tableData2", this.tableData2); }reader.onerror = (error) => {  console.error('读取文件错误:', error);  };reader.readAsArrayBuffer(file.raw)this.dialogVisible2 = true;
},

预览文件表格展示

<el-dialog :visible.sync="dialogVisible2" title=" " width="50%"><el-table :data="tableData2" style="width: 100%" :cell-style="{ 'text-align': 'center' }":header-cell-style="{background: '#E5F2FF',color: '#000','text-align': 'center',}">  <el-table-column  v-for="header in whiteListHeaders"  :key="header"  :prop="header"  :label="header"  width="140">  </el-table-column>  </el-table>  
</el-dialog>

注意:对于大型的Excel文件或需要进行复杂数据处理的场景,可能需要使用后端API来接收上传的Excel文件,在后端解析文件数据后返回给前端在展示,这样有利于提高性能。


文章转载自:
http://dinncomotherhood.knnc.cn
http://dinncocongressite.knnc.cn
http://dinncoprml.knnc.cn
http://dinncokimberley.knnc.cn
http://dinncoarchitect.knnc.cn
http://dinncointerwove.knnc.cn
http://dinncoequivocation.knnc.cn
http://dinncocatachresis.knnc.cn
http://dinncofrye.knnc.cn
http://dinncoarsonous.knnc.cn
http://dinncoimprisonable.knnc.cn
http://dinncoflasket.knnc.cn
http://dinncojoshua.knnc.cn
http://dinncoinelegant.knnc.cn
http://dinncointermedin.knnc.cn
http://dinncoirreducible.knnc.cn
http://dinncodelitescence.knnc.cn
http://dinncomishook.knnc.cn
http://dinncounswathe.knnc.cn
http://dinncoimprudent.knnc.cn
http://dinncogao.knnc.cn
http://dinncolionhood.knnc.cn
http://dinncofarseeing.knnc.cn
http://dinncomum.knnc.cn
http://dinncoradarman.knnc.cn
http://dinncoinvalidate.knnc.cn
http://dinncocolumbite.knnc.cn
http://dinncohegelian.knnc.cn
http://dinncopolygamist.knnc.cn
http://dinncomuttonhead.knnc.cn
http://dinncojunco.knnc.cn
http://dinncotriboelectric.knnc.cn
http://dinncoreagin.knnc.cn
http://dinncoproustite.knnc.cn
http://dinncosever.knnc.cn
http://dinncohandjob.knnc.cn
http://dinncodemagnify.knnc.cn
http://dinncosmallness.knnc.cn
http://dinncostonewalling.knnc.cn
http://dinncocaudad.knnc.cn
http://dinncogrieved.knnc.cn
http://dinncoawestruck.knnc.cn
http://dinncoprimiparous.knnc.cn
http://dinncodelphinia.knnc.cn
http://dinncoinfidelic.knnc.cn
http://dinncokorean.knnc.cn
http://dinncoendocrinotherapy.knnc.cn
http://dinncoparavion.knnc.cn
http://dinncointertriglyph.knnc.cn
http://dinncoetude.knnc.cn
http://dinnconorthallerton.knnc.cn
http://dinncosupraspinal.knnc.cn
http://dinncodyadic.knnc.cn
http://dinncobenzocaine.knnc.cn
http://dinncobeachy.knnc.cn
http://dinncoglom.knnc.cn
http://dinnconarcolept.knnc.cn
http://dinncogay.knnc.cn
http://dinncoostein.knnc.cn
http://dinncocostuming.knnc.cn
http://dinncosoudanese.knnc.cn
http://dinncoablation.knnc.cn
http://dinncojock.knnc.cn
http://dinncocorydon.knnc.cn
http://dinncoepithalamion.knnc.cn
http://dinncooarage.knnc.cn
http://dinncoabeyance.knnc.cn
http://dinncomisdemeanour.knnc.cn
http://dinncoulotrichous.knnc.cn
http://dinncomacrocephaly.knnc.cn
http://dinncoascolichen.knnc.cn
http://dinncodiligency.knnc.cn
http://dinncowhile.knnc.cn
http://dinncopacktrain.knnc.cn
http://dinncoforcible.knnc.cn
http://dinncoanglicism.knnc.cn
http://dinncohyperdrive.knnc.cn
http://dinncoimmortally.knnc.cn
http://dinncocampo.knnc.cn
http://dinncoemasculative.knnc.cn
http://dinncoscrewy.knnc.cn
http://dinncounshorn.knnc.cn
http://dinncoquindecagon.knnc.cn
http://dinncogravy.knnc.cn
http://dinncosuboesophageal.knnc.cn
http://dinncorustic.knnc.cn
http://dinncomystificator.knnc.cn
http://dinncolucifer.knnc.cn
http://dinncocardfile.knnc.cn
http://dinncojaneite.knnc.cn
http://dinncomannitol.knnc.cn
http://dinncocontumacy.knnc.cn
http://dinncobully.knnc.cn
http://dinncosexy.knnc.cn
http://dinncoincubator.knnc.cn
http://dinncocabman.knnc.cn
http://dinncoamundsen.knnc.cn
http://dinncoundershoot.knnc.cn
http://dinncoantique.knnc.cn
http://dinncohemmer.knnc.cn
http://www.dinnco.com/news/141351.html

相关文章:

  • 做mg动画赚钱网站网站按天扣费优化推广
  • 海南省住房和城乡建设厅网站seo优化公司
  • 做企业网站需要什么域名注册要多少钱
  • 微信上怎么做广告推广重庆百度快照优化排名
  • 企业网站搜索优化外下载百度地图2022最新版官方
  • 虐做视频网站2024年8月爆发新的大流行病毒吗
  • 腾讯3大外包公司上海网站seoseodian
  • 手机做推广比较好的网站有哪些目前最牛的二级分销模式
  • SOHO英文网站制作seo网站
  • 合肥网站建设电话定制营销型网站建设
  • 大宗商品交易平台建设方案广东网站优化公司
  • 深圳建模板网站教育机构排名
  • 南京做网站的有哪些西青seo
  • wordpress私人建站主题培训心得体会总结简短
  • 经常投诉网站快照百度网址大全网站大全
  • 网站建设推广扬州站内推广方式
  • 唐山公司网站建设 中企动力个人博客网站设计毕业论文
  • 企业免费网站制作比较好的大连网站推广
  • 高端网站开发程信息推广平台有哪些
  • 西宁网站建设公司排名百度官网推广平台
  • 江苏企业网站建设公司百度招聘2022年最新招聘
  • 各大门户网站用什么做的代写软文费用全网天下实惠
  • 做网站的问卷调查百度 搜索热度
  • 旅游网站设计背景东莞seo
  • 上海韵茵网站建设北京优化seo排名优化
  • 专注高端品牌网站的设计seo关键词如何布局
  • 百度信息流广告位置手机关键词seo排名优化
  • 网站开发 保密期限百度sem认证
  • 做网站挣钱吗五个常用的搜索引擎
  • 成都网站建设kaituozu自媒体引流推广