read-excel-file 5.2.5 → 5.2.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundle/read-excel-file.min.js +2 -2
- package/bundle/read-excel-file.min.js.map +1 -1
- package/commonjs/read/coordinates.js +56 -0
- package/commonjs/read/coordinates.js.map +1 -0
- package/commonjs/read/dropEmptyColumns.js +52 -0
- package/commonjs/read/dropEmptyColumns.js.map +1 -0
- package/commonjs/read/dropEmptyColumns.test.js.map +1 -0
- package/commonjs/read/dropEmptyRows.js +55 -0
- package/commonjs/read/dropEmptyRows.js.map +1 -0
- package/commonjs/read/dropEmptyRows.test.js.map +1 -0
- package/commonjs/read/getData.js +99 -0
- package/commonjs/read/getData.js.map +1 -0
- package/commonjs/read/parseCell.js +71 -0
- package/commonjs/read/parseCell.js.map +1 -0
- package/commonjs/read/parseCellValue.js +204 -0
- package/commonjs/read/parseCellValue.js.map +1 -0
- package/commonjs/read/parseCells.js +30 -0
- package/commonjs/read/parseCells.js.map +1 -0
- package/commonjs/read/parseDimensions.js +47 -0
- package/commonjs/read/parseDimensions.js.map +1 -0
- package/commonjs/read/parseFilePaths.js +83 -0
- package/commonjs/read/parseFilePaths.js.map +1 -0
- package/commonjs/read/parseProperties.js +48 -0
- package/commonjs/read/parseProperties.js.map +1 -0
- package/commonjs/read/parseSharedStrings.js +17 -0
- package/commonjs/read/parseSharedStrings.js.map +1 -0
- package/commonjs/read/parseSheet.js +25 -0
- package/commonjs/read/parseSheet.js.map +1 -0
- package/commonjs/read/parseStyles.js +72 -0
- package/commonjs/read/parseStyles.js.map +1 -0
- package/commonjs/read/readXlsx.js +25 -630
- package/commonjs/read/readXlsx.js.map +1 -1
- package/commonjs/xml/dom.js +17 -3
- package/commonjs/xml/dom.js.map +1 -1
- package/commonjs/xml/xlsx-xpath.js +10 -0
- package/commonjs/xml/xlsx-xpath.js.map +1 -1
- package/commonjs/xml/xlsx.js +22 -0
- package/commonjs/xml/xlsx.js.map +1 -1
- package/commonjs/xml/xmlNode.js +1 -1
- package/commonjs/xml/xmlNode.js.map +1 -1
- package/modules/read/coordinates.js +48 -0
- package/modules/read/coordinates.js.map +1 -0
- package/modules/read/dropEmptyColumns.js +45 -0
- package/modules/read/dropEmptyColumns.js.map +1 -0
- package/modules/read/dropEmptyColumns.test.js.map +1 -0
- package/modules/read/dropEmptyRows.js +48 -0
- package/modules/read/dropEmptyRows.js.map +1 -0
- package/modules/read/dropEmptyRows.test.js.map +1 -0
- package/modules/read/getData.js +88 -0
- package/modules/read/getData.js.map +1 -0
- package/modules/read/parseCell.js +59 -0
- package/modules/read/parseCell.js.map +1 -0
- package/modules/read/parseCellValue.js +192 -0
- package/modules/read/parseCellValue.js.map +1 -0
- package/modules/read/parseCells.js +19 -0
- package/modules/read/parseCells.js.map +1 -0
- package/modules/read/parseDimensions.js +38 -0
- package/modules/read/parseDimensions.js.map +1 -0
- package/modules/read/parseFilePaths.js +76 -0
- package/modules/read/parseFilePaths.js.map +1 -0
- package/modules/read/parseProperties.js +40 -0
- package/modules/read/parseProperties.js.map +1 -0
- package/modules/read/parseSharedStrings.js +9 -0
- package/modules/read/parseSharedStrings.js.map +1 -0
- package/modules/read/parseSheet.js +13 -0
- package/modules/read/parseSheet.js.map +1 -0
- package/modules/read/parseStyles.js +64 -0
- package/modules/read/parseStyles.js.map +1 -0
- package/modules/read/readXlsx.js +22 -628
- package/modules/read/readXlsx.js.map +1 -1
- package/modules/xml/dom.js +14 -3
- package/modules/xml/dom.js.map +1 -1
- package/modules/xml/xlsx-xpath.js +6 -0
- package/modules/xml/xlsx-xpath.js.map +1 -1
- package/modules/xml/xlsx.js +19 -1
- package/modules/xml/xlsx.js.map +1 -1
- package/modules/xml/xmlNode.js +1 -1
- package/modules/xml/xmlNode.js.map +1 -1
- package/package.json +6 -5
- package/commonjs/read/readXlsx.test.js.map +0 -1
- package/modules/read/readXlsx.test.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../source/read/readXlsx.js"],"names":["parseDate","getSharedStrings","getCellValue","getCells","getDimensions","getBaseStyles","getCellStyles","getNumberFormats","getWorkbookProperties","getRelationships","getSheets","letters","BUILT_IN_DATE_NUMBER_FORMAT_IDS","readXlsx","contents","xml","options","sheet","fileNames","parseFileNames","values","sharedStrings","parseValues","styles","parseStyles","properties","parseProperties","sheets","map","name","sheetRelationId","_sheet","relationId","createSheetNotFoundError","parseSheet","cells","length","data","dimensions","leftTop","rightBottom","colsCount","column","rowsCount","row","Array","i","j","cell","value","rowMap","dropEmptyRows","dropEmptyColumns","onlyTrimAtTheEnd","transformData","calculateDimensions","comparator","a","b","allRows","sort","allCols","minRow","maxRow","minCol","maxCol","colToInt","col","n","indexOf","CellCoords","coords","split","parseInt","trim","Cell","cellNode","getAttribute","valueElement","textContent","type","hasAttribute","undefined","firstChild","tagName","Error","decodeError","Date","parseFloat","styleId","style","numberFormat","id","dateFormat","template","smartDateParser","isDateTemplate","TypeError","accessor","_","empty","splice","content","createDocument","node","doc","baseStyles","parseCellStyle","numberFormats","parseNumberFormatStyle","reduce","formats","format","getCellStyle","xf","xfId","numFmt","numFmts","numberFormatId","book","workbookProperties","epoch1904","addSheetInfo","push","forEach","document","addFileNamesInfo","relationship","filePath","tokens","token","sheetsList","join","errorCode"],"mappings":"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","sourcesContent":["import parseDate from './parseDate'\r\n\r\nimport {\r\n getSharedStrings,\r\n getCellValue,\r\n getCells,\r\n getDimensions,\r\n getBaseStyles,\r\n getCellStyles,\r\n getNumberFormats,\r\n getWorkbookProperties,\r\n getRelationships,\r\n getSheets\r\n} from '../xml/xlsx'\r\n\r\n// Maps \"A1\"-like coordinates to `{ row, column }` numeric coordinates.\r\nconst letters = [\"\", \"A\", \"B\", \"C\", \"D\", \"E\", \"F\", \"G\", \"H\", \"I\", \"J\", \"K\", \"L\", \"M\", \"N\", \"O\", \"P\", \"Q\", \"R\", \"S\", \"T\", \"U\", \"V\", \"W\", \"X\", \"Y\", \"Z\"]\r\n\r\n// https://hexdocs.pm/xlsxir/number_styles.html\r\nconst BUILT_IN_DATE_NUMBER_FORMAT_IDS = [14,15,16,17,18,19,20,21,22,27,30,36,45,46,47,50,57]\r\n\r\n// \"The minimum viable XLSX reader\"\r\n// https://www.brendanlong.com/the-minimum-viable-xlsx-reader.html\r\n\r\n/**\r\n * Reads an (unzipped) XLSX file structure into a 2D array of cells.\r\n * @param {object} contents - A list of XML files inside XLSX file (which is a zipped directory).\r\n * @param {number?} options.sheet - Workbook sheet id (`1` by default).\r\n * @param {string?} options.dateFormat - Date format, e.g. \"mm/dd/yyyy\". Values having this format template set will be parsed as dates.\r\n * @param {object} contents - A list of XML files inside XLSX file (which is a zipped directory).\r\n * @return {object} An object of shape `{ data, cells, properties }`. `data: string[][]` is an array of rows, each row being an array of cell values. `cells: string[][]` is an array of rows, each row being an array of cells. `properties: object` is the spreadsheet properties (e.g. whether date epoch is 1904 instead of 1900).\r\n */\r\nexport default function readXlsx(contents, xml, options = {}) {\r\n if (!options.sheet) {\r\n options = {\r\n sheet: 1,\r\n ...options\r\n }\r\n }\r\n\r\n // Some Excel editors don't want to use standard naming scheme for sheet files.\r\n // https://github.com/tidyverse/readxl/issues/104\r\n const fileNames = parseFileNames(contents['xl/_rels/workbook.xml.rels'], xml)\r\n\r\n // Default file path for \"shared strings\": \"xl/sharedStrings.xml\".\r\n const values = fileNames.sharedStrings\r\n ? parseValues(contents[`xl/${fileNames.sharedStrings}`], xml)\r\n : []\r\n\r\n // Default file path for \"styles\": \"xl/styles.xml\".\r\n const styles = fileNames.styles\r\n ? parseStyles(contents[`xl/${fileNames.styles}`], xml)\r\n : {}\r\n\r\n const properties = parseProperties(contents['xl/workbook.xml'], xml)\r\n\r\n // A feature for getting the list of sheets in an Excel file.\r\n // https://github.com/catamphetamine/read-excel-file/issues/14\r\n if (options.getSheets) {\r\n return properties.sheets.map(({ name }) => ({\r\n name\r\n }))\r\n }\r\n\r\n // Find the sheet by name, or take the first one.\r\n let sheetRelationId\r\n if (typeof options.sheet === 'number') {\r\n const _sheet = properties.sheets[options.sheet - 1]\r\n sheetRelationId = _sheet && _sheet.relationId\r\n } else {\r\n for (const sheet of properties.sheets) {\r\n if (sheet.name === options.sheet) {\r\n sheetRelationId = sheet.relationId\r\n break\r\n }\r\n }\r\n }\r\n\r\n // If the sheet wasn't found then throw an error.\r\n // Example: \"xl/worksheets/sheet1.xml\".\r\n if (!sheetRelationId || !fileNames.sheets[sheetRelationId]) {\r\n throw createSheetNotFoundError(options.sheet, properties.sheets)\r\n }\r\n\r\n // Parse sheet data.\r\n const sheet = parseSheet(\r\n contents[`xl/${fileNames.sheets[sheetRelationId]}`],\r\n xml,\r\n values,\r\n styles,\r\n properties,\r\n options\r\n )\r\n\r\n // If the sheet is empty.\r\n if (sheet.cells.length === 0) {\r\n if (options.properties) {\r\n return {\r\n data: [],\r\n properties\r\n }\r\n }\r\n return []\r\n }\r\n\r\n const [ leftTop, rightBottom ] = sheet.dimensions\r\n\r\n const colsCount = (rightBottom.column - leftTop.column) + 1\r\n const rowsCount = (rightBottom.row - leftTop.row) + 1\r\n\r\n // `sheet.cells` seem to not necessarily be sorted by row and column.\r\n let data = new Array(rowsCount)\r\n let i = 0\r\n while (i < rowsCount) {\r\n data[i] = new Array(colsCount)\r\n let j = 0\r\n while (j < colsCount) {\r\n data[i][j] = null\r\n j++\r\n }\r\n i++\r\n }\r\n\r\n for (const cell of sheet.cells) {\r\n const row = cell.row - leftTop.row\r\n const column = cell.column - leftTop.column\r\n data[row][column] = cell.value\r\n }\r\n\r\n // Fill in the row map.\r\n const { rowMap } = options\r\n if (rowMap) {\r\n let i = 0\r\n while (i < data.length) {\r\n rowMap[i] = i\r\n i++\r\n }\r\n }\r\n\r\n data = dropEmptyRows(\r\n dropEmptyColumns(data, { onlyTrimAtTheEnd: true }),\r\n { onlyTrimAtTheEnd: true, rowMap }\r\n )\r\n\r\n if (options.transformData) {\r\n data = options.transformData(data)\r\n // data = options.transformData(data, {\r\n // dropEmptyRowsAndColumns(data) {\r\n // return dropEmptyRows(dropEmptyColumns(data), { rowMap })\r\n // }\r\n // })\r\n }\r\n\r\n if (options.properties) {\r\n return {\r\n data,\r\n properties\r\n }\r\n }\r\n\r\n return data\r\n}\r\n\r\nfunction calculateDimensions (cells) {\r\n const comparator = (a, b) => a - b\r\n const allRows = cells.map(cell => cell.row).sort(comparator)\r\n const allCols = cells.map(cell => cell.column).sort(comparator)\r\n const minRow = allRows[0]\r\n const maxRow = allRows[allRows.length - 1]\r\n const minCol = allCols[0]\r\n const maxCol = allCols[allCols.length - 1]\r\n\r\n return [\r\n { row: minRow, column: minCol },\r\n { row: maxRow, column: maxCol }\r\n ]\r\n}\r\n\r\nfunction colToInt(col) {\r\n // `for ... of ...` would require Babel polyfill for iterating a string.\r\n let n = 0\r\n let i = 0\r\n while (i < col.length) {\r\n n *= 26\r\n n += letters.indexOf(col[i])\r\n i++\r\n }\r\n return n\r\n}\r\n\r\nfunction CellCoords(coords) {\r\n // Examples: \"AA2091\", \"R988\", \"B1\"\r\n coords = coords.split(/(\\d+)/)\r\n return [\r\n // Row.\r\n parseInt(coords[1]),\r\n // Column.\r\n colToInt(coords[0].trim())\r\n ]\r\n}\r\n\r\n// Example of a `<c/>`ell element:\r\n//\r\n// <c>\r\n// <f>string</f> — formula.\r\n// <v>string</v> — formula pre-computed value.\r\n// <is>\r\n// <t>string</t> — an `inlineStr` string (rather than a \"common string\" from a dictionary).\r\n// <r>\r\n// <rPr>\r\n// ...\r\n// </rPr>\r\n// <t>string</t>\r\n// </r>\r\n// <rPh sb=\"1\" eb=\"1\">\r\n// <t>string</t>\r\n// </rPh>\r\n// <phoneticPr fontId=\"1\"/>\r\n// </is>\r\n// <extLst>\r\n// <ext>\r\n// <!--any element-->\r\n// </ext>\r\n// </extLst>\r\n// </c>\r\n//\r\nfunction Cell(cellNode, sheet, xml, values, styles, properties, options) {\r\n const coords = CellCoords(cellNode.getAttribute('r'))\r\n\r\n const valueElement = getCellValue(sheet, cellNode)\r\n\r\n // For `xpath`, `value` can be `undefined` while for native `DOMParser` it's `null`.\r\n // So using `value && ...` instead of `if (value !== undefined) { ... }` here\r\n // for uniform compatibility with both `xpath` and native `DOMParser`.\r\n let value = valueElement && valueElement.textContent\r\n\r\n let type\r\n if (cellNode.hasAttribute('t')) {\r\n type = cellNode.getAttribute('t')\r\n } else {\r\n // Default cell type is \"n\" (numeric).\r\n // http://www.datypic.com/sc/ooxml/t-ssml_CT_Cell.html\r\n type = 'n'\r\n }\r\n\r\n // Available Excel cell types:\r\n // https://github.com/SheetJS/sheetjs/blob/19620da30be2a7d7b9801938a0b9b1fd3c4c4b00/docbits/52_datatype.md\r\n //\r\n // Some other document (seems to be old):\r\n // http://webapp.docx4java.org/OnlineDemo/ecma376/SpreadsheetML/ST_CellType.html\r\n //\r\n switch (type) {\r\n // If the cell contains formula string.\r\n case 'str':\r\n value = value.trim()\r\n if (value === '') {\r\n value = undefined\r\n }\r\n break\r\n\r\n // If the cell contains an \"inline\" (not \"shared\") string.\r\n case 'inlineStr':\r\n if (cellNode.firstChild &&\r\n cellNode.firstChild.tagName === 'is' &&\r\n cellNode.firstChild.firstChild &&\r\n cellNode.firstChild.firstChild.tagName === 't') {\r\n value = cellNode.firstChild.firstChild.textContent\r\n } else {\r\n throw new Error(`Unsupported \"inline string\" cell value structure: ${cellNode.textContent}`)\r\n }\r\n break\r\n\r\n // If the cell contains a \"shared\" string.\r\n // \"Shared\" strings is a way for an Excel editor to reduce\r\n // the file size by storing \"commonly used\" strings in a dictionary\r\n // and then referring to such strings by their index in that dictionary.\r\n case 's':\r\n // If a cell has no value then there's no `<c/>` element for it.\r\n // If a `<c/>` element exists then it's not empty.\r\n // The `<v/>`alue is a key in the \"shared strings\" dictionary of the\r\n // XLSX file, so look it up in the `values` dictionary by the numeric key.\r\n value = values[parseInt(value)].trim()\r\n if (value === '') {\r\n value = undefined\r\n }\r\n break\r\n\r\n case 'b':\r\n value = value === '1' ? true : false\r\n break\r\n\r\n // Stub: blank stub cell that is ignored by data processing utilities.\r\n case 'z':\r\n value = undefined\r\n break\r\n\r\n // Error: `value` is a numeric code.\r\n // They also wrote: \"and `w` property stores its common name\".\r\n // It's unclear what they meant by that.\r\n case 'e':\r\n value = decodeError(value)\r\n break\r\n\r\n // Date: a string to be parsed as a date.\r\n // (usually a string in \"ISO 8601\" format)\r\n case 'd':\r\n if (value === undefined) {\r\n break\r\n }\r\n value = new Date(value)\r\n break\r\n\r\n case 'n':\r\n if (value === undefined) {\r\n break\r\n }\r\n value = parseFloat(value)\r\n // XLSX does have \"d\" type for dates, but it's not commonly used.\r\n // specific format for dates.\r\n // Sometimes a date can be heuristically detected.\r\n // https://github.com/catamphetamine/read-excel-file/issues/3#issuecomment-395770777\r\n //\r\n // Format IDs:\r\n // https://xlsxwriter.readthedocs.io/format.html#format-set-num-format\r\n //\r\n if (cellNode.hasAttribute('s')) {\r\n const styleId = parseInt(cellNode.getAttribute('s'))\r\n const style = styles[styleId]\r\n if (!style) {\r\n throw new Error(`Cell style not found: ${styleId}`)\r\n }\r\n if (BUILT_IN_DATE_NUMBER_FORMAT_IDS.indexOf(parseInt(style.numberFormat.id)) >= 0 ||\r\n (options.dateFormat && style.numberFormat.template === options.dateFormat) ||\r\n (options.smartDateParser !== false && style.numberFormat.template && isDateTemplate(style.numberFormat.template))) {\r\n value = parseDate(value, properties)\r\n }\r\n }\r\n break\r\n\r\n default:\r\n throw new TypeError(`Cell type not supported: ${type}`)\r\n }\r\n\r\n // Convert empty values to `null`.\r\n if (value === undefined) {\r\n value = null\r\n }\r\n\r\n return {\r\n row: coords[0],\r\n column: coords[1],\r\n value\r\n }\r\n}\r\n\r\nexport function dropEmptyRows(data, {\r\n rowMap,\r\n accessor = _ => _,\r\n onlyTrimAtTheEnd\r\n} = {}) {\r\n // Drop empty rows.\r\n let i = data.length - 1\r\n while (i >= 0) {\r\n // Check if the row is empty.\r\n let empty = true\r\n for (const cell of data[i]) {\r\n if (accessor(cell) !== null) {\r\n empty = false\r\n break\r\n }\r\n }\r\n // Remove the empty row.\r\n if (empty) {\r\n data.splice(i, 1)\r\n if (rowMap) {\r\n rowMap.splice(i, 1)\r\n }\r\n } else if (onlyTrimAtTheEnd) {\r\n break\r\n }\r\n i--\r\n }\r\n return data\r\n}\r\n\r\nexport function dropEmptyColumns(data, {\r\n accessor = _ => _,\r\n onlyTrimAtTheEnd\r\n} = {}) {\r\n let i = data[0].length - 1\r\n while (i >= 0) {\r\n let empty = true\r\n for (const row of data) {\r\n if (accessor(row[i]) !== null) {\r\n empty = false\r\n break\r\n }\r\n }\r\n if (empty) {\r\n let j = 0;\r\n while (j < data.length) {\r\n data[j].splice(i, 1)\r\n j++\r\n }\r\n } else if (onlyTrimAtTheEnd) {\r\n break\r\n }\r\n i--\r\n }\r\n return data\r\n}\r\n\r\nfunction parseSheet(content, xml, values, styles, properties, options) {\r\n const sheet = xml.createDocument(content)\r\n\r\n let cells = getCells(sheet)\r\n\r\n if (cells.length === 0) {\r\n return { cells: [] }\r\n }\r\n\r\n cells = cells.map((node) => {\r\n return Cell(node, sheet, xml, values, styles, properties, options)\r\n })\r\n\r\n let dimensions = getDimensions(sheet)\r\n if (dimensions) {\r\n dimensions = dimensions.split(':').map(CellCoords).map(([row, column]) => ({\r\n row,\r\n column\r\n }))\r\n // When there's only a single cell on a sheet\r\n // there can sometimes be just \"A1\" for the dimensions string.\r\n if (dimensions.length === 1) {\r\n dimensions = [dimensions[0], dimensions[0]]\r\n }\r\n } else {\r\n dimensions = calculateDimensions(cells)\r\n }\r\n\r\n return { cells, dimensions }\r\n}\r\n\r\nfunction parseValues(content, xml) {\r\n if (!content) {\r\n return []\r\n }\r\n return getSharedStrings(xml.createDocument(content))\r\n}\r\n\r\n// http://officeopenxml.com/SSstyles.php\r\n// Returns an array of cell styles.\r\n// A cell style index is its ID.\r\nfunction parseStyles(content, xml) {\r\n if (!content) {\r\n return {}\r\n }\r\n\r\n // https://social.msdn.microsoft.com/Forums/sqlserver/en-US/708978af-b598-45c4-a598-d3518a5a09f0/howwhen-is-cellstylexfs-vs-cellxfs-applied-to-a-cell?forum=os_binaryfile\r\n // https://www.office-forums.com/threads/cellxfs-cellstylexfs.2163519/\r\n const doc = xml.createDocument(content)\r\n\r\n const baseStyles = getBaseStyles(doc)\r\n .map(parseCellStyle)\r\n\r\n const numberFormats = getNumberFormats(doc)\r\n .map(parseNumberFormatStyle)\r\n .reduce((formats, format) => {\r\n // Format ID is a numeric index.\r\n // There're some standard \"built-in\" formats (in Excel) up to about `100`.\r\n formats[format.id] = format\r\n return formats\r\n }, [])\r\n\r\n const getCellStyle = (xf) => {\r\n if (xf.hasAttribute('xfId')) {\r\n return {\r\n ...baseStyles[xf.xfId],\r\n ...parseCellStyle(xf, numberFormats)\r\n }\r\n }\r\n return parseCellStyle(xf, numberFormats)\r\n }\r\n\r\n return getCellStyles(doc).map(getCellStyle)\r\n}\r\n\r\nfunction parseNumberFormatStyle(numFmt) {\r\n return {\r\n id: numFmt.getAttribute('numFmtId'),\r\n template: numFmt.getAttribute('formatCode')\r\n }\r\n}\r\n\r\n// http://www.datypic.com/sc/ooxml/e-ssml_xf-2.html\r\nfunction parseCellStyle(xf, numFmts) {\r\n const style = {}\r\n if (xf.hasAttribute('numFmtId')) {\r\n const numberFormatId = xf.getAttribute('numFmtId')\r\n // Built-in number formats don't have a `<numFmt/>` element in `styles.xml`.\r\n // https://hexdocs.pm/xlsxir/number_styles.html\r\n if (numFmts[numberFormatId]) {\r\n style.numberFormat = numFmts[numberFormatId]\r\n } else {\r\n style.numberFormat = { id: numberFormatId }\r\n }\r\n }\r\n return style\r\n}\r\n\r\n// I guess `xl/workbook.xml` file should always be present inside the *.xlsx archive.\r\nfunction parseProperties(content, xml) {\r\n const book = xml.createDocument(content)\r\n\r\n const properties = {};\r\n\r\n // Read `<workbookPr/>` element to detect whether dates are 1900-based or 1904-based.\r\n // https://support.microsoft.com/en-gb/help/214330/differences-between-the-1900-and-the-1904-date-system-in-excel\r\n // http://webapp.docx4java.org/OnlineDemo/ecma376/SpreadsheetML/workbookPr.html\r\n\r\n const workbookProperties = getWorkbookProperties(book)\r\n\r\n if (workbookProperties && workbookProperties.getAttribute('date1904') === '1') {\r\n properties.epoch1904 = true\r\n }\r\n\r\n // Get sheets info (indexes, names, if they're available).\r\n // Example:\r\n // <sheets>\r\n // <sheet\r\n // xmlns:ns=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships\"\r\n // name=\"Sheet1\"\r\n // sheetId=\"1\"\r\n // ns:id=\"rId3\"/>\r\n // </sheets>\r\n // http://www.datypic.com/sc/ooxml/e-ssml_sheet-1.html\r\n\r\n properties.sheets = []\r\n\r\n const addSheetInfo = (sheet) => {\r\n if (sheet.getAttribute('name')) {\r\n properties.sheets.push({\r\n id: sheet.getAttribute('sheetId'),\r\n name: sheet.getAttribute('name'),\r\n relationId: sheet.getAttribute('r:id')\r\n })\r\n }\r\n }\r\n\r\n getSheets(book).forEach(addSheetInfo)\r\n\r\n return properties;\r\n}\r\n\r\n/**\r\n * Returns sheet file paths.\r\n * Seems that the correct place to look for the\r\n * `sheetId` -> `filename` mapping seems to be in the\r\n * `xl/_rels/workbook.xml.rels` file.\r\n * https://github.com/tidyverse/readxl/issues/104\r\n * @param {string} content — `xl/_rels/workbook.xml.rels` file contents.\r\n * @param {object} xml\r\n * @return {object}\r\n */\r\nfunction parseFileNames(content, xml) {\r\n // Example:\r\n // <Relationships xmlns=\"http://schemas.openxmlformats.org/package/2006/relationships\">\r\n // ...\r\n // <Relationship\r\n // Id=\"rId3\"\r\n // Type=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet\"\r\n // Target=\"worksheets/sheet1.xml\"/>\r\n // </Relationships>\r\n const document = xml.createDocument(content)\r\n\r\n const fileNames = {\r\n sheets: {},\r\n sharedStrings: undefined,\r\n styles: undefined\r\n }\r\n\r\n const addFileNamesInfo = (relationship) => {\r\n const filePath = relationship.getAttribute('Target')\r\n switch (relationship.getAttribute('Type')) {\r\n case 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles':\r\n fileNames.styles = filePath\r\n break\r\n case 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/sharedStrings':\r\n fileNames.sharedStrings = filePath\r\n break\r\n case 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet':\r\n fileNames.sheets[relationship.getAttribute('Id')] = filePath\r\n break\r\n }\r\n }\r\n\r\n getRelationships(document).forEach(addFileNamesInfo)\r\n\r\n // Seems like \"sharedStrings.xml\" is not required to exist.\r\n // For example, when the spreadsheet doesn't contain any strings.\r\n // https://github.com/catamphetamine/read-excel-file/issues/85\r\n // if (!fileNames.sharedStrings) {\r\n // throw new Error('\"sharedStrings.xml\" file not found in the *.xlsx file')\r\n // }\r\n\r\n return fileNames\r\n}\r\n\r\nfunction isDateTemplate(template) {\r\n const tokens = template.split(/\\W+/)\r\n for (const token of tokens) {\r\n if (['MM', 'DD', 'YY', 'YYYY'].indexOf(token) < 0) {\r\n return false\r\n }\r\n }\r\n return true\r\n}\r\n\r\nfunction createSheetNotFoundError(sheet, sheets) {\r\n const sheetsList = sheets && sheets.map((sheet, i) => `\"${sheet.name}\" (#${i + 1})`).join(', ')\r\n return new Error(`Sheet ${typeof sheet === 'number' ? '#' + sheet : '\"' + sheet + '\"'} not found in the *.xlsx file.${sheets ? ' Available sheets: ' + sheetsList + '.' : ''}`)\r\n}\r\n\r\n// Decodes numeric error code to a string code.\r\n// https://github.com/SheetJS/sheetjs/blob/19620da30be2a7d7b9801938a0b9b1fd3c4c4b00/docbits/52_datatype.md\r\nfunction decodeError(errorCode) {\r\n // While the error values are determined by the application,\r\n // the following are some example error values that could be used:\r\n switch (errorCode) {\r\n case 0x00:\r\n return '#NULL!'\r\n case 0x07:\r\n return '#DIV/0!'\r\n case 0x0F:\r\n return '#VALUE!'\r\n case 0x17:\r\n return '#REF!'\r\n case 0x1D:\r\n return '#NAME?'\r\n case 0x24:\r\n return '#NUM!'\r\n case 0x2A:\r\n return '#N/A'\r\n case 0x2B:\r\n return '#GETTING_DATA'\r\n default:\r\n // Such error code doesn't exist. I made it up.\r\n return `#ERROR_${errorCode}`\r\n }\r\n}"],"file":"readXlsx.js"}
|
|
1
|
+
{"version":3,"sources":["../../source/read/readXlsx.js"],"names":["parseProperties","parseFilePaths","parseStyles","parseSharedStrings","parseSheet","getData","readXlsx","contents","xml","options","sheet","filePaths","values","sharedStrings","styles","properties","getSheets","sheets","map","name","sheetId","getSheetId","createSheetNotFoundError","data","_sheet","relationId","sheetsList","i","join","Error"],"mappings":"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","sourcesContent":["import parseProperties from './parseProperties'\r\nimport parseFilePaths from './parseFilePaths'\r\nimport parseStyles from './parseStyles'\r\nimport parseSharedStrings from './parseSharedStrings'\r\nimport parseSheet from './parseSheet'\r\nimport getData from './getData'\r\n\r\n// For an introduction in reading `*.xlsx` files see \"The minimum viable XLSX reader\":\r\n// https://www.brendanlong.com/the-minimum-viable-xlsx-reader.html\r\n\r\n/**\r\n * Reads an (unzipped) XLSX file structure into a 2D array of cells.\r\n * @param {object} contents - A list of XML files inside XLSX file (which is a zipped directory).\r\n * @param {number?} options.sheet - Workbook sheet id (`1` by default).\r\n * @param {string?} options.dateFormat - Date format, e.g. \"mm/dd/yyyy\". Values having this format template set will be parsed as dates.\r\n * @param {object} contents - A list of XML files inside XLSX file (which is a zipped directory).\r\n * @return {object} An object of shape `{ data, cells, properties }`. `data: string[][]` is an array of rows, each row being an array of cell values. `cells: string[][]` is an array of rows, each row being an array of cells. `properties: object` is the spreadsheet properties (e.g. whether date epoch is 1904 instead of 1900).\r\n */\r\nexport default function readXlsx(contents, xml, options = {}) {\r\n if (!options.sheet) {\r\n options = {\r\n sheet: 1,\r\n ...options\r\n }\r\n }\r\n\r\n // Some Excel editors don't want to use standard naming scheme for sheet files.\r\n // https://github.com/tidyverse/readxl/issues/104\r\n const filePaths = parseFilePaths(contents['xl/_rels/workbook.xml.rels'], xml)\r\n\r\n // Default file path for \"shared strings\": \"xl/sharedStrings.xml\".\r\n const values = filePaths.sharedStrings\r\n ? parseSharedStrings(contents[filePaths.sharedStrings], xml)\r\n : []\r\n\r\n // Default file path for \"styles\": \"xl/styles.xml\".\r\n const styles = filePaths.styles\r\n ? parseStyles(contents[filePaths.styles], xml)\r\n : {}\r\n\r\n const properties = parseProperties(contents['xl/workbook.xml'], xml)\r\n\r\n // A feature for getting the list of sheets in an Excel file.\r\n // https://github.com/catamphetamine/read-excel-file/issues/14\r\n if (options.getSheets) {\r\n return properties.sheets.map(({ name }) => ({\r\n name\r\n }))\r\n }\r\n\r\n // Find the sheet by name, or take the first one.\r\n const sheetId = getSheetId(options.sheet, properties.sheets)\r\n\r\n // If the sheet wasn't found then throw an error.\r\n // Example: \"xl/worksheets/sheet1.xml\".\r\n if (!sheetId || !filePaths.sheets[sheetId]) {\r\n throw createSheetNotFoundError(options.sheet, properties.sheets)\r\n }\r\n\r\n // Parse sheet data.\r\n const sheet = parseSheet(\r\n contents[filePaths.sheets[sheetId]],\r\n xml,\r\n values,\r\n styles,\r\n properties,\r\n options\r\n )\r\n\r\n // Get spreadsheet data.\r\n const data = getData(sheet, options)\r\n\r\n // Can return properties, if required.\r\n if (options.properties) {\r\n return {\r\n data,\r\n properties\r\n }\r\n }\r\n\r\n // Return spreadsheet data.\r\n return data\r\n}\r\n\r\nfunction getSheetId(sheet, sheets) {\r\n if (typeof sheet === 'number') {\r\n const _sheet = sheets[sheet - 1]\r\n return _sheet && _sheet.relationId\r\n }\r\n for (const _sheet of sheets) {\r\n if (_sheet.name === sheet) {\r\n return _sheet.relationId\r\n }\r\n }\r\n}\r\n\r\nfunction createSheetNotFoundError(sheet, sheets) {\r\n const sheetsList = sheets && sheets.map((sheet, i) => `\"${sheet.name}\" (#${i + 1})`).join(', ')\r\n return new Error(`Sheet ${typeof sheet === 'number' ? '#' + sheet : '\"' + sheet + '\"'} not found in the *.xlsx file.${sheets ? ' Available sheets: ' + sheetsList + '.' : ''}`)\r\n}"],"file":"readXlsx.js"}
|
package/modules/xml/dom.js
CHANGED
|
@@ -5,7 +5,7 @@ export function findChild(node, tagName) {
|
|
|
5
5
|
var childNode = node.childNodes[i]; // `nodeType: 1` means "Element".
|
|
6
6
|
// https://www.w3schools.com/xml/prop_element_nodetype.asp
|
|
7
7
|
|
|
8
|
-
if (childNode.nodeType === 1 && childNode
|
|
8
|
+
if (childNode.nodeType === 1 && getTagName(childNode) === tagName) {
|
|
9
9
|
return childNode;
|
|
10
10
|
}
|
|
11
11
|
|
|
@@ -20,7 +20,7 @@ export function findChildren(node, tagName) {
|
|
|
20
20
|
var childNode = node.childNodes[i]; // `nodeType: 1` means "Element".
|
|
21
21
|
// https://www.w3schools.com/xml/prop_element_nodetype.asp
|
|
22
22
|
|
|
23
|
-
if (childNode.nodeType === 1 && childNode
|
|
23
|
+
if (childNode.nodeType === 1 && getTagName(childNode) === tagName) {
|
|
24
24
|
results.push(childNode);
|
|
25
25
|
}
|
|
26
26
|
|
|
@@ -42,7 +42,7 @@ export function forEach(node, tagName, func) {
|
|
|
42
42
|
if (tagName) {
|
|
43
43
|
// `nodeType: 1` means "Element".
|
|
44
44
|
// https://www.w3schools.com/xml/prop_element_nodetype.asp
|
|
45
|
-
if (childNode.nodeType === 1 && childNode
|
|
45
|
+
if (childNode.nodeType === 1 && getTagName(childNode) === tagName) {
|
|
46
46
|
func(childNode, i);
|
|
47
47
|
}
|
|
48
48
|
} else {
|
|
@@ -59,4 +59,15 @@ export function map(node, tagName, func) {
|
|
|
59
59
|
});
|
|
60
60
|
return results;
|
|
61
61
|
}
|
|
62
|
+
var NAMESPACE_REG_EXP = /.+\:/;
|
|
63
|
+
export function getTagName(element) {
|
|
64
|
+
// For some weird reason, if an element is declared as,
|
|
65
|
+
// for example, `<x:sheets/>`, then its `.tagName` will be
|
|
66
|
+
// "x:sheets" instead of just "sheets".
|
|
67
|
+
// https://gitlab.com/catamphetamine/read-excel-file/-/issues/25
|
|
68
|
+
// Its not clear how to tell it to ignore any namespaces
|
|
69
|
+
// when getting `.tagName`, so just replacing anything
|
|
70
|
+
// before a colon, if any.
|
|
71
|
+
return element.tagName.replace(NAMESPACE_REG_EXP, '');
|
|
72
|
+
}
|
|
62
73
|
//# sourceMappingURL=dom.js.map
|
package/modules/xml/dom.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../source/xml/dom.js"],"names":["findChild","node","tagName","i","childNodes","length","childNode","nodeType","findChildren","results","push","forEach","func","map"],"mappings":"AAAA,OAAO,SAASA,SAAT,CAAmBC,IAAnB,EAAyBC,OAAzB,EAAkC;AACxC,MAAIC,CAAC,GAAG,CAAR;;AACA,SAAOA,CAAC,GAAGF,IAAI,CAACG,UAAL,CAAgBC,MAA3B,EAAmC;AAClC,QAAMC,SAAS,GAAGL,IAAI,CAACG,UAAL,CAAgBD,CAAhB,CAAlB,CADkC,CAElC;AACA;;AACA,QAAIG,SAAS,CAACC,QAAV,KAAuB,CAAvB,
|
|
1
|
+
{"version":3,"sources":["../../source/xml/dom.js"],"names":["findChild","node","tagName","i","childNodes","length","childNode","nodeType","getTagName","findChildren","results","push","forEach","func","map","NAMESPACE_REG_EXP","element","replace"],"mappings":"AAAA,OAAO,SAASA,SAAT,CAAmBC,IAAnB,EAAyBC,OAAzB,EAAkC;AACxC,MAAIC,CAAC,GAAG,CAAR;;AACA,SAAOA,CAAC,GAAGF,IAAI,CAACG,UAAL,CAAgBC,MAA3B,EAAmC;AAClC,QAAMC,SAAS,GAAGL,IAAI,CAACG,UAAL,CAAgBD,CAAhB,CAAlB,CADkC,CAElC;AACA;;AACA,QAAIG,SAAS,CAACC,QAAV,KAAuB,CAAvB,IAA4BC,UAAU,CAACF,SAAD,CAAV,KAA0BJ,OAA1D,EAAmE;AAClE,aAAOI,SAAP;AACA;;AACDH,IAAAA,CAAC;AACD;AACD;AAED,OAAO,SAASM,YAAT,CAAsBR,IAAtB,EAA4BC,OAA5B,EAAqC;AAC3C,MAAMQ,OAAO,GAAG,EAAhB;AACA,MAAIP,CAAC,GAAG,CAAR;;AACA,SAAOA,CAAC,GAAGF,IAAI,CAACG,UAAL,CAAgBC,MAA3B,EAAmC;AAClC,QAAMC,SAAS,GAAGL,IAAI,CAACG,UAAL,CAAgBD,CAAhB,CAAlB,CADkC,CAElC;AACA;;AACA,QAAIG,SAAS,CAACC,QAAV,KAAuB,CAAvB,IAA4BC,UAAU,CAACF,SAAD,CAAV,KAA0BJ,OAA1D,EAAmE;AAClEQ,MAAAA,OAAO,CAACC,IAAR,CAAaL,SAAb;AACA;;AACDH,IAAAA,CAAC;AACD;;AACD,SAAOO,OAAP;AACA;AAED,OAAO,SAASE,OAAT,CAAiBX,IAAjB,EAAuBC,OAAvB,EAAgCW,IAAhC,EAAsC;AAC5C;AACA;AACA;AACA;AACA,MAAIV,CAAC,GAAG,CAAR;;AACA,SAAOA,CAAC,GAAGF,IAAI,CAACG,UAAL,CAAgBC,MAA3B,EAAmC;AAClC,QAAMC,SAAS,GAAGL,IAAI,CAACG,UAAL,CAAgBD,CAAhB,CAAlB;;AACA,QAAID,OAAJ,EAAa;AACZ;AACA;AACA,UAAII,SAAS,CAACC,QAAV,KAAuB,CAAvB,IAA4BC,UAAU,CAACF,SAAD,CAAV,KAA0BJ,OAA1D,EAAmE;AAClEW,QAAAA,IAAI,CAACP,SAAD,EAAYH,CAAZ,CAAJ;AACA;AACD,KAND,MAMO;AACNU,MAAAA,IAAI,CAACP,SAAD,EAAYH,CAAZ,CAAJ;AACA;;AACDA,IAAAA,CAAC;AACD;AACD;AAED,OAAO,SAASW,GAAT,CAAab,IAAb,EAAmBC,OAAnB,EAA4BW,IAA5B,EAAkC;AACxC,MAAMH,OAAO,GAAG,EAAhB;AACAE,EAAAA,OAAO,CAACX,IAAD,EAAOC,OAAP,EAAgB,UAACD,IAAD,EAAOE,CAAP,EAAa;AACnCO,IAAAA,OAAO,CAACC,IAAR,CAAaE,IAAI,CAACZ,IAAD,EAAOE,CAAP,CAAjB;AACA,GAFM,CAAP;AAGA,SAAOO,OAAP;AACA;AAED,IAAMK,iBAAiB,GAAG,MAA1B;AACA,OAAO,SAASP,UAAT,CAAoBQ,OAApB,EAA6B;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAOA,OAAO,CAACd,OAAR,CAAgBe,OAAhB,CAAwBF,iBAAxB,EAA2C,EAA3C,CAAP;AACA","sourcesContent":["export function findChild(node, tagName) {\r\n\tlet i = 0\r\n\twhile (i < node.childNodes.length) {\r\n\t\tconst childNode = node.childNodes[i]\r\n\t\t// `nodeType: 1` means \"Element\".\r\n\t\t// https://www.w3schools.com/xml/prop_element_nodetype.asp\r\n\t\tif (childNode.nodeType === 1 && getTagName(childNode) === tagName) {\r\n\t\t\treturn childNode\r\n\t\t}\r\n\t\ti++\r\n\t}\r\n}\r\n\r\nexport function findChildren(node, tagName) {\r\n\tconst results = []\r\n\tlet i = 0\r\n\twhile (i < node.childNodes.length) {\r\n\t\tconst childNode = node.childNodes[i]\r\n\t\t// `nodeType: 1` means \"Element\".\r\n\t\t// https://www.w3schools.com/xml/prop_element_nodetype.asp\r\n\t\tif (childNode.nodeType === 1 && getTagName(childNode) === tagName) {\r\n\t\t\tresults.push(childNode)\r\n\t\t}\r\n\t\ti++\r\n\t}\r\n\treturn results\r\n}\r\n\r\nexport function forEach(node, tagName, func) {\r\n\t// if (typeof tagName === 'function') {\r\n\t// \tfunc = tagName\r\n\t// \ttagName = undefined\r\n\t// }\r\n\tlet i = 0\r\n\twhile (i < node.childNodes.length) {\r\n\t\tconst childNode = node.childNodes[i]\r\n\t\tif (tagName) {\r\n\t\t\t// `nodeType: 1` means \"Element\".\r\n\t\t\t// https://www.w3schools.com/xml/prop_element_nodetype.asp\r\n\t\t\tif (childNode.nodeType === 1 && getTagName(childNode) === tagName) {\r\n\t\t\t\tfunc(childNode, i)\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tfunc(childNode, i)\r\n\t\t}\r\n\t\ti++\r\n\t}\r\n}\r\n\r\nexport function map(node, tagName, func) {\r\n\tconst results = []\r\n\tforEach(node, tagName, (node, i) => {\r\n\t\tresults.push(func(node, i))\r\n\t})\r\n\treturn results\r\n}\r\n\r\nconst NAMESPACE_REG_EXP = /.+\\:/\r\nexport function getTagName(element) {\r\n\t// For some weird reason, if an element is declared as,\r\n\t// for example, `<x:sheets/>`, then its `.tagName` will be\r\n\t// \"x:sheets\" instead of just \"sheets\".\r\n\t// https://gitlab.com/catamphetamine/read-excel-file/-/issues/25\r\n\t// Its not clear how to tell it to ignore any namespaces\r\n\t// when getting `.tagName`, so just replacing anything\r\n\t// before a colon, if any.\r\n\treturn element.tagName.replace(NAMESPACE_REG_EXP, '')\r\n}"],"file":"dom.js"}
|
|
@@ -19,9 +19,15 @@ var namespaces = {
|
|
|
19
19
|
export function getCells(document) {
|
|
20
20
|
return xpath(document, null, '/a:worksheet/a:sheetData/a:row/a:c', namespaces);
|
|
21
21
|
}
|
|
22
|
+
export function getMergedCells(document) {
|
|
23
|
+
return xpath(document, null, '/a:worksheet/a:mergedCells/a:mergedCell/@ref', namespaces);
|
|
24
|
+
}
|
|
22
25
|
export function getCellValue(document, node) {
|
|
23
26
|
return xpath(document, node, './a:v', namespaces)[0];
|
|
24
27
|
}
|
|
28
|
+
export function getCellInlineStringValue(document, node) {
|
|
29
|
+
return xpath(document, node, './a:is/a:t', namespaces)[0].textContent;
|
|
30
|
+
}
|
|
25
31
|
export function getDimensions(document) {
|
|
26
32
|
var dimensions = xpath(document, null, '/a:worksheet/a:dimension/@ref', namespaces)[0];
|
|
27
33
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../source/xml/xlsx-xpath.js"],"names":["xpath","namespaces","a","r","rr","getCells","document","getCellValue","node","
|
|
1
|
+
{"version":3,"sources":["../../source/xml/xlsx-xpath.js"],"names":["xpath","namespaces","a","r","rr","getCells","document","getMergedCells","getCellValue","node","getCellInlineStringValue","textContent","getDimensions","dimensions","getBaseStyles","getCellStyles","getNumberFormats","getSharedStrings","map","string","_","join","getWorkbookProperties","getRelationships","getSheets"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAOA,KAAP,MAAkB,aAAlB;AAEA,IAAMC,UAAU,GAAG;AACjBC,EAAAA,CAAC,EAAE,2DADc;AAEjB;AACAC,EAAAA,CAAC,EAAE,qEAHc;AAIjB;AACAC,EAAAA,EAAE,EAAE;AALa,CAAnB;AAQA,OAAO,SAASC,QAAT,CAAkBC,QAAlB,EAA4B;AACjC,SAAON,KAAK,CAACM,QAAD,EAAW,IAAX,EAAiB,oCAAjB,EAAuDL,UAAvD,CAAZ;AACD;AAED,OAAO,SAASM,cAAT,CAAwBD,QAAxB,EAAkC;AACvC,SAAON,KAAK,CAACM,QAAD,EAAW,IAAX,EAAiB,8CAAjB,EAAiEL,UAAjE,CAAZ;AACD;AAED,OAAO,SAASO,YAAT,CAAsBF,QAAtB,EAAgCG,IAAhC,EAAsC;AAC3C,SAAOT,KAAK,CAACM,QAAD,EAAWG,IAAX,EAAiB,OAAjB,EAA0BR,UAA1B,CAAL,CAA2C,CAA3C,CAAP;AACD;AAED,OAAO,SAASS,wBAAT,CAAkCJ,QAAlC,EAA4CG,IAA5C,EAAkD;AACvD,SAAOT,KAAK,CAACM,QAAD,EAAWG,IAAX,EAAiB,YAAjB,EAA+BR,UAA/B,CAAL,CAAgD,CAAhD,EAAmDU,WAA1D;AACD;AAED,OAAO,SAASC,aAAT,CAAuBN,QAAvB,EAAiC;AACtC,MAAMO,UAAU,GAAGb,KAAK,CAACM,QAAD,EAAW,IAAX,EAAiB,+BAAjB,EAAkDL,UAAlD,CAAL,CAAmE,CAAnE,CAAnB;;AACA,MAAIY,UAAJ,EAAgB;AACd,WAAOA,UAAU,CAACF,WAAlB;AACD;AACF;AAED,OAAO,SAASG,aAAT,CAAuBR,QAAvB,EAAiC;AACtC,SAAON,KAAK,CAACM,QAAD,EAAW,IAAX,EAAiB,mCAAjB,EAAsDL,UAAtD,CAAZ;AACD;AAED,OAAO,SAASc,aAAT,CAAuBT,QAAvB,EAAiC;AACtC,SAAON,KAAK,CAACM,QAAD,EAAW,IAAX,EAAiB,8BAAjB,EAAiDL,UAAjD,CAAZ;AACD;AAED,OAAO,SAASe,gBAAT,CAA0BV,QAA1B,EAAoC;AACzC,SAAON,KAAK,CAACM,QAAD,EAAW,IAAX,EAAiB,kCAAjB,EAAqDL,UAArD,CAAZ;AACD;AAED,OAAO,SAASgB,gBAAT,CAA0BX,QAA1B,EAAoC;AAC1C;AACA;AACA;AAEC;AACA;AACD;AACC;AACA;AACA,SAAON,KAAK,CAACM,QAAD,EAAW,IAAX,EAAiB,aAAjB,EAAgCL,UAAhC,CAAL,CACJiB,GADI,CACA,UAAAC,MAAM;AAAA,WAAInB,KAAK,CAACM,QAAD,EAAWa,MAAX,EAAmB,8BAAnB,EAAmDlB,UAAnD,CAAL,CACViB,GADU,CACN,UAAAE,CAAC;AAAA,aAAIA,CAAC,CAACT,WAAN;AAAA,KADK,EACcU,IADd,CACmB,EADnB,CAAJ;AAAA,GADN,CAAP;AAID;AAED,OAAO,SAASC,qBAAT,CAA+BhB,QAA/B,EAAyC;AAC9C,SAAON,KAAK,CAACM,QAAD,EAAW,IAAX,EAAiB,0BAAjB,EAA6CL,UAA7C,CAAL,CAA8D,CAA9D,CAAP;AACD;AAED,OAAO,SAASsB,gBAAT,CAA0BjB,QAA1B,EAAoC;AACzC,SAAON,KAAK,CAACM,QAAD,EAAW,IAAX,EAAiB,mCAAjB,EAAsDL,UAAtD,CAAZ;AACD;AAED,OAAO,SAASuB,SAAT,CAAmBlB,QAAnB,EAA6B;AAClC,SAAON,KAAK,CAACM,QAAD,EAAW,IAAX,EAAiB,8BAAjB,EAAiDL,UAAjD,CAAZ;AACD","sourcesContent":["// Turns out IE11 doesn't support XPath, so not using `./xpathBrowser` for browsers.\r\n// https://github.com/catamphetamine/read-excel-file/issues/26\r\n// The inclusion of `xpath` package in `./xpathNode`\r\n// increases the bundle size by about 100 kilobytes.\r\n// IE11 is a wide-spread browser and it's unlikely that\r\n// anyone would ignore it for now.\r\n// There could be a separate export `read-excel-file/ie11`\r\n// for using `./xpathNode` instead of `./xpathBrowser`\r\n// but this library has been migrated to not using `xpath` anyway.\r\n// This code is just alternative/historical now, it seems.\r\nimport xpath from './xpathNode'\r\n\r\nconst namespaces = {\r\n a: 'http://schemas.openxmlformats.org/spreadsheetml/2006/main',\r\n // This one seems to be for `r:id` attributes on `<sheet>`s.\r\n r: 'http://schemas.openxmlformats.org/officeDocument/2006/relationships',\r\n // This one seems to be for `<Relationships/>` file.\r\n rr: 'http://schemas.openxmlformats.org/package/2006/relationships'\r\n}\r\n\r\nexport function getCells(document) {\r\n return xpath(document, null, '/a:worksheet/a:sheetData/a:row/a:c', namespaces)\r\n}\r\n\r\nexport function getMergedCells(document) {\r\n return xpath(document, null, '/a:worksheet/a:mergedCells/a:mergedCell/@ref', namespaces)\r\n}\r\n\r\nexport function getCellValue(document, node) {\r\n return xpath(document, node, './a:v', namespaces)[0]\r\n}\r\n\r\nexport function getCellInlineStringValue(document, node) {\r\n return xpath(document, node, './a:is/a:t', namespaces)[0].textContent\r\n}\r\n\r\nexport function getDimensions(document) {\r\n const dimensions = xpath(document, null, '/a:worksheet/a:dimension/@ref', namespaces)[0]\r\n if (dimensions) {\r\n return dimensions.textContent\r\n }\r\n}\r\n\r\nexport function getBaseStyles(document) {\r\n return xpath(document, null, '/a:styleSheet/a:cellStyleXfs/a:xf', namespaces)\r\n}\r\n\r\nexport function getCellStyles(document) {\r\n return xpath(document, null, '/a:styleSheet/a:cellXfs/a:xf', namespaces)\r\n}\r\n\r\nexport function getNumberFormats(document) {\r\n return xpath(document, null, '/a:styleSheet/a:numFmts/a:numFmt', namespaces)\r\n}\r\n\r\nexport function getSharedStrings(document) {\r\n\t// An `<si/>` element can contain a `<t/>` (simplest case) or a set of `<r/>` (\"rich formatting\") elements having `<t/>`.\r\n\t// https://docs.microsoft.com/en-us/dotnet/api/documentformat.openxml.spreadsheet.sharedstringitem?redirectedfrom=MSDN&view=openxml-2.8.1\r\n\t// http://www.datypic.com/sc/ooxml/e-ssml_si-1.html\r\n\r\n // The \".//a:t[not(ancestor::a:rPh)]\" selector means:\r\n // \"select all `<t/>` that are not children of `<rPh/>`\". \r\n\t// https://stackoverflow.com/questions/42773772/xpath-span-what-does-the-dot-mean\r\n // `<rPh><t></t></rPh>` seems to be some \"phonetic data\" added for languages like Japanese that should be ignored.\r\n // https://github.com/doy/spreadsheet-parsexlsx/issues/72\r\n return xpath(document, null, '/a:sst/a:si', namespaces)\r\n .map(string => xpath(document, string, './/a:t[not(ancestor::a:rPh)]', namespaces)\r\n .map(_ => _.textContent).join('')\r\n )\r\n}\r\n\r\nexport function getWorkbookProperties(document) {\r\n return xpath(document, null, '/a:workbook/a:workbookPr', namespaces)[0]\r\n}\r\n\r\nexport function getRelationships(document) {\r\n return xpath(document, null, '/rr:Relationships/rr:Relationship', namespaces)\r\n}\r\n\r\nexport function getSheets(document) {\r\n return xpath(document, null, '/a:workbook/a:sheets/a:sheet', namespaces)\r\n}"],"file":"xlsx-xpath.js"}
|
package/modules/xml/xlsx.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { findChild, findChildren, forEach, map } from './dom';
|
|
1
|
+
import { findChild, findChildren, forEach, map, getTagName } from './dom';
|
|
2
2
|
export function getCells(document) {
|
|
3
3
|
var worksheet = document.documentElement;
|
|
4
4
|
var sheetData = findChild(worksheet, 'sheetData');
|
|
@@ -10,9 +10,27 @@ export function getCells(document) {
|
|
|
10
10
|
});
|
|
11
11
|
return cells;
|
|
12
12
|
}
|
|
13
|
+
export function getMergedCells(document) {
|
|
14
|
+
var worksheet = document.documentElement;
|
|
15
|
+
var mergedCells = findChild(worksheet, 'mergeCells');
|
|
16
|
+
var mergedCellsInfo = [];
|
|
17
|
+
|
|
18
|
+
if (mergedCells) {
|
|
19
|
+
forEach(mergedCells, 'mergeCell', function (mergedCell) {
|
|
20
|
+
mergedCellsInfo.push(mergedCell.getAttribute('ref'));
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
return mergedCellsInfo;
|
|
25
|
+
}
|
|
13
26
|
export function getCellValue(document, node) {
|
|
14
27
|
return findChild(node, 'v');
|
|
15
28
|
}
|
|
29
|
+
export function getCellInlineStringValue(document, node) {
|
|
30
|
+
if (node.firstChild && getTagName(node.firstChild) === 'is' && node.firstChild.firstChild && getTagName(node.firstChild.firstChild) === 't') {
|
|
31
|
+
return node.firstChild.firstChild.textContent;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
16
34
|
export function getDimensions(document) {
|
|
17
35
|
var worksheet = document.documentElement;
|
|
18
36
|
var dimensions = findChild(worksheet, 'dimension');
|
package/modules/xml/xlsx.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../source/xml/xlsx.js"],"names":["findChild","findChildren","forEach","map","getCells","document","worksheet","documentElement","sheetData","cells","row","cell","push","getCellValue","node","
|
|
1
|
+
{"version":3,"sources":["../../source/xml/xlsx.js"],"names":["findChild","findChildren","forEach","map","getTagName","getCells","document","worksheet","documentElement","sheetData","cells","row","cell","push","getMergedCells","mergedCells","mergedCellsInfo","mergedCell","getAttribute","getCellValue","node","getCellInlineStringValue","firstChild","textContent","getDimensions","dimensions","getBaseStyles","styleSheet","cellStyleXfs","getCellStyles","cellXfs","getNumberFormats","numberFormats","numFmts","getSharedStrings","sst","string","t","value","r","getWorkbookProperties","workbook","getRelationships","relationships","getSheets","sheets"],"mappings":"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","sourcesContent":["import { findChild, findChildren, forEach, map, getTagName } from './dom'\r\n\r\nexport function getCells(document) {\r\n const worksheet = document.documentElement\r\n const sheetData = findChild(worksheet, 'sheetData')\r\n const cells = []\r\n forEach(sheetData, 'row', (row) => {\r\n forEach(row, 'c', (cell) => {\r\n cells.push(cell)\r\n })\r\n })\r\n return cells\r\n}\r\n\r\nexport function getMergedCells(document) {\r\n const worksheet = document.documentElement\r\n const mergedCells = findChild(worksheet, 'mergeCells')\r\n const mergedCellsInfo = []\r\n if (mergedCells) {\r\n forEach(mergedCells, 'mergeCell', (mergedCell) => {\r\n mergedCellsInfo.push(mergedCell.getAttribute('ref'))\r\n })\r\n }\r\n return mergedCellsInfo\r\n}\r\n\r\nexport function getCellValue(document, node) {\r\n return findChild(node, 'v')\r\n}\r\n\r\nexport function getCellInlineStringValue(document, node) {\r\n if (node.firstChild &&\r\n getTagName(node.firstChild) === 'is' &&\r\n node.firstChild.firstChild &&\r\n getTagName(node.firstChild.firstChild) === 't') {\r\n return node.firstChild.firstChild.textContent\r\n }\r\n}\r\n\r\nexport function getDimensions(document) {\r\n const worksheet = document.documentElement\r\n const dimensions = findChild(worksheet, 'dimension')\r\n if (dimensions) {\r\n return dimensions.getAttribute('ref')\r\n }\r\n}\r\n\r\nexport function getBaseStyles(document) {\r\n const styleSheet = document.documentElement\r\n const cellStyleXfs = findChild(styleSheet, 'cellStyleXfs')\r\n if (cellStyleXfs) {\r\n return findChildren(cellStyleXfs, 'xf')\r\n }\r\n return []\r\n}\r\n\r\nexport function getCellStyles(document) {\r\n const styleSheet = document.documentElement\r\n const cellXfs = findChild(styleSheet, 'cellXfs')\r\n if (!cellXfs) {\r\n return []\r\n }\r\n return findChildren(cellXfs, 'xf')\r\n}\r\n\r\nexport function getNumberFormats(document) {\r\n const styleSheet = document.documentElement\r\n let numberFormats = []\r\n const numFmts = findChild(styleSheet, 'numFmts')\r\n if (numFmts) {\r\n return findChildren(numFmts, 'numFmt')\r\n }\r\n return []\r\n}\r\n\r\nexport function getSharedStrings(document) {\r\n\t// An `<si/>` element can contain a `<t/>` (simplest case) or a set of `<r/>` (\"rich formatting\") elements having `<t/>`.\r\n\t// https://docs.microsoft.com/en-us/dotnet/api/documentformat.openxml.spreadsheet.sharedstringitem?redirectedfrom=MSDN&view=openxml-2.8.1\r\n\t// http://www.datypic.com/sc/ooxml/e-ssml_si-1.html\r\n\r\n const sst = document.documentElement\r\n return map(sst, 'si', string => {\r\n const t = findChild(string, 't')\r\n if (t) {\r\n return t.textContent\r\n }\r\n let value = ''\r\n forEach(string, 'r', (r) => {\r\n value += findChild(r, 't').textContent\r\n })\r\n return value\r\n })\r\n}\r\n\r\nexport function getWorkbookProperties(document) {\r\n const workbook = document.documentElement\r\n return findChild(workbook, 'workbookPr')\r\n}\r\n\r\nexport function getRelationships(document) {\r\n const relationships = document.documentElement\r\n return findChildren(relationships, 'Relationship')\r\n}\r\n\r\nexport function getSheets(document) {\r\n const workbook = document.documentElement\r\n const sheets = findChild(workbook, 'sheets')\r\n return findChildren(sheets, 'sheet')\r\n}"],"file":"xlsx.js"}
|
package/modules/xml/xmlNode.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../source/xml/xmlNode.js"],"names":["XMLDOM","createDocument","content","DOMParser","parseFromString"],"mappings":"AAAA,OAAOA,MAAP,MAAmB,
|
|
1
|
+
{"version":3,"sources":["../../source/xml/xmlNode.js"],"names":["XMLDOM","createDocument","content","DOMParser","parseFromString"],"mappings":"AAAA,OAAOA,MAAP,MAAmB,gBAAnB;AAEA,eAAe;AACdC,EAAAA,cADc,0BACCC,OADD,EACU;AACvB,WAAO,IAAIF,MAAM,CAACG,SAAX,GAAuBC,eAAvB,CAAuCF,OAAvC,CAAP;AACA;AAHa,CAAf","sourcesContent":["import XMLDOM from '@xmldom/xmldom'\r\n\r\nexport default {\r\n\tcreateDocument(content) {\r\n\t\treturn new XMLDOM.DOMParser().parseFromString(content)\r\n\t}\r\n}"],"file":"xmlNode.js"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "read-excel-file",
|
|
3
|
-
"version": "5.2.
|
|
3
|
+
"version": "5.2.9",
|
|
4
4
|
"description": "Read small to medium `*.xlsx` files in a browser or Node.js. Parse to JSON with a strict schema.",
|
|
5
5
|
"module": "index.js",
|
|
6
6
|
"sideEffects": false,
|
|
@@ -18,9 +18,9 @@
|
|
|
18
18
|
"prepublishOnly": "npm-run-all build test browser-build"
|
|
19
19
|
},
|
|
20
20
|
"dependencies": {
|
|
21
|
-
"
|
|
22
|
-
"
|
|
23
|
-
"
|
|
21
|
+
"@xmldom/xmldom": "^0.7.0",
|
|
22
|
+
"jszip": "^3.7.1",
|
|
23
|
+
"unzipper": "^0.10.11"
|
|
24
24
|
},
|
|
25
25
|
"devDependencies": {
|
|
26
26
|
"@babel/cli": "^7.14.5",
|
|
@@ -41,7 +41,8 @@
|
|
|
41
41
|
"rollup-plugin-commonjs": "^10.1.0",
|
|
42
42
|
"rollup-plugin-json": "^4.0.0",
|
|
43
43
|
"rollup-plugin-node-resolve": "^5.2.0",
|
|
44
|
-
"rollup-plugin-terser": "^7.0.2"
|
|
44
|
+
"rollup-plugin-terser": "^7.0.2",
|
|
45
|
+
"xpath": "0.0.32"
|
|
45
46
|
},
|
|
46
47
|
"betterScripts": {
|
|
47
48
|
"browser-build": {
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../source/read/readXlsx.test.js"],"names":["describe","it","onlyTrimAtTheEnd","should","deep","equal","rowMap"],"mappings":"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","sourcesContent":["import { dropEmptyRows, dropEmptyColumns } from './readXlsx'\r\n\r\ndescribe('readXlsx', () => {\r\n\tit('should drop empty rows (only at the end)', () => {\r\n\t\tdropEmptyRows([\r\n\t\t\t[null, null, null],\r\n\t\t\t['A', 'B', 'C'],\r\n\t\t\t[null, 'D', null],\r\n\t\t\t[null, null, null],\r\n\t\t\t['E', 'F', 'G'],\r\n\t\t\t[null, null, null]\r\n\t\t], {\r\n\t\t\tonlyTrimAtTheEnd: true\r\n\t\t})\r\n\t\t.should.deep.equal([\r\n\t\t\t[null, null, null],\r\n\t\t\t['A', 'B', 'C'],\r\n\t\t\t[null, 'D', null],\r\n\t\t\t[null, null, null],\r\n\t\t\t['E', 'F', 'G']\r\n\t\t])\r\n\t})\r\n\r\n\tit('should drop empty rows', () => {\r\n\t\tdropEmptyRows([\r\n\t\t\t[null, null, null],\r\n\t\t\t['A', 'B', 'C'],\r\n\t\t\t[null, 'D', null],\r\n\t\t\t[null, null, null],\r\n\t\t\t['E', 'F', 'G'],\r\n\t\t\t[null, null, null]\r\n\t\t])\r\n\t\t.should.deep.equal([\r\n\t\t\t['A', 'B', 'C'],\r\n\t\t\t[null, 'D', null],\r\n\t\t\t['E', 'F', 'G']\r\n\t\t])\r\n\t})\r\n\r\n\tit('should drop empty columns (only at the end)', () => {\r\n\t\tdropEmptyColumns([\r\n\t\t\t[null, 'A', 'B', 'C', null, null],\r\n\t\t\t[null, 'D', null, null, null, null],\r\n\t\t\t[null, null, null, null, null, null],\r\n\t\t\t[null, null, 'E', 'F', 'G', null]\r\n\t\t], {\r\n\t\t\tonlyTrimAtTheEnd: true\r\n\t\t})\r\n\t\t.should.deep.equal([\r\n\t\t\t[null, 'A', 'B', 'C', null],\r\n\t\t\t[null, 'D', null, null, null],\r\n\t\t\t[null, null, null, null, null],\r\n\t\t\t[null, null, 'E', 'F', 'G']\r\n\t\t])\r\n\t})\r\n\r\n\tit('should drop empty columns', () => {\r\n\t\tdropEmptyColumns([\r\n\t\t\t[null, 'A', 'B', 'C', null, null],\r\n\t\t\t[null, 'D', null, null, null, null],\r\n\t\t\t[null, null, null, null, null, null],\r\n\t\t\t[null, null, 'E', 'F', 'G', null]\r\n\t\t])\r\n\t\t.should.deep.equal([\r\n\t\t\t['A', 'B', 'C', null],\r\n\t\t\t['D', null, null, null],\r\n\t\t\t[null, null, null, null],\r\n\t\t\t[null, 'E', 'F', 'G']\r\n\t\t])\r\n\t})\r\n\r\n\tit('should generate row map when dropping empty rows', () => {\r\n\t\tconst rowMap = [0, 1, 2, 3, 4]\r\n\r\n\t\tdropEmptyRows([\r\n\t\t\t[null, null, null],\r\n\t\t\t['A', 'B', 'C'],\r\n\t\t\t[null, 'D', null],\r\n\t\t\t[null, null, null],\r\n\t\t\t['E', 'F', 'G']\r\n\t\t],\r\n\t\t{ rowMap })\r\n\t\t.should.deep.equal([\r\n\t\t\t['A', 'B', 'C'],\r\n\t\t\t[null, 'D', null],\r\n\t\t\t['E', 'F', 'G']\r\n\t\t])\r\n\r\n\t\trowMap.should.deep.equal([1, 2, 4])\r\n\t})\r\n})"],"file":"readXlsx.test.js"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../source/read/readXlsx.test.js"],"names":["dropEmptyRows","dropEmptyColumns","describe","it","onlyTrimAtTheEnd","should","deep","equal","rowMap"],"mappings":"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","sourcesContent":["import { dropEmptyRows, dropEmptyColumns } from './readXlsx'\r\n\r\ndescribe('readXlsx', () => {\r\n\tit('should drop empty rows (only at the end)', () => {\r\n\t\tdropEmptyRows([\r\n\t\t\t[null, null, null],\r\n\t\t\t['A', 'B', 'C'],\r\n\t\t\t[null, 'D', null],\r\n\t\t\t[null, null, null],\r\n\t\t\t['E', 'F', 'G'],\r\n\t\t\t[null, null, null]\r\n\t\t], {\r\n\t\t\tonlyTrimAtTheEnd: true\r\n\t\t})\r\n\t\t.should.deep.equal([\r\n\t\t\t[null, null, null],\r\n\t\t\t['A', 'B', 'C'],\r\n\t\t\t[null, 'D', null],\r\n\t\t\t[null, null, null],\r\n\t\t\t['E', 'F', 'G']\r\n\t\t])\r\n\t})\r\n\r\n\tit('should drop empty rows', () => {\r\n\t\tdropEmptyRows([\r\n\t\t\t[null, null, null],\r\n\t\t\t['A', 'B', 'C'],\r\n\t\t\t[null, 'D', null],\r\n\t\t\t[null, null, null],\r\n\t\t\t['E', 'F', 'G'],\r\n\t\t\t[null, null, null]\r\n\t\t])\r\n\t\t.should.deep.equal([\r\n\t\t\t['A', 'B', 'C'],\r\n\t\t\t[null, 'D', null],\r\n\t\t\t['E', 'F', 'G']\r\n\t\t])\r\n\t})\r\n\r\n\tit('should drop empty columns (only at the end)', () => {\r\n\t\tdropEmptyColumns([\r\n\t\t\t[null, 'A', 'B', 'C', null, null],\r\n\t\t\t[null, 'D', null, null, null, null],\r\n\t\t\t[null, null, null, null, null, null],\r\n\t\t\t[null, null, 'E', 'F', 'G', null]\r\n\t\t], {\r\n\t\t\tonlyTrimAtTheEnd: true\r\n\t\t})\r\n\t\t.should.deep.equal([\r\n\t\t\t[null, 'A', 'B', 'C', null],\r\n\t\t\t[null, 'D', null, null, null],\r\n\t\t\t[null, null, null, null, null],\r\n\t\t\t[null, null, 'E', 'F', 'G']\r\n\t\t])\r\n\t})\r\n\r\n\tit('should drop empty columns', () => {\r\n\t\tdropEmptyColumns([\r\n\t\t\t[null, 'A', 'B', 'C', null, null],\r\n\t\t\t[null, 'D', null, null, null, null],\r\n\t\t\t[null, null, null, null, null, null],\r\n\t\t\t[null, null, 'E', 'F', 'G', null]\r\n\t\t])\r\n\t\t.should.deep.equal([\r\n\t\t\t['A', 'B', 'C', null],\r\n\t\t\t['D', null, null, null],\r\n\t\t\t[null, null, null, null],\r\n\t\t\t[null, 'E', 'F', 'G']\r\n\t\t])\r\n\t})\r\n\r\n\tit('should generate row map when dropping empty rows', () => {\r\n\t\tconst rowMap = [0, 1, 2, 3, 4]\r\n\r\n\t\tdropEmptyRows([\r\n\t\t\t[null, null, null],\r\n\t\t\t['A', 'B', 'C'],\r\n\t\t\t[null, 'D', null],\r\n\t\t\t[null, null, null],\r\n\t\t\t['E', 'F', 'G']\r\n\t\t],\r\n\t\t{ rowMap })\r\n\t\t.should.deep.equal([\r\n\t\t\t['A', 'B', 'C'],\r\n\t\t\t[null, 'D', null],\r\n\t\t\t['E', 'F', 'G']\r\n\t\t])\r\n\r\n\t\trowMap.should.deep.equal([1, 2, 4])\r\n\t})\r\n})"],"file":"readXlsx.test.js"}
|