Node解决简单重复问题系列之Excel内容的获取


Posted in Javascript onJanuary 02, 2018

始因 -- 懒

最近项目中,经常用到多语言翻译,而iOS的多语言适配,设计给出的多语言都是指定的翻译制作成的一系列表格,基本都要一点一点复制到对应的语言文件中,如此反复,尤其是需求量叠加,对应翻译较多时,一条一条复制粘贴很是费时费力。并且多语言出错并不容易排查,无形中增加测试负担。这时候就突然想起了可以用脚本语言处理,直接拼接成我想要的字段,这样不是只需要一次性解决么?下面话不多说了,来一看看详细的介绍吧。

开整

环境 : Node.js

框架 :

"dependencies": {
 "node-xlsx": "^0.11.2"
 }

逻辑 :

Node解决简单重复问题系列之Excel内容的获取

Excel表格样式

Node解决简单重复问题系列之Excel内容的获取

期待输出样式

如上两图展示那样,直接取出相应的值拼接成想到的输出格式。

上代码

'use strict'
var xlsx = require('node-xlsx');
var fs = require('fs');
var path = require('path')
var files = path.resolve(__dirname);
var excelPath;
fs.readdir(files ,function (error,allfiles){
 if(error){
 console.log(error);
 }else{
 allfiles.forEach(function(filename){
  var fileDir = path.join(files,filename);
  fs.stat(fileDir,function(error,stats){
  if(error){
   console.log(error);
  }else{
   // console.log(fileDir);
   if (fileDir.indexOf('xlsx') > 0){
   excelPath = fileDir;
   craeatLanguageText();
   }
  }
  });
 })
 }
});
function craeatLanguageText(){
 console.log(excelPath);
 //读取文件内容
 var obj = xlsx.parse(excelPath);
 var excelObj = obj[0].data;
 var data = [];
 var arr = [];// 语言种类
 for (var i in excelObj) {
 var value = excelObj[i];
 for (var j in value) {
  if (i == 0) {
  if (j > 1) {
   arr.push(value[j]);
  }
  } else {
  if (j > 1) {
   var str = arr[j - 2];
   var item = value[0]
   var vaue = value[j];
   var reg = /'/
   vaue = vaue.replace(reg, "'");
   str = str + '\n' + '"' + item + '"' + ' ' + '=' + " " + '"' + vaue + '"' + ';';
   arr[j - 2] = str;
   console.log(str);
  }
  }
 }
 }
 var languageStr = arr.join('\n');
 //将文件内容插入新的文件中
 fs.writeFileSync('language.text', languageStr, { encoding: "utf8" });
}

逻辑比较容易看懂,不再赘述,直接在node项目文件夹拖入要解析的Excel 运行即可。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

Javascript 相关文章推荐
javascript各种复制代码收集
Sep 20 Javascript
Jquery实战_读书笔记1—选择jQuery
Jan 22 Javascript
jQuery中将函数赋值给变量的调用方法
Mar 23 Javascript
浅析XMLHttpRequest的缓存问题
Dec 13 Javascript
javascript实现window.print()去除页眉页脚
Dec 30 Javascript
AngularJS通过$http和服务器通信详解
Sep 21 Javascript
深入理解jquery中extend的实现
Dec 22 Javascript
浅谈JavaScript find 方法不支持IE的问题
Sep 28 Javascript
vue中element 上传功能的实现思路
Jul 06 Javascript
JavaScript中AOP的实现与应用
May 06 Javascript
java遇到微信小程序 "支付验证签名失败" 问题解决
Dec 22 Javascript
原生JS实现微信通讯录
Jun 18 Javascript
node作为中间服务层如何发送请求(发送请求的实现方法详解)
Jan 02 #Javascript
React教程之封装一个Portal可复用组件的方法
Jan 02 #Javascript
Node层模拟实现multipart表单的文件上传示例
Jan 02 #Javascript
10行原生JS实现文字无缝滚动(超简单)
Jan 02 #Javascript
js原生实现移动端手指滑动轮播图效果的示例
Jan 02 #Javascript
vue父组件向子组件(props)传递数据的方法
Jan 02 #Javascript
基于wordpress的ajax写法详解
Jan 02 #Javascript
You might like
杏林同学录(五)
2006/10/09 PHP
php md5下16位和32位的实现代码
2008/04/09 PHP
php入门教程 精简版
2009/12/13 PHP
Yii框架模拟组件调用注入示例
2019/11/11 PHP
js验证表单第二部分
2006/11/25 Javascript
可以文本显示的公告栏的js代码
2007/03/11 Javascript
Javascript typeof 用法
2008/12/28 Javascript
Javascript学习笔记 delete运算符
2011/09/13 Javascript
js arguments对象应用介绍
2012/11/28 Javascript
jquery自动填充勾选框即把勾选框打上true
2014/03/24 Javascript
node.js中的path.resolve方法使用说明
2014/12/08 Javascript
PhantomJS快速入门教程(服务器端的 JavaScript API 的 WebKit)
2015/08/06 Javascript
JS组件中bootstrap multiselect两大组件较量
2016/01/26 Javascript
微信jssdk在iframe页面失效问题的解决措施
2016/03/03 Javascript
Extjs 点击复选框在表格中增加相关信息行
2016/07/12 Javascript
js对象浅拷贝和深拷贝详解
2016/09/05 Javascript
无限循环轮播图之运动框架(原生JS实现)
2017/10/01 Javascript
Javascript网页抢红包外挂实现分享
2018/01/11 Javascript
解决vue-cli项目打包出现空白页和路径错误的问题
2018/09/04 Javascript
JavaScript使用ul中li标签实现删除效果
2019/04/15 Javascript
微信小程序时间戳转日期的详解
2019/04/30 Javascript
使用npm命令提示: 'npm' 不是内部或外部命令,也不是可运行的程序的处理方法
2020/05/14 Javascript
Python编写的com组件发生R6034错误的原因与解决办法
2013/04/01 Python
Python3基础之条件与循环控制实例解析
2014/08/13 Python
说一说Python logging
2016/04/15 Python
python快排算法详解
2019/03/04 Python
TensorFlow——Checkpoint为模型添加检查点的实例
2020/01/21 Python
解决flask接口返回的内容中文乱码的问题
2020/04/03 Python
html5摇一摇代码优化包括DeviceMotionEvent等等
2014/09/01 HTML / CSS
HTML5 Canvas实现图片缩放、翻转、颜色渐变的代码示例
2016/02/28 HTML / CSS
日本钓鱼渔具和户外用品网上商店:naturum
2016/08/07 全球购物
Fenty Beauty官网:蕾哈娜创立的美妆品牌
2021/01/07 全球购物
招商专员岗位职责
2014/02/08 职场文书
2016年小学生寒假家长评语
2015/10/10 职场文书
八年级物理教学反思
2016/02/19 职场文书
Win11怎么添加用户?Win11添加用户账户的方法
2022/07/15 数码科技