@loaders.gl/excel
Version:
Framework-independent loader for Excel files
8 lines (7 loc) • 4.41 kB
Source Map (JSON)
{
"version": 3,
"sources": ["index.js", "excel-loader.js", "lib/parse-excel.js"],
"sourcesContent": ["// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\nimport { ExcelLoader as ExcelWorkerLoader } from \"./excel-loader.js\";\nimport { parseExcel } from \"./lib/parse-excel.js\";\nexport { ExcelWorkerLoader };\n/**\n * Loader for Excel files\n */\nexport const ExcelLoader = {\n ...ExcelWorkerLoader,\n async parse(arrayBuffer, options) {\n const data = parseExcel(arrayBuffer, options);\n return { shape: 'object-row-table', data };\n }\n};\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n// __VERSION__ is injected by babel-plugin-version-inline\n// @ts-ignore TS2304: Cannot find name '__VERSION__'.\nconst VERSION = typeof \"4.3.3\" !== 'undefined' ? \"4.3.3\" : 'latest';\n/**\n * Worker Loader for Excel files\n */\nexport const ExcelLoader = {\n dataType: null,\n batchType: null,\n name: 'Excel',\n id: 'excel',\n module: 'excel',\n version: VERSION,\n worker: true,\n extensions: ['xls', 'xlsb', 'xlsm', 'xlsx'],\n mimeTypes: [\n 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',\n 'application/vnd.ms-excel'\n ],\n category: 'table',\n binary: true,\n options: {\n excel: {\n shape: 'object-row-table',\n sheet: undefined // Load default Sheet\n }\n }\n};\n", "import { utils, read } from 'xlsx';\n// import {convertToArrayRow} from '@loaders.gl/schema';\n// local table names cache with dataUrl/tableNames array key/values\nconst dataTableNamesMap = {};\n/**\n * Gets local or remote Excel file data.\n * @param arrayBuffer Loaded data\n * @param options Data parse options.\n */\nexport function parseExcel(arrayBuffer, options) {\n const dataUrl = 'dummy';\n // const dataFileType: string = dataUrl.substr(dataUrl.lastIndexOf('.')); // file extension\n // create Excel 'workbook'\n const workbook = read(arrayBuffer, {\n type: 'array'\n // cellDates: true\n });\n // load data sheets\n let dataRows = [];\n dataTableNamesMap[dataUrl] = [];\n if (workbook.SheetNames.length > 0) {\n if (workbook.SheetNames.length > 1) {\n // cache sheet names\n dataTableNamesMap[dataUrl] = workbook.SheetNames;\n // eslint-ignore-next-line\n // console.debug(`getData(): file: sheetNames:`, workbook.SheetNames);\n }\n // determine spreadsheet to load\n let sheetName = workbook.SheetNames[0];\n if (options?.excel?.sheet && workbook.SheetNames.indexOf(options?.excel?.sheet) >= 0) {\n // reset to requested table name\n sheetName = options?.excel?.sheet;\n }\n // get worksheet data row objects array\n const worksheet = workbook.Sheets[sheetName];\n dataRows = utils.sheet_to_json(worksheet);\n // const headers = dataRows.length ? Object.keys(dataRows[0]) : [];\n // if (options?.excel?.type === 'array-row-table') {\n // dataRows = dataRows.map(row => convertToArrayRow(row, headers))\n // }\n }\n return dataRows;\n}\n"],
"mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA,qBAAAA;AAAA,EAAA;AAAA;AAAA;;;ACKA,IAAM,UAAU,OAAiC,UAAU;AAIpD,IAAM,cAAc;AAAA,EACvB,UAAU;AAAA,EACV,WAAW;AAAA,EACX,MAAM;AAAA,EACN,IAAI;AAAA,EACJ,QAAQ;AAAA,EACR,SAAS;AAAA,EACT,QAAQ;AAAA,EACR,YAAY,CAAC,OAAO,QAAQ,QAAQ,MAAM;AAAA,EAC1C,WAAW;AAAA,IACP;AAAA,IACA;AAAA,EACJ;AAAA,EACA,UAAU;AAAA,EACV,QAAQ;AAAA,EACR,SAAS;AAAA,IACL,OAAO;AAAA,MACH,OAAO;AAAA,MACP,OAAO;AAAA;AAAA,IACX;AAAA,EACJ;AACJ;;;AC9BA,kBAA4B;AAG5B,IAAM,oBAAoB,CAAC;AAMpB,SAAS,WAAW,aAAa,SAAS;AATjD;AAUI,QAAM,UAAU;AAGhB,QAAM,eAAW,kBAAK,aAAa;AAAA,IAC/B,MAAM;AAAA;AAAA,EAEV,CAAC;AAED,MAAI,WAAW,CAAC;AAChB,oBAAkB,OAAO,IAAI,CAAC;AAC9B,MAAI,SAAS,WAAW,SAAS,GAAG;AAChC,QAAI,SAAS,WAAW,SAAS,GAAG;AAEhC,wBAAkB,OAAO,IAAI,SAAS;AAAA,IAG1C;AAEA,QAAI,YAAY,SAAS,WAAW,CAAC;AACrC,UAAI,wCAAS,UAAT,mBAAgB,UAAS,SAAS,WAAW,SAAQ,wCAAS,UAAT,mBAAgB,KAAK,KAAK,GAAG;AAElF,mBAAY,wCAAS,UAAT,mBAAgB;AAAA,IAChC;AAEA,UAAM,YAAY,SAAS,OAAO,SAAS;AAC3C,eAAW,kBAAM,cAAc,SAAS;AAAA,EAK5C;AACA,SAAO;AACX;;;AFjCO,IAAMC,eAAc;AAAA,EACvB,GAAG;AAAA,EACH,MAAM,MAAM,aAAa,SAAS;AAC9B,UAAM,OAAO,WAAW,aAAa,OAAO;AAC5C,WAAO,EAAE,OAAO,oBAAoB,KAAK;AAAA,EAC7C;AACJ;",
"names": ["ExcelLoader", "ExcelLoader"]
}