amotify-ex-spreadsheet
Version:
amotify spreadsheet extension
2 lines (1 loc) • 2.5 kB
JavaScript
var m=(e,r,t)=>new Promise((o,l)=>{var p=n=>{try{s(t.next(n))}catch(i){l(i)}},a=n=>{try{s(t.throw(n))}catch(i){l(i)}},s=n=>n.done?o(n.value):Promise.resolve(n.value).then(p,a);s((t=t.apply(e,r)).next())});import u,{UUID as C}from"jmini";import*as S from"exceljs";const h=(e,r)=>new h.fn.SpreadSheet(e,r);h.fn=h.prototype={},u.extend({SpreadSheet:function(e,r){this.ok=!0;try{this.workbook=e,this.fileName=r}catch(t){console.log(t),this.ok=!1}return this},isValid:function(){return this.ok},getWorkbook:function(){return this.workbook},updateFileName:function(e){return this.fileName=e,this},updateMerges:function(e){this.toJson().sheets.forEach((t,o)=>{let l=e[o];const p=this.workbook.getWorksheet(t.sheetName);for(let[a,s]of l)a&&s&&p.mergeCells(a+":"+s)})},updateStyles:function(e){this.toJson().sheets.forEach((t,o)=>{let l=e[o];const p=this.workbook.getWorksheet(t.sheetName);for(let a of l){let{type:s,target:n,values:i}=a,c=u.flatArray(n);for(let[f,y]of Object.entries(i))for(let d of c)p["get"+s.toCapital()](d)[f]=y}})},toJson:function(){let e={fileName:this.fileName,sheets:[]};return this.workbook.eachSheet((r,t)=>{let o={sheetName:r.name,rows:[]};r.eachRow((l,p)=>{let[a,...s]=l.values;o.rows.push(s)}),e.sheets.push(o)}),e},export:function(e){return m(this,null,function*(){e=e||"xlsx";const r=yield this.workbook[e].writeBuffer(),t=new Blob([r],{type:"application/octet-binary"}),o=document.createElement("a");o.href=(global.URL||global.webkitURL).createObjectURL(t),o.download=this.fileName+"."+e,o.click(),o.remove()})}},h),h.fn.SpreadSheet.prototype=h.fn,h.fn.SpreadSheet.prototype.constructor=h;const k={readFromFile:e=>m(void 0,null,function*(){let r=e.type,t=e.name.replace(/\.[^/.]+$/,"");if(r.match(/csv/)){const a=(yield e.text()).split(/[\n\r]+/).map(i=>i.split(/,/)),s=new S.Workbook,n=s.addWorksheet("Sheet1");return a.forEach(i=>n.addRow(i)),h(s,t)}const o=new S.Workbook;let l=yield e.convert("arrayBuffer");return h(yield o.xlsx.load(l),t)}),readFromJson:e=>m(void 0,null,function*(){let{sheets:r,fileName:t=""}=e;t=t||C();const o=new S.Workbook;return r.forEach((l,p)=>{let{sheetName:a,rows:s,merges:n=[],styles:i=[]}=l;a=a||"\u30B7\u30FC\u30C8"+(p+1),o.addWorksheet(a);const c=o.getWorksheet(a);if(c){c.addRows(s);for(let[f,y]of n)f&&y&&c.mergeCells(f+":"+y);for(let f of i){let{type:y,target:d,values:g}=f,w=u.flatArray(d);for(let[b,x]of Object.entries(g))for(let v of w){let N="get"+y.toCapital(),J=c[N](v);J[b]=x}}}}),h(o,t)})};export{k as SpreadSheet,k as default};