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 相关文章推荐
js 调整select 位置的函数
Feb 21 Javascript
javascript 处理null及null值示例
Jun 09 Javascript
node.js中的console.warn方法使用说明
Dec 09 Javascript
简介JavaScript中的setTime()方法的使用
Jun 11 Javascript
JavaScript中用于生成随机数的Math.random()方法
Jun 15 Javascript
jQuery移动web开发中的页面初始化与加载事件
Dec 03 Javascript
BootStrap 轮播插件(carousel)支持左右手势滑动的方法(三种)
Jul 07 Javascript
深入浅出 jQuery中的事件机制
Aug 23 Javascript
微信小程序 特效菜单抽屉效果实例代码
Jan 11 Javascript
Vue.js 2.0 移动端拍照压缩图片预览及上传实例
Apr 27 Javascript
微信小程序签到功能
Oct 31 Javascript
微信小程序实现翻牌抽奖动画
Sep 21 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
要会喝咖啡也要会知道咖啡豆
2021/03/03 咖啡文化
PHP程序员编程注意事项
2008/04/10 PHP
PHP实现的简单在线计算器功能示例
2017/08/02 PHP
PHP清除缓存的几种方法总结
2017/09/12 PHP
IE innerHTML,outerHTML所引起的问题
2009/06/04 Javascript
JS编程小常识很有用
2012/11/26 Javascript
JS 获取浏览器和屏幕宽高等信息的实现思路及代码
2013/07/31 Javascript
javascript中打印当前的时间实现思路及代码
2013/12/18 Javascript
javascript 操作符(~、&、|、^、)使用案例
2014/12/31 Javascript
jquery实现全选、反选、获得所有选中的checkbox
2020/09/13 Javascript
jQuery AJAX timeout 超时问题详解
2016/06/21 Javascript
jQuery多个版本和其他js库冲突的解决方法
2016/08/11 Javascript
javascript判断firebug是否开启的方法
2016/11/23 Javascript
微信小程序 标签传入数据
2017/05/08 Javascript
详解vuejs几种不同组件(页面)间传值的方式
2017/06/01 Javascript
React props和state属性的具体使用方法
2018/04/12 Javascript
JavaScript递归函数解“汉诺塔”算法代码解析
2018/07/05 Javascript
微信小程序 setData 对 data数据影响问题
2019/04/18 Javascript
vue中实现高德定位功能
2019/12/03 Javascript
[00:50]深扒TI7聊天轮盘语音出处6
2017/05/11 DOTA
zbar解码二维码和条形码示例
2014/02/07 Python
Python多线程结合队列下载百度音乐的方法
2015/07/27 Python
Python爬虫抓取代理IP并检验可用性的实例
2018/05/07 Python
Python类继承和多态原理解析
2020/02/05 Python
Python使用matplotlib绘制圆形代码实例
2020/05/27 Python
Pedro官网:新加坡时尚品牌
2019/08/27 全球购物
公司接待方案
2014/03/08 职场文书
监察建议书范文
2014/03/12 职场文书
党员公开承诺书
2014/03/25 职场文书
家长学校培训材料
2014/08/20 职场文书
司法工作人员群众路线对照检查材料思想汇报
2014/09/30 职场文书
暑期辅导班宣传单
2015/07/14 职场文书
导游词之台湾阿里山
2019/10/23 职场文书
PHP实现考试倒计时功能代码
2021/04/16 PHP
Spring Data JPA框架自定义Repository接口
2022/04/28 Java/Android
win10如何开启ahci模式?win10开启ahci模式详细操作教程
2022/07/23 数码科技