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 ui 1.7更新小结
Aug 15 Javascript
JS替换文本域内的回车示例
Feb 18 Javascript
js操作IE浏览器弹出浏览文件夹可以返回目录路径
Jul 14 Javascript
node.js中的url.resolve方法使用说明
Dec 10 Javascript
chrome不支持form.submit的解决方案
Apr 28 Javascript
JS实现带缓冲效果打开、关闭、移动一个层的方法
May 09 Javascript
EasyUI在表单提交之前进行验证的实例代码
Jun 24 Javascript
微信小程序  自定义创建详细介绍
Oct 27 Javascript
JS访问DOM节点方法详解
Nov 29 Javascript
微信小程序实现给嵌套template模板传递数据的方式总结
Dec 18 Javascript
解决vue中使用Axios调用接口时出现的ie数据处理问题
Aug 13 Javascript
在vue中使用Base64转码的案例
Aug 07 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 Sql Server连接失败问题及解决办法
2009/08/07 PHP
php中mysql连接方式PDO使用详解
2015/02/25 PHP
php实现将任意进制数转换成10进制的方法
2015/04/17 PHP
PHP中把有符号整型转换为无符号整型方法
2015/05/27 PHP
PHP中spl_autoload_register()函数用法实例详解
2016/07/18 PHP
thinkphp 中的volist标签在ajax操作中的特殊性(推荐)
2018/01/15 PHP
php无限级评论嵌套实现代码
2018/04/18 PHP
简短几句 通俗解释javascript的闭包
2011/01/17 Javascript
MyEclipse取消验证Js的两种方法
2013/11/14 Javascript
JS cookie中文乱码解决方法
2014/01/28 Javascript
js处理php输出时间戳对不上号的解决方法
2014/06/20 Javascript
基于JS2Image实现圣诞树代码
2015/12/24 Javascript
实例代码详解javascript实现窗口抖动及qq窗口抖动
2016/01/04 Javascript
jQuery ajax提交Form表单实例(附demo源码)
2016/04/06 Javascript
iview给radio按钮组件加点击事件的实例
2017/09/30 Javascript
jQuery实现滚动到底部时自动加载更多的方法示例
2018/02/18 jQuery
原生js实现公告滚动效果
2021/01/10 Javascript
解决layui-open关闭自身窗口的问题
2019/09/10 Javascript
vue 实现走马灯效果
2019/10/28 Javascript
vue + elementUI实现省市县三级联动的方法示例
2019/10/29 Javascript
小程序实现可拖动的悬浮按钮
2020/09/07 Javascript
Django框架中render_to_response()函数的使用方法
2015/07/16 Python
Linux RedHat下安装Python2.7开发环境
2017/05/20 Python
python实时监控cpu小工具
2018/06/21 Python
python文本数据处理学习笔记详解
2019/06/17 Python
Pandas时间序列:重采样及频率转换方式
2019/12/26 Python
Python 写了个新型冠状病毒疫情传播模拟程序
2020/02/14 Python
英国最受欢迎的母婴精品品牌:JoJo Maman BéBé
2021/02/17 全球购物
大学新生军训个人的自我评价
2013/10/03 职场文书
工艺员岗位职责
2014/02/11 职场文书
竞聘书格式及范文
2014/03/31 职场文书
2014年重阳节老干部座谈会上的讲话稿
2014/09/25 职场文书
2014年幼儿园教学工作总结
2014/12/04 职场文书
幼儿园学前班幼儿评语
2014/12/29 职场文书
陪护人员误工证明
2015/06/24 职场文书
一篇文章带你搞懂Python类的相关知识
2021/05/20 Python