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 相关文章推荐
jQuery库与其他JS库冲突的解决办法
Feb 07 Javascript
js 数据类型转换总结笔记
Jan 17 Javascript
dreamweaver 安装Jquery智能提示
Apr 02 Javascript
jQuery 图片切换插件(代码比较少)
May 07 Javascript
jQuery中Dom的基本操作小结
Jan 23 Javascript
使用jQuery仿苹果官网焦点图特效
Dec 23 Javascript
编写高质量JavaScript代码的基本要点
Mar 02 Javascript
微信小程序异步API为Promise简化异步编程的操作方法
Aug 14 Javascript
Websocket 向指定用户发消息的方法
Jan 09 Javascript
vue中音频wavesurfer.js的使用方法
Feb 20 Vue.js
解决vue数据不实时更新的问题(数据更改了,但数据不实时更新)
Oct 27 Javascript
微信小程序将页面按钮悬浮固定在底部的实现代码
Oct 29 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
PHP备份/还原MySQL数据库的代码
2011/01/06 PHP
如何在Ubuntu下启动Apache的Rewrite功能
2013/07/05 PHP
php截取中文字符串不乱码的方法
2013/12/25 PHP
php判断并删除空目录及空子目录的方法
2015/02/11 PHP
php实现将数组或对象写入到文件的方法小结【三种方法】
2020/04/22 PHP
js 编写规范
2010/03/03 Javascript
在每个匹配元素的外部插入新元素的方法
2013/12/20 Javascript
js实现两点之间画线的方法
2015/05/12 Javascript
jquery+json实现分页效果
2016/03/07 Javascript
微信页面倒计时代码(解决safari不兼容date的问题)
2016/12/13 Javascript
echarts3 使用总结(绘制各种图表,地图)
2017/01/05 Javascript
js cookie实现记住密码功能
2017/01/17 Javascript
JavaScript箭头(arrow)函数详解
2017/06/04 Javascript
vue mint-ui 实现省市区街道4级联动示例(仿淘宝京东收货地址4级联动)
2017/10/16 Javascript
JS实现前端页面的搜索功能
2018/06/12 Javascript
小程序自定义组件实现城市选择功能
2018/07/18 Javascript
微信小程序dom操作的替代思路实例分析
2018/12/06 Javascript
Layui 数据表格批量删除和多条件搜索的实例
2019/09/04 Javascript
[01:07:19]2018DOTA2亚洲邀请赛 4.5 淘汰赛 Mineski vs VG 第一场
2018/04/06 DOTA
[04:00]黄浦江畔,再会英雄——完美世界DOTA2 TI9应援视频
2019/07/31 DOTA
python使用wmi模块获取windows下硬盘信息的方法
2015/05/15 Python
检测python爬虫时是否代理ip伪装成功的方法
2019/07/12 Python
Django 后台获取文件列表 InMemoryUploadedFile的例子
2019/08/07 Python
Python中if有多个条件处理方法
2020/02/26 Python
Keras:Unet网络实现多类语义分割方式
2020/06/11 Python
Python 将代码转换为可执行文件脱离python环境运行(步骤详解)
2021/01/25 Python
美国最大的半成品净菜电商:Blue Apron(蓝围裙)
2018/04/27 全球购物
前台文员我鉴定
2014/01/12 职场文书
九年级英语教学反思
2014/01/31 职场文书
幼儿园美术教学反思
2014/01/31 职场文书
幼儿园教师演讲稿
2014/05/06 职场文书
市场营销战略计划书
2014/05/06 职场文书
医学生求职自荐书
2014/06/12 职场文书
农村党支部书记司法四风问题对照检查材料
2014/09/26 职场文书
python plt.plot bar 如何设置绘图尺寸大小
2021/06/01 Python
Java 中的 Unsafe 魔法类的作用大全
2021/06/26 Java/Android