kpiplus
Version:
KPI+
1 lines • 1.43 kB
JavaScript
;var xlsx=require("node-xlsx"),underscore=require("underscore");let parse=function(e,t,n){let l=0,s={};n&&n.row_header_column&&(l=n.row_header_column),n&&n.map_columns&&(s=n.map_columns);let r=xlsx.parse(e);if(0===r.length||r[0].data.length<l+1)return t("File excel không có dữ liệu");let o=r[0].data,i={},a=o[l];for(let e=0;e<a.length;e++)if(s["col"+e.toString()]){i[s["col"+e.toString()]]=a[e]}else{a[e]||(a[e]="col"+e.toString());let t=a[e].lastIndexOf("("),n=a[e].lastIndexOf(")");if(t>0&&n>0&&t<n){let l=a[e].substring(t+1,n);underscore.has(i,l)&&(l+=e.toString());let s=a[e].substring(0,t);i[l]=s}else{let t=a[e].split(" ").join("_").split(" ").join("_").split("-").join("_").split("''").join("").split(",").join("_").split('"').join("").toLowerCase();underscore.has(i,t)&&(t+=e.toString());try{i[t]=a[e]}catch(t){i["col"+e.toString()]=a[e]}}}let c=underscore.keys(i),u=[];for(let e=l+1;e<o.length;e++){let t={},n=0;for(n=0;n<c.length;n++)if(o[e].length>n){var d=c[n],f=o[e][n];if(f&&(d.indexOf("ngay")>=0||d.indexOf("date")>=0||d.indexOf("han_sd")>=0))if(underscore.isNumber(f))f>3e4&&(f=new Date(86400*(f-25569)*1e3));else try{let e,t,n;if(f.indexOf("/")>=0){let l=f.split("/");e=l[2],t=l[1],n=l[0]}f=new Date(e+"-"+t+"-"+n)}catch(e){console.log(e,f)}t[d]=f}u.push(t)}t(null,u,i)};process.on("message",function(e){parse(e.filePath,function(e,t,n){process.send({error:e,data:t,columns:n})},e.options)});