node koa解析excel表格数据

  • 使用到的插件
    • co-busboy
    • xlsx
    • 安装完成之后,下面开始我们的搬运代码工作

使用到的插件

co-busboy

  1. 作用
    用于node koa1 解析流文件
  2. 安装
    npm i co-busboy -save

xlsx

  1. 作用
    解析excel文件,这里只收录如何解析excel文件,得到里面的数据
  2. 安装
    npm i xlsx --save

安装完成之后,下面开始我们的搬运代码工作

一、接收流文件

// 引入中间件co-busboy
var parse = require('co-busboy');
// 前端上传使用的是formData格式传流文件,this
let file =yield parse(this)

二、解析excel
有两种解析方式,一种是直接解析流文件一种是将流存于本地,解析存储的本地文件
(1)直接解析流文件(接收流+解析流)

const xlsx = require('xlsx');
var parse = require('co-busboy');
function* batchInsertNbtsEntrustRecord() {let file =yield parse(this);const workbook = yield getFile(file); //解析excelconst sheetNames = workbook.SheetNames; // 返回 ['sheet1', ...]const datas = [];for (const sheetName of sheetNames) {const worksheet = workbook.Sheets[sheetName];const data = xlsx.utils.sheet_to_json(worksheet);//生成一个对象数组datas.push(data);//datas就是我们解析出来的一个数组对象,数据格式[[sheet1],[sheet2],[sheet3]]}}// 封装一个解析函数,stream是前端上传的一个文件流
function getFile(stream) {return new Promise(function (result) {var buffers = [];stream.on('data', function(data) { buffers.push(data); });stream.on('end', function() {var buffer = Buffer.concat(buffers);var workbook = xlsx.read(buffer, {type:"buffer"});result(workbook);});});
}

(2)将流存于本地,解析存储的本地文件(接收流+解析流)

var parse = require('co-busboy');
const xlsx = require('xlsx');
const fs = require('fs');
const path = require('path');
const downPath = path.resolve(__dirname, '../../fileUpload');//会将流文件存储在fileUpload文件夹里面
function* batchInsertNbtsEntrustRecord() {const file = yield parse(this); // file 上传的只读流const reader = fs.createReadStream(file); // 创建可读流const ext = file.filename.split('.').pop(); // 获取上传文件扩展名const filePath = `${downPath}/${file.filename}.${ext}`;const upStream = fs.createWriteStream(filePath); // 创建可写流const getRes = yield getFile(reader, upStream); //等待数据存储完成const datas = []; //可能存在多个sheet的情况if (!getRes) { //存储没有问题const workbook = xlsx.readFile(filePath);//解析excelconst sheetNames = workbook.SheetNames; // 返回 ['sheet1', ...]for (const sheetName of sheetNames) {const worksheet = workbook.Sheets[sheetName];const data = xlsx.utils.sheet_to_json(worksheet);datas.push(data);}
}// 封装一个解析函数,stream是前端上传的一个文件流
function getFile (reader, upStream) {return new Promise(function (result) {let stream = reader.pipe(upStream); // 可读流通过管道写入可写流stream.on('finish', function (err) {result(err);});});
}

#注意事项
excel里面如果是时间12:12:23,则需要做以下处理
moment(new Date(1900, 0, value - 1)).format(‘HH:mm:ss’)
moment为解析时间的插件,http://momentjs.cn/

node koa解析excel表格 .xlsx .xls相关推荐

  1. c#读取生成excel表格文件xls、xlsx格式文件

    全栈工程师开发手册 (作者:栾鹏) c#教程全解 c#存储生成excel表格格式xls.xlsx格式的文件 需要电脑安装对应版本的office,并且在项目中引用excel 测试代码 static vo ...

  2. POI解析Excel表格

    Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程序对Microsoft Office格式档案读和写的功能. 这里实现poi解析Excel表格的例子,导入Exc ...

  3. vue实现纯前端导入与解析excel表格文件,导出Excel

    一.安装相关依赖 npm install --save xlsx file-saver 二.使用 import * as XLSX from 'xlsx/xlsx.mjs' const FileSav ...

  4. 【C# NPOI解析excel表格】

    安装 NPOI 库 首先,需要从 NuGet 上安装 NPOI 库.可以通过 Visual Studio 的 NuGet 包管理器或者通过 Package Manager Console 来安装,具体 ...

  5. excel表格xlsx解密方法,忘记excel表格xlsx密码怎么办?

    最简单的excel表格xlsx文档解密方法,excel表格xlsx权限限制怎么解除?[超级好用]文档excel表格xlsx解密,用「密码帝」 就可以啦!手机电脑都可以用,一键轻松在线解密!不用下载安装 ...

  6. excel表格xlsx密码强制解除手机,忘记excel表格xlsx密码如何找回?

    excel表格xlsx密码忘记了怎样能打开文档,excel表格xlsx复制打印限制如何解除?[解密神器]excel表格xlsx密码excel表格xlsx,只需要一步非常简单,用「密码帝」 就可以啦!, ...

  7. 如何取消excel表格xlsx密码保护,忘记excel表格xlsx密码怎么办?

    excel表格xlsx如何去除密码,excel表格xlsx权限密码如何解开?[亲测可用]excel表格xlsx不能解密,还在下载软件解密?过时了!!!用「密码帝」 可以轻松在线解密,百度搜索密码帝就可 ...

  8. excel表格xlsx解密方法,忘记excel表格xlsx密码怎么找回?

    excel表格xlsx加密文件去除密码,excel表格xlsx权限密码怎么解开?[亲测很溜]excel表格xlsx解密程序,用「密码帝」 就可以啦!手机电脑都可以用,一键轻松在线解密!不用下载安装任何 ...

  9. 史上最简单的excel表格xlsx文档解密方法,excel表格xlsx不能复制打印怎么办?

    excel表格xlsx解开加密软件,excel表格xlsx复制打印限制如何解除?[亲测好用]acrobat excel表格xlsx解密,还在下载软件解密?过时了!!!用「密码帝」 可以轻松在线解密,百 ...

最新文章

  1. 是起点,而非终点——评《程序员的思维修炼》
  2. 802.11协议之BA/BAR帧
  3. 何谓CRT,CRT的由来
  4. 深入理解 ASP.NET 动态控件 (Part 5 - 编译实验)
  5. 学习Mysql (一)
  6. 4种方案,帮你解决Maven创建项目过慢问题
  7. select中常用的对象
  8. nutch2.3 mysql教程_Nutch2.2.1+MySQL+Solr4.10.3安装部署
  9. 细数常用的5款Java代码混淆器!
  10. excel取消合并单元格并填充内容的技巧
  11. 巨好用的数学公式编辑器安装教程
  12. linux上传oracle压缩包,Linux中从oracle官网下载jdk文件不是标准的gzip格式文件问题...
  13. 使用Mozilla Thunderbird 创建ics日历文件
  14. snes9x 源码_仅64kb的SNES游戏如何制作优美的音乐
  15. 游戏中的道具与RMB玩家
  16. 把json数据导入linux,使用json文件给es中导入数据
  17. 安卓配置正式包和测试包不同的名字、图标、同时安装,(极光配置测试和正式)
  18. 使用 Webmin+bind9快速搭建私有DNS服务器
  19. 真正可用的使用T5577卡复制4100卡_ID卡复制
  20. excel高效之删除空行

热门文章

  1. 实现调用本地office打开在线文档功能
  2. Python使用PIL工具、ImageDraw函数在图像上根据坐标点依次连线画矩形框,可画选择倾斜的框和折线
  3. 关于Error during artifact deployment. See server log for details.问题
  4. 数据仓库ETL工具箱——实时ETL系统
  5. 火到服务器瘫痪了,这款小游戏太火爆了,合成大西瓜
  6. JVM (二) 垃圾回收机制概念+垃圾回收器种类
  7. 04.HTML基础-表单标签基础标签
  8. 什么是软链接?什么是硬链接?
  9. 【Latex】latex表格技巧
  10. 泉州信息工程学院 计算机考试,泉州信息工程学院教务网络管理系统成绩查询、网上选课查分登录入口...