当前位置: 首页 > news >正文

node express实现Excel文档转json文件

有些场景我们需要将Excel文档中的内容抽取出来生成别的文件,作为一个前端,服务框架最应该熟悉的就是node了,以下是基于多语言转换实现代码,看明白原理自己改一改就能用了

1.安装node环境
2.创建一个文件夹,文件夹中创建 package.json内容如下

{ "dependencies": {"express": "^4.18.2","fs": "^0.0.1-security","node-xlsx": "^0.23.0"}
}

3.命令行切至文件夹内,执行命令 npm i
4.文件夹内创建 ExcelToJsonAll.js,与package.json同级

var xlsx = require('node-xlsx');
const fs = require('fs');
// 要获取文件的文件名
var sheets = xlsx.parse('./fileList/Export.xls');const data = sheets[0].data;// 获取需要支持的语言
getRows = [ // index对应的是多语言文档里列的角标{ code: "zh", name: "简体中文", index: 7 },{ code: "en", name: "英语", index: 8 },]getRows.forEach(item => {// 创建对象var obj = {};data.forEach((d, i) => {if (i != 0) {obj[d[0]] = d[item.index];}})// 重新排序const sListOld = [];for (key in obj) {const skey = key.split('_')const keyNumber = skey[skey.length-1]const keyNumberReg = new RegExp(`_${keyNumber}`); // 不加'g',仅删除字符串里第一个"a"const keyHead = key.replace(keyNumberReg,"");const keyLength = keyHead.lengthsListOld.push({number: keyNumber,keyLength: keyLength,key: key,value: obj[key]})}// 数字升序排列function up(a, b) {return a.number-b.number}// 排序后数组const sListNew = sListOld.sort(up)// key长度升序排列//(如果只按数字排列则会出现增量key和原始key数字部分相同的参杂在一起的情况,所以按key长度区分开)function upKeyLength(a, b) {return a.keyLength - b.keyLength;}// 排序后数组const sListSorted = sListNew.sort(upKeyLength);// 转对象fileJson = {}sListSorted.forEach(newDt => {fileJson[newDt.key] = newDt.value})console.log(`========== ${item.name} ${item.code}.js ==========`)console.log(fileJson)// 输出语言jsonfs.writeFileSync(`json_keyAll/${item.code}.json`, JSON.stringify(fileJson, null, "\t"), 'utf8');
})

5.导入来源和导出生成文件路径根据自己实际情况定义
6.执行命令 node ExcelToJsonAll.js

http://www.lryc.cn/news/307999.html

相关文章:

  • 【算法分析与设计】最大二叉树
  • 面试问答总结之并发编程
  • 红外测温仪芯片方案开发设计
  • 五、数组——Java基础篇
  • 如何用golang写一个自己的后端框架
  • linux 如何给服务器批量做免密,如何批量挂在磁盘
  • Android Activity的生命周期详解
  • python学习笔记-内置类型
  • 校园微社区微信小程序源码/二手交易/兼职交友微信小程序源码
  • 如何在 Angular 中使用 NgTemplateOutlet 创建可重用组件
  • 改进的yolo交通标志tt100k数据集目标检测(代码+原理+毕设可用)
  • nginx 日志,压缩,https功能介绍
  • 代码随想录三刷day17
  • postcss-px-to-viewport include属性
  • C++设计模式——抽象工厂模式
  • Windows安装VNC连接工具并结合cpolar实现远程内网Ubuntu系统桌面
  • Vue3 Hooks函数使用及封装思想
  • YOLOv8改进涨点,添加GSConv+Slim Neck,有效提升目标检测效果,代码改进(超详细)
  • 华为s5720s-28p-power-li-ac堆叠配置
  • c# aes加密解密私钥公钥通钥
  • 上拉电阻与下拉电阻、电容的作用
  • 《Spring Security 简易速速上手小册》第1章 Spring Security 概述(2024 最新版)
  • vue页面菜单权限问题解决
  • C++面试宝典第33题:数组组成最大数
  • “影像承载初心” 国际数字影像产业园2024首届摄影沙龙诚邀您的参与!
  • 【C语言】while循环语句
  • 2024数字中国创新大赛·数据要素赛道“能源大数据应用赛”正式上线!参赛指南请查收
  • react-JSX基本使用
  • 学习阶段单片机买esp32还是stm32?
  • 【Simulink系列】——Simulink子系统子系统封装模块库技术