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获取URL参数与参数值的示例代码
Dec 20 Javascript
jQuery弹出层插件Lightbox_me使用指南
Apr 21 Javascript
纯js代码实现未知宽高的元素在指定元素中垂直水平居中显示
Sep 12 Javascript
Bootstrap所支持的表单控件实例详解
May 16 Javascript
微信小程序教程系列之设置标题栏和导航栏(7)
Jun 29 Javascript
JS给按钮添加跳转功能类似a标签
May 30 Javascript
JavaScript严格模式下关于this的几种指向详解
Jul 12 Javascript
promise处理多个相互依赖的异步请求(实例讲解)
Aug 03 Javascript
Vue组件之Tooltip的示例代码
Oct 18 Javascript
Vuex的初探与实战小结
Nov 26 Javascript
Vue scrollBehavior 滚动行为实现后退页面显示在上次浏览的位置
May 27 Javascript
uni-app 支持多端第三方地图定位的方法
Jan 03 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
PHP5中MVC结构学习
2006/10/09 PHP
apache2.2.4+mysql5.0.77+php5.2.8安装精简
2009/04/29 PHP
php安全配置 如何配置使其更安全
2011/12/16 PHP
CentOS 6.2使用yum安装LAMP以及phpMyadmin详解
2013/06/17 PHP
WordPress特定文章对搜索引擎隐藏或只允许搜索引擎查看
2015/12/31 PHP
Laravel框架中VerifyCsrfToken报错问题的解决
2017/08/30 PHP
PHP中使用CURL发送get/post请求上传图片批处理功能
2018/10/15 PHP
PHP getDocNamespaces()函数讲解
2019/02/03 PHP
javascript 带有滚动条的表格,标题固定,带排序功能.
2009/11/13 Javascript
juqery 学习之三 选择器 简单 内容
2010/11/25 Javascript
javascript+HTML5的canvas实现七夕情人节3D玫瑰花效果代码
2015/08/04 Javascript
JavaScript 对象详细整理总结
2016/09/29 Javascript
ajax请求+vue.js渲染+页面加载的示例
2018/02/11 Javascript
AngularJS 前台分页实现的示例代码
2018/06/07 Javascript
JavaScript数组去重的方法总结【12种方法,号称史上最全】
2019/02/28 Javascript
vue实现登录拦截
2020/06/29 Javascript
[02:08]DOTA2英雄基础教程 马格纳斯
2014/01/17 DOTA
Python生成随机数的方法
2014/01/14 Python
Python使用openpyxl读写excel文件的方法
2017/06/30 Python
python 把文件中的每一行以数组的元素放入数组中的方法
2018/04/29 Python
python聚类算法解决方案(rest接口/mpp数据库/json数据/下载图片及数据)
2019/08/28 Python
基于Python实现船舶的MMSI的获取(推荐)
2019/10/21 Python
Python解释器以及PyCharm的安装教程图文详解
2020/02/26 Python
使用keras根据层名称来初始化网络
2020/05/21 Python
学python最电脑配置有要求么
2020/07/05 Python
Python编写单元测试代码实例
2020/09/10 Python
python 视频下载神器(you-get)的具体使用
2021/01/06 Python
拉斯维加斯酒店、演出、旅游、俱乐部及更多:Vegas.com
2019/02/28 全球购物
德国帽子专家:Hutshopping
2019/11/03 全球购物
巴西购物网站:Submarino
2020/01/19 全球购物
店长岗位职责
2013/11/21 职场文书
计算机专业毕业生自我鉴定
2014/01/16 职场文书
初三毕业评语
2014/12/26 职场文书
表扬稿格式范文
2015/01/16 职场文书
六五普法心得体会2016
2016/01/21 职场文书
springboot如何初始化执行sql语句
2021/06/22 Java/Android