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 相关文章推荐
javascript不可用的问题探究
Oct 01 Javascript
js加减乘除丢失精度问题解决方法
May 16 Javascript
IE下通过a实现location.href 获取referer的值
Sep 04 Javascript
JavaScript实现的简单幂函数实例
Apr 17 Javascript
JavaScript变量的作用域全解析
Aug 14 Javascript
jquery实现滑屏大图定时收缩为小banner图片的广告代码
Sep 02 Javascript
javascript常用函数(2)
Nov 05 Javascript
Jquery组件easyUi实现选项卡切换示例
Aug 23 Javascript
JS中对数组元素进行增删改移的方法总结
Dec 15 Javascript
vue实现表格增删改查效果的实例代码
Jul 18 Javascript
小程序:授权、登录、session_key、unionId的详解
May 15 Javascript
Vue2.x通用编辑组件的封装及应用详解
May 28 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设计模式 Mediator (中介者模式)
2011/06/26 PHP
基于php实现长连接的方法与注意事项的问题
2013/05/10 PHP
php jq jquery getJSON跨域提交数据完整版
2013/09/13 PHP
PHP在引号前面添加反斜杠(PHP去除反斜杠)
2013/09/28 PHP
PHP根据树的前序遍历和中序遍历构造树并输出后序遍历的方法
2017/11/10 PHP
Smarty缓存机制实例详解【三种缓存方式】
2019/07/20 PHP
在TP5数据库中四个字段实现无限分类的示例
2019/10/18 PHP
按给定几率进行随机抽取的js代码
2010/12/28 Javascript
小米公司JavaScript面试题
2014/12/29 Javascript
JS实现网页Div层Clone拖拽效果
2015/09/26 Javascript
通过正则表达式获取url中参数的简单实现
2016/06/07 Javascript
浅谈js script标签中的预解析
2016/12/30 Javascript
使用JavaScript触发过渡效果的方法
2017/01/19 Javascript
jQuery实现日历效果
2020/09/11 jQuery
[46:55]完美世界DOTA2联赛决赛 FTD vs Phoenix 第三场 11.08
2020/11/11 DOTA
python编程嵌套函数实例代码
2018/02/11 Python
python opencv3实现人脸识别(windows)
2018/05/25 Python
python人民币小写转大写辅助工具
2018/06/20 Python
python去除文件中重复的行实例
2018/06/29 Python
python将控制台输出保存至文件的方法
2019/01/07 Python
python如何给字典的键对应的值为字典项的字典赋值
2019/07/05 Python
Python写捕鱼达人的游戏实现
2020/03/31 Python
Jupyter notebook 远程配置及SSL加密教程
2020/04/14 Python
文秘专业应届生求职信范文
2013/11/14 职场文书
大二学期个人自我评价
2014/01/13 职场文书
装饰活动策划方案
2014/02/11 职场文书
秸秆管理实施方案
2014/03/15 职场文书
毕业生求职自荐书范文
2014/03/27 职场文书
合伙经营协议书
2014/04/18 职场文书
服务标兵事迹材料
2014/05/04 职场文书
教师廉洁自律承诺书
2014/05/26 职场文书
计算机毕业生求职信
2014/06/10 职场文书
绿色环保口号
2014/06/12 职场文书
2015年妇联工作总结范文
2015/04/22 职场文书
机关干部纪律作风整顿心得体会
2016/01/23 职场文书
MySQL解决Navicat设置默认字符串时的报错问题
2022/06/16 MySQL