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同步Import,同步调用外部js的方法
Jul 08 Javascript
javascript hasFocus使用实例
Jun 29 Javascript
js内置对象 学习笔记
Aug 01 Javascript
原生js实现给指定元素的后面追加内容
Apr 10 Javascript
Extjs4 GridPanel 的几种样式使用介绍
Apr 18 Javascript
Javascript高级技巧分享
Feb 25 Javascript
jQuery函数的第二个参数获取指定上下文中的DOM元素
May 19 Javascript
jquery动态分页效果堪比时光网
Sep 25 Javascript
JavaScript设计模式之策略模式实例
Oct 10 Javascript
JS数组操作之增删改查的简单实现
Aug 21 Javascript
JS实现方形抽奖效果
Aug 27 Javascript
vue+spring boot实现校验码功能
May 27 Vue.js
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之Smarty入门
2007/01/04 PHP
教你如何在CI框架中使用 .htaccess 隐藏url中index.php
2014/06/09 PHP
PHP将session信息存储到数据库的类实例
2015/03/04 PHP
配置Nginx+PHP的正确思路与过程
2016/05/10 PHP
PHP基于堆栈实现的高级计算器功能示例
2017/09/15 PHP
如何在Laravel5.8中正确地应用Repository设计模式
2019/11/26 PHP
Javascript remove 自定义数组删除方法
2009/10/20 Javascript
select 控制网页内容隐藏于显示的实现代码
2010/05/25 Javascript
JS 获取浏览器和屏幕宽高等信息的实现思路及代码
2013/07/31 Javascript
js实现连续英文字符自动换行兼容ie6 ie7和firefox
2013/09/06 Javascript
用于deeplink的js方法(判断手机是否安装app)
2014/04/02 Javascript
JavaScript严格模式禁用With语句的原因
2014/10/20 Javascript
nodejs创建web服务器之hello world程序
2015/08/20 NodeJs
jquery.serialize() 函数语法及简单实例
2016/07/08 Javascript
AngularJS自定义插件实现网站用户引导功能示例
2016/11/07 Javascript
Javascript 使用ajax与C#获取文件大小实例详解
2017/01/13 Javascript
BootStrap表单控件之复选框checkbox和单选择按钮radio
2017/05/23 Javascript
vue iview实现动态路由和权限验证功能
2018/04/17 Javascript
Vue2.0实现调用摄像头进行拍照功能 exif.js实现图片上传功能
2018/04/28 Javascript
详解基于DllPlugin和DllReferencePlugin的webpack构建优化
2018/06/28 Javascript
JS实现面向对象继承的5种方式分析
2018/07/21 Javascript
JS实现textarea通过换行或者回车把多行数字分割成数组并且去掉数组中空的值
2018/10/29 Javascript
详解微信小程序之一键复制到剪切板
2019/04/24 Javascript
微信小程序云开发之云函数详解
2019/05/16 Javascript
js实现树形数据转成扁平数据的方法示例
2020/02/27 Javascript
JS使用for in有序获取对象数据
2020/05/19 Javascript
Openlayers实现距离面积测量
2020/09/28 Javascript
python实现汉诺塔递归算法经典案例
2021/03/01 Python
利用Python批量生成任意尺寸的图片
2016/08/29 Python
python GUI库图形界面开发之PyQt5滚动条控件QScrollBar详细使用方法与实例
2020/03/06 Python
Python csv文件记录流程代码解析
2020/07/16 Python
CSS3实现滚动条动画效果代码分享
2016/08/03 HTML / CSS
体育教师求职信
2014/06/30 职场文书
个性发展自我评价2015
2015/03/09 职场文书
python调试工具Birdseye的使用教程
2021/05/25 Python
MySQL 执行数据库更新update操作的时候数据库卡死了
2022/05/02 MySQL