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 相关文章推荐
让textarea控件的滚动条怎是位与最下方
Apr 20 Javascript
详谈 Jquery Ajax异步处理Json数据.
Sep 09 Javascript
js hover 定时器(实例代码)
Nov 12 Javascript
jquery实现html页面 div 假分页有原理有代码
Sep 06 Javascript
jquery实现鼠标拖拽滑动效果来选择数字的方法
May 04 Javascript
js获取滚动距离的方法
May 30 Javascript
Javascript对象Clone实例分析
Jun 09 Javascript
jQuery中$.extend()用法实例
Jun 24 Javascript
JavaScript判断表单为空及获取焦点的方法
Feb 12 Javascript
浅谈jQuery双事件多重加载的问题
Oct 05 Javascript
KVM虚拟化技术之使用Qemu-kvm创建和管理虚拟机的方法
Oct 05 Javascript
JS+html5 canvas实现的简单绘制折线图效果示例
Mar 13 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
Win9x/ME下Apache+PHP安装配置
2006/10/09 PHP
PHP5.2中date()函数显示时间与北京时间相差8小时的解决办法
2009/05/28 PHP
PHP时间类完整实例(非常实用)
2015/12/25 PHP
Laravel使用memcached缓存对文章增删改查进行优化的方法
2016/10/08 PHP
PHP5.5新特性之yield理解与用法实例分析
2019/01/11 PHP
Laravel框架实现多个视图共享相同数据的方法详解
2019/07/09 PHP
laravel 解决多库下的DB::transaction()事务失效问题
2019/10/21 PHP
fix-ie5.js扩展在IE5下不能使用的几个方法
2007/08/20 Javascript
JavaScript Sort 表格排序
2009/10/31 Javascript
javascript读写json示例
2014/04/11 Javascript
node.js中的fs.chown方法使用说明
2014/12/16 Javascript
关于javascript中dataset的问题小结
2015/11/16 Javascript
Jq通过td获取同行其它列td的方法
2016/10/05 Javascript
AngularJS的依赖注入实例分析(使用module和injector)
2017/01/19 Javascript
详解Angular调试技巧之报错404(not found)
2018/01/31 Javascript
Vue实现点击时间获取时间段查询功能
2020/08/21 Javascript
js实现图片区域可点击大小随意改变(适用移动端)代码实例
2019/09/11 Javascript
vue自定义指令和动态路由实现权限控制
2020/08/28 Javascript
python 中的列表解析和生成表达式
2011/03/10 Python
python Django批量导入数据
2016/03/25 Python
Python实现将doc转化pdf格式文档的方法
2018/01/19 Python
python 连接各类主流数据库的实例代码
2018/01/30 Python
Python实用技巧之列表、字典、集合中根据条件筛选数据详解
2018/07/11 Python
Python爬取qq空间说说的实例代码
2018/08/17 Python
python中的tcp示例详解
2018/12/09 Python
python 定时器,实现每天凌晨3点执行的方法
2019/02/20 Python
Python学习笔记之函数的定义和作用域实例详解
2019/08/13 Python
Python 实现Serial 与STM32J进行串口通讯
2019/12/18 Python
Python坐标轴操作及设置代码实例
2020/06/04 Python
python 对象真假值的实例(哪些视为False)
2020/12/11 Python
爱尔兰电子产品购物网站:Komplett.ie
2018/04/04 全球购物
彩色的翅膀教学反思
2014/04/25 职场文书
工资证明范本
2015/06/12 职场文书
canvas多重阴影发光效果实现
2021/04/20 Javascript
AngularJS实现多级下拉框
2022/03/25 Javascript
【TED出品】天梯非主流开心游1700 划水骑士
2022/03/31 魔兽争霸