From ba2ca08b3362d6fbaedeff8ac65ed470151e62ed Mon Sep 17 00:00:00 2001 From: David Bruant Date: Mon, 8 Jul 2024 15:06:36 +0200 Subject: [PATCH 1/6] =?UTF-8?q?Prise=20en=20compte=20des=20valeurs=20dates?= =?UTF-8?q?=20et=20des=20cellules=20r=C3=A9p=C3=A9t=C3=A9es=20dans=20les?= =?UTF-8?q?=20fichiers=20.ods?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 4 ++- scripts/shared.js | 26 ++++++++++++++---- tests/data/cellules avec dates.ods | Bin 0 -> 12344 bytes tests/data/cellules-répétées.ods | Bin 0 -> 15821 bytes tests/ods-files.js | 41 ++++++++++++++++++++++++++++ 5 files changed, 65 insertions(+), 6 deletions(-) create mode 100644 tests/data/cellules avec dates.ods create mode 100644 tests/data/cellules-répétées.ods create mode 100644 tests/ods-files.js diff --git a/.gitignore b/.gitignore index c948854..f8e98d2 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,5 @@ node_modules/ -build/* \ No newline at end of file +build/* + +.~lock* \ No newline at end of file diff --git a/scripts/shared.js b/scripts/shared.js index fd6dcf1..3420155 100644 --- a/scripts/shared.js +++ b/scripts/shared.js @@ -32,11 +32,26 @@ export async function _getODSTableRawContent(arrayBuffer, parseXML) { for (let cell of Array.from(cells)) { const cellType = cell.getAttribute('office:value-type'); - const cellValue = cellType === 'string' ? cell.textContent : cell.getAttribute('office:value'); - rowData.push({ - value: cellValue, - type: cellType - }); + let cellValue; + + if (cellType === 'string') { + cellValue = cell.textContent; + } else if (cellType === 'date') { + cellValue = cell.getAttribute('office:date-value'); + } else { + cellValue = cell.getAttribute('office:value'); + } + + const numberOfColumnsRepeated = cell.getAttribute('table:number-columns-repeated'); + const repeatCount = numberOfColumnsRepeated ? parseInt(numberOfColumnsRepeated, 10) : 1; + if(repeatCount < 100){ // ignore excessive repetitions + for (let i = 0; i < repeatCount; i++) { + rowData.push({ + value: cellValue, + type: cellType + }); + } + } } sheetData.push(rowData); @@ -48,6 +63,7 @@ export async function _getODSTableRawContent(arrayBuffer, parseXML) { return tableMap; } + /** * Extracts raw table content from an XLSX file. * @param {ArrayBuffer} arrayBuffer - The XLSX file. diff --git a/tests/data/cellules avec dates.ods b/tests/data/cellules avec dates.ods new file mode 100644 index 0000000000000000000000000000000000000000..0bf6d52b1c5fbf654bf6f746509b244a917482c2 GIT binary patch literal 12344 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 { + const repeatedCellFileContent = (await readFile('./tests/data/cellules-répétées.ods')).buffer + + const table = await getODSTableRawContent(repeatedCellFileContent); + + const feuille1 = table.get('Feuille 1') + + console.log('yo repeated', feuille1) + t.deepEqual(feuille1[0].length, feuille1[1].length, `First and second row should have the same number of columns`) +}); + + + +test('.ods cells with dates should be recognized', async t => { + const odsFileWithDates = (await readFile('./tests/data/cellules avec dates.ods')).buffer + const table = await getODSTableRawContent(odsFileWithDates); + + const feuille1 = table.get('Feuille1') + + console.log('yo dates', feuille1) + + const row1 = feuille1[0] + t.deepEqual(row1[0].value, 'Nom') + t.deepEqual(row1[1].value, 'Date de naissance') + + const row2 = feuille1[1] + t.deepEqual(row2[0].value, 'Dav') + t.deepEqual(row2[1].type, 'date') + t.deepEqual(row2[1].value, '1987-03-08') + + const row3 = feuille1[2] + t.deepEqual(row3[0].value, 'Fanny') + t.deepEqual(row3[1].type, 'date') + t.deepEqual(row3[1].value, '1986-06-01') +}); \ No newline at end of file From 0e425bc161ec4a9f61bf4187da649e20284ca6ce Mon Sep 17 00:00:00 2001 From: David Bruant Date: Mon, 8 Jul 2024 15:21:37 +0200 Subject: [PATCH 2/6] Make xlsx support in Node.js --- scripts/shared.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/shared.js b/scripts/shared.js index 3420155..840695a 100644 --- a/scripts/shared.js +++ b/scripts/shared.js @@ -99,11 +99,11 @@ export async function _getXLSXTableRawContent(arrayBuffer, parseXML) { const rows = sheetDoc.getElementsByTagName('sheetData')[0].getElementsByTagName('row'); const sheetData = []; - for (let row of rows) { + for (let row of Array.from(rows)) { const cells = row.getElementsByTagName('c'); const rowData = []; - for (let cell of cells) { + for (let cell of Array.from(cells)) { const cellType = cell.getAttribute('t') || 'n'; let cellValue = cell.getElementsByTagName('v')[0]?.textContent || ''; From 652c00177669a5aab5222dc6f84afa9a709df902 Mon Sep 17 00:00:00 2001 From: David Bruant Date: Mon, 8 Jul 2024 15:21:47 +0200 Subject: [PATCH 3/6] minus logs --- tests/ods-files.js | 3 --- 1 file changed, 3 deletions(-) diff --git a/tests/ods-files.js b/tests/ods-files.js index a785794..8fdb352 100644 --- a/tests/ods-files.js +++ b/tests/ods-files.js @@ -11,7 +11,6 @@ test('.ods file with table:number-columns-repeated attribute in cell', async t = const feuille1 = table.get('Feuille 1') - console.log('yo repeated', feuille1) t.deepEqual(feuille1[0].length, feuille1[1].length, `First and second row should have the same number of columns`) }); @@ -23,8 +22,6 @@ test('.ods cells with dates should be recognized', async t => { const feuille1 = table.get('Feuille1') - console.log('yo dates', feuille1) - const row1 = feuille1[0] t.deepEqual(row1[0].value, 'Nom') t.deepEqual(row1[1].value, 'Date de naissance') From b2179513f5d8d3bc35d843cb309b0059bdbebabe Mon Sep 17 00:00:00 2001 From: David Bruant Date: Mon, 8 Jul 2024 15:29:25 +0200 Subject: [PATCH 4/6] Split exports into 2 files : browser and node --- package.json | 3 ++- scripts/App.svelte | 2 +- scripts/browser.js | 48 ++++++++++++++++++++++++++++++++++++ scripts/{main.js => node.js} | 16 ++---------- tests/basic-node.js | 2 +- tests/ods-files.js | 2 +- 6 files changed, 55 insertions(+), 18 deletions(-) create mode 100644 scripts/browser.js rename scripts/{main.js => node.js} (64%) diff --git a/package.json b/package.json index 99e2b99..3b0f294 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,8 @@ "name": "ods-xlsx", "version": "0.5.0", "type": "module", - "main": "./scripts/main.js", + "main": "./scripts/node.js", + "browser": "./scripts/browser.js", "scripts": { "build": "rollup -c", "dev": "npm-run-all --parallel dev:* start", diff --git a/scripts/App.svelte b/scripts/App.svelte index 6920064..8de4bc2 100644 --- a/scripts/App.svelte +++ b/scripts/App.svelte @@ -1,7 +1,7 @@