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操作时间(年-月-日 时-分-秒 星期几)
Jun 20 Javascript
javaScript 动态访问JSon元素示例代码
Aug 30 Javascript
JS简单实现城市二级联动选择插件的方法
Aug 19 Javascript
jQuery简单自定义图片轮播插件及用法示例
Nov 21 Javascript
Sequelize中用group by进行分组聚合查询
Dec 12 Javascript
js实现密码强度检验
Jan 15 Javascript
微信小程序page的生命周期和音频播放及监听实例详解
Apr 07 Javascript
knockoutjs模板实现树形结构列表
Jul 31 Javascript
详解Webstorm 新建.vue文件支持高亮vue语法和es6语法
Oct 26 Javascript
JavaScript实现二叉树定义、遍历及查找的方法详解
Dec 20 Javascript
深入浅出vue图片路径的实现
Sep 04 Javascript
使用axios请求接口,几种content-type的区别详解
Oct 29 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
深入php内核之php in array
2015/11/10 PHP
利用PHP绘图函数实现简单验证码功能的方法
2016/10/18 PHP
php实现数据库的增删改查
2017/02/26 PHP
PHP chop()函数讲解
2019/02/11 PHP
thinkphp5+layui实现的分页样式示例
2019/10/08 PHP
Laravel 框架控制器 Controller原理与用法实例分析
2020/04/14 PHP
PHP7 参数处理机制修改
2021/03/09 PHP
TextArea设置MaxLength属性最大输入值的js代码
2012/12/21 Javascript
Javascript实现简单二级下拉菜单实例
2014/06/15 Javascript
基于js与flash实现的网站flv视频播放插件代码
2014/10/14 Javascript
jQuery中bind()方法用法实例
2015/01/19 Javascript
JavaScript之Object类型介绍
2015/04/01 Javascript
基于JavaScript实现的希尔排序算法分析
2017/04/14 Javascript
详解使用路由延迟加载 Angular 模块
2017/10/12 Javascript
微信小程序的注册页面包含倒计时验证码、获取用户信息
2019/05/22 Javascript
小程序实现搜索框
2020/06/19 Javascript
[54:05]DOTA2-DPC中国联赛定级赛 SAG vs iG BO3第一场 1月9日
2021/03/11 DOTA
Python实现简单查找最长子串功能示例
2019/02/26 Python
Django实现任意文件上传(最简单的方法)
2020/06/03 Python
Python SMTP发送电子邮件的示例
2020/09/23 Python
基于Python实现粒子滤波效果
2020/12/01 Python
HTML5 在canvas中绘制文本附效果图
2014/06/23 HTML / CSS
芝加哥牛排公司:Chicago Steak Company
2018/10/31 全球购物
香港草莓网:Strawberrynet香港
2019/05/10 全球购物
英国屋顶用品和材料超市:Roofing Supplies UK
2019/08/24 全球购物
大学生怎样进行自我评价
2013/12/07 职场文书
农场厂长岗位职责
2013/12/28 职场文书
材料加工工程求职信
2014/02/19 职场文书
生产文员岗位职责
2014/04/05 职场文书
《菜园里》教学反思
2014/04/17 职场文书
党员群众路线承诺书
2014/05/20 职场文书
群众路线教育实践活动学习笔记内容
2014/11/06 职场文书
预备党员转正材料
2014/12/19 职场文书
高校自主招生教师推荐信
2015/03/23 职场文书
青年岗位能手事迹材料(2016推荐版)
2016/03/01 职场文书
一篇文章了解正则表达式的替换技巧
2022/02/24 Javascript