vue js xlsx 读取 本地 excel

最近在写一个人力资源管理系统,主要目的是将本地的excel文件读取解析,将有效数据传到后台。

下文介绍流程,文末附有参考文章。

1、安装npm包xlsx

yarn add xlsx

2、结合上传组件和自己写的读取方法readXLSX,可以进行本地excel读取。
我使用的语言是vue,代码如下:

<template><div><Upload action="" :before-upload="beforeUpload"><Button icon="ios-cloud-upload-outline">上传Excel文件</Button></Upload></div>
</template>
<script>
import XLSX from 'xlsx'
function readXLSX (file) {let nameSplit = file.name.split('.')let format = nameSplit[nameSplit.length - 1]if (!['xlsx', 'csv'].includes(format)) {return false}return new Promise((resolve, reject) => {let reader = new FileReader()reader.readAsBinaryString(file)reader.onload = function (evt) {let data = evt.target.result // 读到的数据var workbook = XLSX.read(data, { type: 'binary' })resolve(workbook)}})
}
export default {methods: {async beforeUpload (file) {const workbook = await readXLSX(file)console.log(workbook)return false}}
}
</script>

3、其实问题的难点不在于读取,而在于需要理解workbook中对象的含义。

下面结合具体实例进行分析。

我需要读取的excel文件如下

console.log(workbook)打印出内容如下

SheetNames保存了所有的sheet名字
Sheets保存具体内容
2° 每一个sheet是通过类似A1这样的键值保存每个单元格的内容。称为单元格对象(Cell Object)
3° 每一个单元格是一个对象(Cell Object),主要有t、v、r、h、w等字段。
详情官方文档 https://github.com/SheetJS/js-xlsx#cell-object

  • t:表示内容类型,s表示string类型,n表示number类型,b表示boolean类型,d表示date类型,等等
  • v:表示原始值;
  • f:表示公式,如A2+A3
  • h:HTML内容
  • w:格式化后的内容
  • r:富文本内容 rich text
    !ref确定excel的范围
    !merges确定单元格合并

参考文章:https://www.cnblogs.com/liuxianan/p/js-excel.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/415319.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Android 上下滚动字幕实现

首先values文件夹下添加或创建attrs文件&#xff0c;如下&#xff1a; <?xml version"1.0" encoding"utf-8"?> <resources><!--//垂直滚动字幕--><declare-styleable name"VerticalRollingTextView"><!--文字颜色-…

mongoose获取最高分

我的需求&#xff1a;获取所有成绩中的最高分。 方法&#xff1a;根据分数倒序&#xff0c;查询第一个。 const topScore await Score.find().sort({ score: -1 }).skip(0).limit(1);

工作163:eachrt修改

<template><div><el-card><el-card><time-selects GetTime"GetTime"></time-selects><!--第一步 页面--><div id"main" :style"{ width: 1000px, height: 300px }"></div><div id&quo…

Android 使用ViewPager实现view轮播效果,单个item分页样式,多个item分页样式,横向listview

效果 单个item样式 多个item样式 横向item 自定义viewpager——可开关切换动画 public class NoAnimationViewPager extends ViewPager {public NoAnimationViewPager(Context context) {super(context);}public NoAnimationViewPager(Context context, AttributeSet attrs) …

高德地图开发 怎么去除城市信息

主要通过设置features&#xff0c;里面不要填写point&#xff0c;代表标注即可。 mapConfig {zoom: 17,cityName: MapCityName,pitch: 25,viewMode: 3D,features: [bg, road, building]}官方参考文档&#xff1a;https://lbs.amap.com/api/javascript-api/example/personaliz…

工作164:对父和混入的理解

1点击按钮看编辑事件 2点击编辑之后 对当前页面的方法进行调用 3找到子组件下面的混入方法 create下面引入混入 4找到子组件混入下面的混入方法 5找到下面的getlist方法

Minimum supported Gradle version is 4.1. Current version is 4.0.

Android studio 项目无法编译&#xff0c;报错如下&#xff1a; Minimum supported Gradle version is 4.1. Current version is 4.0. Please fix the projects Gradle settings. Gradle settings 解决方法&#xff1a; 项目build.gradle下 classpath com.android.tools.…

ubuntu16.04 安装caffe以及python接口

http://blog.csdn.net/qq_25073253/article/details/72571714http://blog.csdn.net/greed7480/article/details/68486039 首先在你要安装的路径下 clone &#xff1a;git clone https://github.com/BVLC/caffe.git 进入 caffe &#xff0c;将 Makefile.config.example 文件复制…

mongodb $ifNull

$ifNull用于判断第一个表达式是否为 NULL&#xff0c;如果为 NULL 则返回第二个参数的值&#xff0c;如果不为 NULL 则返回第一个参数的值。 $ifNull表达式格式为&#xff1a; { $ifNull: [ <expression>, <replacement-expression-if-null> ] }例子&#xff1a;…

Failed to resolve: android.arch.lifecycle:runtime:1.0.0,Failed to resolve: support-v4

Android studio 导入项目报错&#xff1a; Failed to resolve: com.android.support:support-core-ui:26.1.0 Add Google Maven repository and sync project Open File Show in Project Structure dialog Failed to resolve: android.arch.lifecycle:runtime:1.0.0 Open Fil…

工作165:混入调用的时候

直接created里面定义 不需要在其他位置进行过多操作

Hibernate总结

1.为什么要使用Hibernate开发你的项目呢&#xff1f;Hibernate的开发流程是怎么样的&#xff1f; 为什么要使用①.对JDBC访问数据库的代码做了封装&#xff0c;大大简化了数据访问层繁琐的重复性代码。②.Hibernate 是一个基于JDBC的主流持久化框架&#xff0c;是一个优秀的ORM…

mpvue 中控制swiper滑动,禁止滑动,只允许左滑动,不允许右滑

直接禁止滑动&#xff0c;使用&#xff1a;catchtouchmove参数就OK。 例子&#xff1a; <swiper-item v-for"(item,index) in examList" :key"index" catchtouchmove"false">content</swiper-item>但是我的需求是进行人员测评&…

工作166:错误的处理方式

1这种处理没有数据 2 这样处理勉强调用了接口 但是获取数据还是有问题

07异常处理

1、 【请尝试解释以下奇怪的现象&#xff01;】 int i1, j0, k; ki/j; 代码在运行时会引发异常 上边代码在运行时不会引发异常 浮点数除以0&#xff1a;Infinity 可以使用javap去反汇编两个示例程序的.class文件&#xff08;一个是AboutException.class&#xff0c;另一个是Thr…

java、Android 数组转集合

<array name"title"><item>51巅峰钜惠</item><item>十大星级品牌联盟&#xff0c;全场2折起</item><item>生命不是要超越别人&#xff0c;而是要超越自己。</item><item>己所不欲&#xff0c;勿施于人。——孔子<…

mac instantclient_12_2 安装配置

1、创建一个目录进行文件存放 mkdir oraclecd oracle2、instantclient_12_2文件拷贝到oracle目录下 3、拷贝重要文件到~/lib目录 mkdir ~/libln -s instantclient_12_2/libclntsh.dylib ~/lib/cp instantclient_12_2/{libclntsh.dylib.12.1,libnnz12.dylib,libociei.dylib} …

工作166:正确eachrt渲染方式

1第一步 2第二步 3第三步

Effective C++: 06继承与面向对象设计

32&#xff1a;确定你的public继承塑模出is-a关系 以C进行面向对象编程&#xff0c;最重要的一个规则是&#xff1a;public继承表示的是"is-a"&#xff08;是一种&#xff09;的关系。 如果令class D以public形式继承class B&#xff0c;你便是告诉编译器说&#xff…