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学习网址备忘
May 29 Javascript
用javascript实现画板的代码
Sep 05 Javascript
javascript动态加载实现方法一
Aug 22 Javascript
javascript实现div的显示和隐藏的小例子
Jun 25 Javascript
JavaScript和CSS通过expression实现Table居中显示
Jun 28 Javascript
带左右箭头图片轮播的JS代码
Dec 18 Javascript
邮箱下拉自动填充选择示例代码附图
Apr 03 Javascript
js实现文本框选中的方法
May 26 Javascript
jquery实现表格中点击相应行变色功能效果【实例代码】
May 09 Javascript
jQuery实现的自定义滚动条实例详解
Sep 20 Javascript
详解Angular4中路由Router类的跳转navigate
Jun 09 Javascript
使用webpack5从0到1搭建一个react项目的实现步骤
Dec 16 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 开发环境配置(Zend Studio)
2010/04/28 PHP
php的crc32函数使用时需要注意的问题(不然就是坑)
2015/04/21 PHP
PHP计算日期相差天数实例分析
2016/02/23 PHP
prototype 的说明 js类
2006/09/07 Javascript
实现复选框全选/全不选切换
2006/12/23 Javascript
js 刷新页面的代码小结 推荐
2010/04/02 Javascript
判断用户是否在线的代码
2011/03/05 Javascript
jQuery 版元素拖拽原型代码
2011/04/25 Javascript
javascript学习笔记(五) Array 数组类型介绍
2012/06/19 Javascript
jQuery选择器源码解读(四):tokenize方法的Expr.preFilter
2015/03/31 Javascript
jQuery插件slicebox实现3D动画图片轮播切换特效
2015/04/12 Javascript
js实现浏览本地文件并显示扩展名的方法
2015/08/17 Javascript
js实现随屏幕滚动的带缓冲效果的右下角广告代码
2015/09/04 Javascript
JavaScript如何实现组合列表框中元素移动效果
2016/03/01 Javascript
Bootstrap table分页问题汇总
2016/05/30 Javascript
BootStrap Table后台分页时前台删除最后一页所有数据refresh刷新后无数据问题
2016/12/28 Javascript
Javascript 对cookie操作详解及实例
2016/12/29 Javascript
Rollup处理并打包JS文件项目实例代码
2018/05/31 Javascript
vue-cli3 karma单元测试的实现
2019/01/18 Javascript
[03:42]2016国际邀请赛中国区预选赛首日现场玩家采访
2016/06/26 DOTA
Python调用C语言开发的共享库方法实例
2015/03/18 Python
Python获取文件所在目录和文件名的方法
2017/01/12 Python
Python面向对象之静态属性、类方法与静态方法分析
2018/08/24 Python
Python 实现自动获取种子磁力链接方式
2020/01/16 Python
基于python调用jenkins-cli实现快速发布
2020/08/14 Python
python 读取yaml文件的两种方法(在unittest中使用)
2020/12/01 Python
使用CSS3制作饼状旋转载入效果的实例
2015/06/23 HTML / CSS
英国综合网上购物商城:The Hut
2018/07/03 全球购物
美国修容界大佬创建的个人美妆品牌:Kevyn Aucoin Beauty
2018/12/12 全球购物
高中生活自我鉴定
2014/01/18 职场文书
文明寝室申报材料
2014/05/12 职场文书
建设投标担保书
2014/05/13 职场文书
经营场所证明范本
2015/06/19 职场文书
如何写好竞聘报告
2019/04/03 职场文书
Elasticsearch Recovery 详细介绍
2022/04/19 Java/Android
阿里云ECS云服务器快照的概念以及如何使用
2022/04/21 Servers