js读取excel导出json文件
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文件相关推荐
- vue 增加js日志输出文件_Vue.JS项目导入导出JSON文件的方案之一,其他项目也可参考...
本文只用于记录经验,为节省时间用于举例的UI也许有点简陋. 1.导出json文件 安装file-saver 使用 npm install file-saver --save 安装 file-saver ...
- Vue.JS项目导入导出JSON文件的方案之一,其他项目也可参考
此文章用于记录经验,方便下次借鉴,为节省时间用于举例的UI也许有点简陋,将就将就-重要的是方法. 1.导出json文件 1.1.安装file-saver 使用cnpm install file-sav ...
- 纯前端js直接导入导出json文件
现在很多公司都有多个测试环境或者其他环境,有些配置信息在其他环境需要同样的信息,按照传统只能修改数据库对于新手小白来说只能求助于服务端了,现在前端也可以直接将当前的数据导出为json文件,然后在需要的 ...
- js 读取excel 导入mysql_可以读取EXCEL文件的js代码
首页给个有中文说明的例子,下面的例子很多大家可以多测试. function readExcel() { var excelApp; var excelWorkBook; var excelSheet; ...
- js读取excel或者导出成excel时权限设置问题
当我们在使用js读取excel,或者导出excel的时候都会有权限问题. 做如下设定即可.IE8 1.将网站加入到信任的网站. 2.更改插件的使用权限: 经过以上两个步骤就可以了.
- 图形化开发(六)01-Three.js之导入模型——3dmax和SketchUp-editor编辑器导出json文件,在创建模型initMesh中外部的JSON文件
图形化开发(六)01-Three.js之导入模型--3dmax和SketchUp-editor编辑器导出json文件,在创建模型initMesh中外部的JSON文件 导入模型 官方推荐我们使用的3D模 ...
- java解析excel的js页面,js读取excel文件并显示
js读取excel文件并展示 本帖最后由 a911dalin 于 2013-12-30 13:01:17 编辑 如题,读取excel中所有数据和格式,求大神帮忙,明天就得赶出来 分享到: 更多 --- ...
- 在Unity上编写一个小工具--Excel导出Json
这是个Excel导出Json的工具类,需要放进Editor文件夹里,之后就可以在菜单上点击导出了 这个工具运行需要一个插件----NPOI,这个是用来读取excel文件的,这个插件的dll文件可以去网 ...
- thinkphp3.2.3 excel导出,下载文件,包含图片
关于导出后出错的问题 https://segmentfault.com/q/1010000005330214 https://blog.csdn.net/ohmygirl/article/detail ...
最新文章
- jdbc封装mysql_实用JDBC数据库查询封装
- 获取当前横竖屏_Chrome扩展程序一键生成网页骨架屏
- Mybatis中properties标签的使用
- html 选中状态,html默认选中状态
- ThinkPHP-保存生成的二维码
- ubuntu tomcat安装环境变量配置
- 优美的 Python
- Maxthon中RSS阅读器BUG解决[原创]
- Photoshop实例视频教程
- 软件设计与体系结构:设计过程
- 北京休闲好去处 适合春游的地方
- pandas DatetimeIndex indexing
- 如何下载并安装Firebug插件
- 关于本人的网络地址请移步简书
- zsh补全中compinit full initialization问题
- Node.js中的异步编程,个人理解及分化讲解
- zblog mysql修改_ZBlog教程 之 修改ZBlog数据库前缀
- 自动化测试 appium 会报错 Could not proxy command to remote server. Original error: Error: socket hang up
- (附源码)app电影选座订票 毕业设计 011439
- 西北乱跑娃 -- pyinstaller打包静态文件资源