1.依赖包xlsx

npm install node-xlsx

2.代码


const XLSX = require('xlsx')
const fs = require('fs')const dest_json_path = "./export/"
const dest_ts_path = "./export/LanDef.ts"
const xlsxName = "language.xlsx"const WorkBook = XLSX.readFile(xlsxName, { type: 'string' })
// 读取language的sheet
const WorkSheet = WorkBook.Sheets['language'];
// 读取数据格式为json
const sheetJson = XLSX.utils.sheet_to_json(WorkSheet);// 可能有多种语言,这里可以填写exl中en外的其他的语言
const languages = ['en']// 主函数
function deal_language() {let allJsonReady = {}let idArr = [];for (let i = 0; i < languages.length; i++) {allJsonReady[languages[i]] = [];}for (const row in sheetJson) {if (Object.hasOwnProperty.call(sheetJson, row)) {const rowInfo = sheetJson[row];// 如果id为空或者无效,则跳过if (!rowInfo['Id'] || rowInfo['Id'] == "") {continue;}// id单独放idArr.push(rowInfo['Id'])// 其他放到一个objectfor (let i = 0; i < languages.length; i++) {allJsonReady[languages[i]].push(rowInfo[languages[i]] ? rowInfo[languages[i]] : "")}}}for (const key in allJsonReady) {if (Object.hasOwnProperty.call(allJsonReady, key)) {let idx = languages.findIndex((item) => { return item === key })if (idx != -1) {const element = allJsonReady[key];writeJsonToFile(idArr, element ? element : "", dest_json_path + "language_" + key + ".json")}}}writeDataToTsFile(idArr, dest_ts_path);
}// 写入json文件
function writeJsonToFile(ids, langs, fileName) {var ws = fs.createWriteStream(fileName)ws.write("{")for (let i = 0; i < ids.length; i++) {// 在这里遇到\n换行的问题;采用了json格式的字符串后就解决了。ws.write("\n\t" + JSON.stringify(ids[i]) + ": " + JSON.stringify(langs[i]) + ((i != ids.length - 1) ? ',' : ''))}ws.write("\n}")ws.close();
}// ts文件。这个可有可无。因为项目用的ts文件,所以导出id文件为ts。视项目而定
function writeDataToTsFile(ids, fileName) {var ws = fs.createWriteStream(fileName)ws.write("export namespace Lan{")for (let i = 0; i < ids.length; i++) {ws.write(`\n\texport const ${ids[i]} = "${ids[i]}";`)}ws.write("\n}")ws.close();
}try {deal_language()console.log('Success!')
} catch (error) {console.log('Fail! ' + error)
}

3.执行脚本

进入到该文件的目录下,执行改命令

node ./exportLan.js 

打印出Success后,可以在同目录下生成一个export的文件夹,里面包含了language_en.json。

4.打包可执行程序

用到依赖包pkg(用的mac系统)。

安装依赖包

npm install -g pkg

安装成功后,回到脚本文件目录输入打包命令

pkg exportLan.js 

之后在同目录下会生成 三个文件

exportLan-linux

exportLan-macos

exportLan-win.exe

三个文件对应三种平台

这样就可以把改文件夹copy别人,别人不用安装环境就可以直接用。

这里有个小插曲,执行

./exportLan-macos

会出问题,一般是执行改文件权限不足,需要添加执行权限

chmod +x exportLan-macos

再次执行上次的命令就能成功了。

资源:zip

js读取excel导出json文件相关推荐

  1. vue 增加js日志输出文件_Vue.JS项目导入导出JSON文件的方案之一,其他项目也可参考...

    本文只用于记录经验,为节省时间用于举例的UI也许有点简陋. 1.导出json文件 安装file-saver 使用 npm install file-saver --save 安装 file-saver ...

  2. Vue.JS项目导入导出JSON文件的方案之一,其他项目也可参考

    此文章用于记录经验,方便下次借鉴,为节省时间用于举例的UI也许有点简陋,将就将就-重要的是方法. 1.导出json文件 1.1.安装file-saver 使用cnpm install file-sav ...

  3. 纯前端js直接导入导出json文件

    现在很多公司都有多个测试环境或者其他环境,有些配置信息在其他环境需要同样的信息,按照传统只能修改数据库对于新手小白来说只能求助于服务端了,现在前端也可以直接将当前的数据导出为json文件,然后在需要的 ...

  4. js 读取excel 导入mysql_可以读取EXCEL文件的js代码

    首页给个有中文说明的例子,下面的例子很多大家可以多测试. function readExcel() { var excelApp; var excelWorkBook; var excelSheet; ...

  5. js读取excel或者导出成excel时权限设置问题

    当我们在使用js读取excel,或者导出excel的时候都会有权限问题. 做如下设定即可.IE8 1.将网站加入到信任的网站. 2.更改插件的使用权限: 经过以上两个步骤就可以了.

  6. 图形化开发(六)01-Three.js之导入模型——3dmax和SketchUp-editor编辑器导出json文件,在创建模型initMesh中外部的JSON文件

    图形化开发(六)01-Three.js之导入模型--3dmax和SketchUp-editor编辑器导出json文件,在创建模型initMesh中外部的JSON文件 导入模型 官方推荐我们使用的3D模 ...

  7. java解析excel的js页面,js读取excel文件并显示

    js读取excel文件并展示 本帖最后由 a911dalin 于 2013-12-30 13:01:17 编辑 如题,读取excel中所有数据和格式,求大神帮忙,明天就得赶出来 分享到: 更多 --- ...

  8. 在Unity上编写一个小工具--Excel导出Json

    这是个Excel导出Json的工具类,需要放进Editor文件夹里,之后就可以在菜单上点击导出了 这个工具运行需要一个插件----NPOI,这个是用来读取excel文件的,这个插件的dll文件可以去网 ...

  9. thinkphp3.2.3 excel导出,下载文件,包含图片

    关于导出后出错的问题 https://segmentfault.com/q/1010000005330214 https://blog.csdn.net/ohmygirl/article/detail ...

最新文章

  1. jdbc封装mysql_实用JDBC数据库查询封装
  2. 获取当前横竖屏_Chrome扩展程序一键生成网页骨架屏
  3. Mybatis中properties标签的使用
  4. html 选中状态,html默认选中状态
  5. ThinkPHP-保存生成的二维码
  6. ubuntu tomcat安装环境变量配置
  7. 优美的 Python
  8. Maxthon中RSS阅读器BUG解决[原创]
  9. Photoshop实例视频教程
  10. 软件设计与体系结构:设计过程
  11. 北京休闲好去处 适合春游的地方
  12. pandas DatetimeIndex indexing
  13. 如何下载并安装Firebug插件
  14. 关于本人的网络地址请移步简书
  15. zsh补全中compinit full initialization问题
  16. Node.js中的异步编程,个人理解及分化讲解
  17. zblog mysql修改_ZBlog教程 之 修改ZBlog数据库前缀
  18. 自动化测试 appium 会报错 Could not proxy command to remote server. Original error: Error: socket hang up
  19. (附源码)app电影选座订票 毕业设计 011439
  20. 西北乱跑娃 -- pyinstaller打包静态文件资源

热门文章

  1. 高分辨率光学遥感图像水体分类综述2022.03
  2. capl保存trace_CANoe常用操作(CANoe系列其一)
  3. xctf 实时数据监测
  4. ABAP CDS注解详解
  5. node更改html中的列表,HTMLCollection和NodeList
  6. 我们利用计算机解决问题时第一步应该,算法与程序设计综合评价练习题
  7. 【react native】Flatlist实现上拉滚动加载
  8. 服务器两个网口的位置,服务器两个网口互通
  9. mac xcode 开发C++
  10. PHP有哪些优势和劣势