excel-sheet-to-json
Version:
A TypeScript/JavaScript library that converts Excel files to JSON with custom header mapping. Works in both Node.js and browser environments.
3 lines (2 loc) • 2.33 kB
JavaScript
;Object.defineProperty(exports,"__esModule",{value:!0});var r=require("xlsx");function e(r,e){(null==e||e>r.length)&&(e=r.length);for(var t=0,n=Array(e);t<e;t++)n[t]=r[t];return n}function t(r,t){var n="undefined"!=typeof Symbol&&r[Symbol.iterator]||r["@@iterator"];if(n)return(n=n.call(r)).next.bind(n);if(Array.isArray(r)||(n=function(r,t){if(r){if("string"==typeof r)return e(r,t);var n={}.toString.call(r).slice(8,-1);return"Object"===n&&r.constructor&&(n=r.constructor.name),"Map"===n||"Set"===n?Array.from(r):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?e(r,t):void 0}}(r))||t&&r&&"number"==typeof r.length){n&&(r=n);var o=0;return function(){return o>=r.length?{done:!0}:{done:!1,value:r[o++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function n(e,n){var o=r.read(e,{type:"buffer"}),a=o.Sheets[o.SheetNames[0]],i=a["!ref"];if(!i)return{originHeaderNames:[],fields:[],header:{},body:[]};var u=r.utils.sheet_to_json(a,{header:1,range:i,raw:!0}),f=n.bodyStartRowNumber-1,l=u[n.headerStartRowNumber-1]||[],s=l.map((function(r){return r?String(r).trim():""})).filter((function(r){return""!==r})),d=[],c={};s.forEach((function(r){var e=n.headerNameToKey[r];e&&(d.push(e),c[e]=r)}));for(var m=[],y=f;y<u.length;y++){for(var v,p=u[y],b={},h=!0,g=!0,A=function(){var r=v.value,e=c[r],t=l.findIndex((function(r){return String(r).trim()===e}));if(-1!==t){var n=p[t]||"";null!=n&&""!==String(n).trim()&&(h=!1),b[r]=n}else g=!1},S=t(d);!(v=S()).done;)A();!h&&g&&m.push(b)}return{originHeaderNames:s,fields:d,header:c,body:m}}function o(r){return r&&r instanceof File?new Promise((function(e,t){var n=new FileReader;n.onload=function(r){var n,o=null==(n=r.target)?void 0:n.result;o instanceof ArrayBuffer?e(o):t(new Error("File reading completed, but result is not ArrayBuffer."))},n.onerror=function(r){t(r)},n.readAsArrayBuffer(r)})):Promise.reject(new Error("Input must be a valid File object."))}function a(r){return Buffer.from(r)}var i={parse:n,fileToArrayBufferInClient:o,arrayBufferToBufferInClient:a};exports.arrayBufferToBufferInClient=a,exports.default=i,exports.fileToArrayBufferInClient=o,exports.parse=n;
//# sourceMappingURL=excel-sheet-to-json.cjs.production.min.js.map