@loaders.gl/excel 4.4.2 → 5.0.0-alpha.1
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/dist/bundled.d.ts +3 -0
- package/dist/bundled.d.ts.map +1 -0
- package/dist/bundled.js +5 -0
- package/dist/bundled.js.map +1 -0
- package/dist/dist.dev.js +31603 -17938
- package/dist/dist.min.js +44 -37
- package/dist/excel-format.d.ts +2 -0
- package/dist/excel-format.d.ts.map +1 -1
- package/dist/excel-format.js +2 -0
- package/dist/excel-format.js.map +1 -1
- package/dist/excel-loader-with-parser.d.ts +60 -0
- package/dist/excel-loader-with-parser.d.ts.map +1 -0
- package/dist/excel-loader-with-parser.js +29 -0
- package/dist/excel-loader-with-parser.js.map +1 -0
- package/dist/excel-loader.d.ts +40 -14
- package/dist/excel-loader.d.ts.map +1 -1
- package/dist/excel-loader.js +11 -13
- package/dist/excel-loader.js.map +1 -1
- package/dist/excel-worker.js +30628 -16797
- package/dist/index.cjs +175 -43
- package/dist/index.cjs.map +4 -4
- package/dist/index.d.ts +3 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -1
- package/dist/index.js.map +1 -1
- package/dist/lib/convert-excel-rows-to-arrow.d.ts +11 -0
- package/dist/lib/convert-excel-rows-to-arrow.d.ts.map +1 -0
- package/dist/lib/convert-excel-rows-to-arrow.js +72 -0
- package/dist/lib/convert-excel-rows-to-arrow.js.map +1 -0
- package/dist/unbundled.d.ts +3 -0
- package/dist/unbundled.d.ts.map +1 -0
- package/dist/unbundled.js +5 -0
- package/dist/unbundled.js.map +1 -0
- package/dist/workers/excel-worker.js +2 -2
- package/dist/workers/excel-worker.js.map +1 -1
- package/package.json +15 -5
- package/src/bundled.ts +9 -0
- package/src/excel-format.ts +2 -0
- package/src/excel-loader-with-parser.ts +51 -0
- package/src/excel-loader.ts +21 -21
- package/src/index.ts +5 -1
- package/src/lib/convert-excel-rows-to-arrow.ts +83 -0
- package/src/unbundled.ts +6 -0
- package/src/workers/excel-worker.ts +2 -2
package/src/index.ts
CHANGED
|
@@ -6,4 +6,8 @@
|
|
|
6
6
|
|
|
7
7
|
export {ExcelFormat} from './excel-format';
|
|
8
8
|
export type {ExcelLoaderOptions} from './excel-loader';
|
|
9
|
-
export {ExcelLoader
|
|
9
|
+
export {ExcelLoader} from './excel-loader';
|
|
10
|
+
|
|
11
|
+
// DEPRECATED EXPORTS
|
|
12
|
+
/** @deprecated Use ExcelLoader. */
|
|
13
|
+
export {ExcelWorkerLoader} from './excel-loader';
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
// loaders.gl
|
|
2
|
+
// SPDX-License-Identifier: MIT
|
|
3
|
+
// Copyright (c) vis.gl contributors
|
|
4
|
+
|
|
5
|
+
import type {ArrowTable, DataType, Field, ObjectRowTable, Schema} from '@loaders.gl/schema';
|
|
6
|
+
import {ArrowTableBuilder, makeTableFromData} from '@loaders.gl/schema-utils';
|
|
7
|
+
import * as arrow from 'apache-arrow';
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Converts parsed Excel rows to an Arrow table, including empty sheets.
|
|
11
|
+
*
|
|
12
|
+
* @param rows - Parsed Excel rows keyed by worksheet column name.
|
|
13
|
+
* @returns A loaders.gl Arrow table with one Apache Arrow column per row property.
|
|
14
|
+
*/
|
|
15
|
+
export function convertExcelRowsToArrowTable(rows: {[key: string]: unknown}[]): ArrowTable {
|
|
16
|
+
const table: ObjectRowTable =
|
|
17
|
+
rows.length > 0
|
|
18
|
+
? makeTableFromData(rows)
|
|
19
|
+
: {shape: 'object-row-table', schema: {fields: [], metadata: {}}, data: rows};
|
|
20
|
+
const schema = deducePrimitiveAwareSchema(table);
|
|
21
|
+
|
|
22
|
+
if (table.data.length === 0 || schema.fields.length === 0) {
|
|
23
|
+
return {
|
|
24
|
+
shape: 'arrow-table',
|
|
25
|
+
schema,
|
|
26
|
+
data: new arrow.Table(new arrow.Schema([]))
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
const arrowTableBuilder = new ArrowTableBuilder(schema);
|
|
31
|
+
for (const row of table.data) {
|
|
32
|
+
arrowTableBuilder.addObjectRow(row);
|
|
33
|
+
}
|
|
34
|
+
return arrowTableBuilder.finishTable();
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* Deduces a schema that handles primitive numbers and booleans in Excel rows.
|
|
39
|
+
*
|
|
40
|
+
* @param table - Object-row table produced from parsed Excel rows.
|
|
41
|
+
* @returns A schema with primitive values promoted from `null` to Arrow-compatible types.
|
|
42
|
+
*/
|
|
43
|
+
function deducePrimitiveAwareSchema(table: ObjectRowTable): Schema {
|
|
44
|
+
const fields = table.schema!.fields.map((field): Field => {
|
|
45
|
+
if (field.type === 'float32') {
|
|
46
|
+
return {...field, type: 'float64'};
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
if (field.type !== 'null') {
|
|
50
|
+
return field;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
for (const row of table.data) {
|
|
54
|
+
const type = getDataTypeFromPrimitive(row[field.name]);
|
|
55
|
+
if (type !== 'null') {
|
|
56
|
+
return {...field, type};
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
return field;
|
|
61
|
+
});
|
|
62
|
+
|
|
63
|
+
return {...table.schema!, fields};
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
/**
|
|
67
|
+
* Deduces a loaders.gl data type from primitive spreadsheet cell values.
|
|
68
|
+
*
|
|
69
|
+
* @param value - Spreadsheet cell value.
|
|
70
|
+
* @returns The matching loaders.gl data type, or `null` for unsupported values.
|
|
71
|
+
*/
|
|
72
|
+
function getDataTypeFromPrimitive(value: unknown): DataType {
|
|
73
|
+
switch (typeof value) {
|
|
74
|
+
case 'number':
|
|
75
|
+
return 'float64';
|
|
76
|
+
case 'boolean':
|
|
77
|
+
return 'bool';
|
|
78
|
+
case 'string':
|
|
79
|
+
return 'utf8';
|
|
80
|
+
default:
|
|
81
|
+
return value instanceof Date ? 'date-millisecond' : 'null';
|
|
82
|
+
}
|
|
83
|
+
}
|
package/src/unbundled.ts
ADDED