vue读取本地的excel文件并显示在网页上方法示例


Posted in Javascript onMay 29, 2019

我想实现读取一个本地的xlsx文件(task_list.xlsx)然后显示在网页上, 一开始选择的方法是建个express server, 通过发送axios请求来实现, 但是觉得只是读取一个本地文件还要搞个server太复杂了, 最终还是通过"xlsx"模块 + axios实现了读取本地文件, 无需后端, 步骤如下:

1.通过vue-cli新建项目:

vue读取本地的excel文件并显示在网页上方法示例

2.编写分析excel workbook的脚本

/src/scripts/read_xlsx.js

const XLSX = require('xlsx')

//将行,列转换
function transformSheets(sheets) {
 var content = []
 var content1 = []
 var tmplist = []
 for (let key in sheets){
  //读出来的workbook数据很难读,转换为json格式,参考https://github.com/SheetJS/js-xlsx#utility-functions
  tmplist.push(XLSX.utils.sheet_to_json(sheets[key]).length)
  content1.push(XLSX.utils.sheet_to_json(sheets[key]))
 }
 var maxLength = Math.max.apply(Math, tmplist)
 //进行行列转换
 for (let y in [...Array(maxLength)]){
  content.push([])
  for (let x in [...Array(tmplist.length)]) {
   try {
    for (let z in content1[x][y]){
     content[y].push(content1[x][y][z])
    }
   } catch (error) {
    content[y].push(' ')
   }
  }
 }
 content.unshift([])
 for (let key in sheets){
  content[0].push(key)
 }
 return content

}

export {transformSheets as default}

3.新建一个组件

/src/components/task_list.vue

<template>
 <div class="task-list">
  <p v-if="err!==''">{{err}}</p> <!-- 用来显示报错 -->
  <table style="margin:0 auto;" v-if="content!==''"> <!-- 设置居中,如果没获取到内容则不显示 -->
   <tr><th v-for="h in content[0]" :key="h.id">{{h}}</th></tr> <!-- 循环读取数据并显示 -->
   <tr v-for="row in content.slice(1,)" :key=row.id>
    <td v-for="item in row" :key=item.id>{{item}}</td>
   </tr>
  </table>
 </div>
</template>

<script>
import axios from 'axios'
import XLSX from 'xlsx'
import transformSheets from '../scripts/read_xlsx'  //导入转制函数

export default {
 name: 'TaskList',
 data: function () {
  return {
   content: '',  //初始化数据
   err: ''
  }
 },
 created() {
  var url = "/task_list.xlsx" //放在public目录下的文件可以直接访问
  
  //读取二进制excel文件,参考https://github.com/SheetJS/js-xlsx#utility-functions
  axios.get(url, {responseType:'arraybuffer'})
  .then((res) => {
    var data = new Uint8Array(res.data)
  var wb = XLSX.read(data, {type:"array"})
  var sheets = wb.Sheets
  this.content = transformSheets(sheets)
  }).catch( err =>{
   this.err = err
  })
 }
}

大功告成,编译然后部署到服务器吧

npm run build

部署就不详述了,把dist目录丢到服务器上就行.

vue读取本地的excel文件并显示在网页上方法示例

效果就是这样,编程新手,就这个东西断断续续搞了快一周了...

github地址 https://github.com/LeviDeng/task_list

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
img标签中onerror用法
Aug 13 Javascript
jQuery JSON的解析方式分享
Apr 05 Javascript
jquery用get实现ajax在ie里面刷新不进入后台解决方法
Aug 12 Javascript
connection reset by peer问题总结及解决方案
Oct 21 Javascript
node.js调用Chrome浏览器打开链接地址的方法
May 17 Javascript
Vue内容分发slot(全面解析)
Aug 19 Javascript
微信小程序表单弹窗实例
Jul 19 Javascript
jQuery 操作 HTML 元素和属性的方法
Nov 12 jQuery
关于自定义Egg.js的请求级别日志详解
Dec 12 Javascript
发布一款npm包帮助理解npm的使用
Jan 03 Javascript
如何实现js拖拽效果及原理解析
May 08 Javascript
详解React 条件渲染
Jul 08 Javascript
vue-cli3中vue.config.js配置教程详解
May 29 #Javascript
详解vue-cli3开发Chrome插件实践
May 29 #Javascript
vue里的data要用return返回的原因浅析
May 28 #Javascript
Vue+Element实现表格编辑、删除、以及新增行的最优方法
May 28 #Javascript
Javascript三种字符串连接方式及性能比较
May 28 #Javascript
vue+element实现表格新增、编辑、删除功能
May 28 #Javascript
Vue实现表格批量审核功能实例代码
May 28 #Javascript
You might like
phpcms模块开发之swfupload的使用介绍
2013/04/28 PHP
php绘制一个矩形的方法
2015/01/24 PHP
PHP抽奖算法程序代码分享
2015/10/08 PHP
PHP+Mysql+jQuery中国地图区域数据统计实例讲解
2015/10/10 PHP
PHP测试成功的邮件发送案例
2015/10/26 PHP
详解WordPress中提醒安装插件以及隐藏插件的功能实现
2015/12/25 PHP
Yii2 中实现单点登录的方法
2018/03/09 PHP
javascript 动态参数判空操作
2008/12/22 Javascript
JS 事件绑定函数代码
2010/04/28 Javascript
动态获取复选框checkbox选中个数的jquery代码
2013/06/25 Javascript
JavaScript中的apply和call函数详解
2014/07/20 Javascript
jQuery 实现评论等级好评差评特效
2016/05/06 Javascript
PassWord输入框代码分享
2016/06/07 Javascript
js中获取键盘事件的简单实现方法
2016/10/10 Javascript
Javascript中字符串replace方法的第二个参数探究
2016/12/05 Javascript
js轮播图无缝滚动效果
2017/06/17 Javascript
JavaScript中错误正确处理方式小结你用对了吗
2017/10/10 Javascript
uni app仿微信顶部导航条功能
2019/09/17 Javascript
JS实现放烟花效果
2020/03/10 Javascript
[48:54]VGJ.T vs infamous Supermajor小组赛D组败者组第一轮 BO3 第二场 6.3
2018/06/04 DOTA
Python Logging 日志记录入门学习
2018/06/02 Python
python模拟哔哩哔哩滑块登入验证的实现
2020/04/24 Python
python实现scrapy爬虫每天定时抓取数据的示例代码
2021/01/27 Python
后勤自我鉴定
2013/10/13 职场文书
物流仓管员工作职责
2014/01/06 职场文书
社会实践评语
2014/04/28 职场文书
宪法宣传周工作方案
2014/05/26 职场文书
2014年销售部工作总结
2014/12/01 职场文书
2014年生产部工作总结
2014/12/17 职场文书
受资助学生感谢信
2015/01/21 职场文书
教师节大会主持词
2015/07/06 职场文书
新闻稿标题
2015/07/18 职场文书
2016年母亲节广告语
2016/01/28 职场文书
MySQL中varchar和char类型的区别
2021/11/17 MySQL
win server2012 r2服务器共享文件夹如何设置
2022/06/21 Servers
浅谈音视频 pts dts基本概念及理解
2022/08/05 数码科技