juxscript 1.1.198 → 1.1.199
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.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TabularDriver.d.ts","sourceRoot":"","sources":["TabularDriver.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"TabularDriver.d.ts","sourceRoot":"","sources":["TabularDriver.ts"],"names":[],"mappings":"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"}
|
|
@@ -490,7 +490,7 @@ export class TabularDriver {
|
|
|
490
490
|
* ✅ UPDATED: Stream Excel file with optional headerRow override
|
|
491
491
|
*/
|
|
492
492
|
async streamFileMultiSheet(file, options = {}) {
|
|
493
|
-
const { maxSheetSize = 100000, sheetChunkSize = 10000, onProgress, headerRow } = options;
|
|
493
|
+
const { maxSheetSize = 100000, sheetChunkSize = 10000, onProgress, headerRow = 0 } = options;
|
|
494
494
|
let XLSX;
|
|
495
495
|
try {
|
|
496
496
|
XLSX = await import('xlsx');
|
|
@@ -524,17 +524,54 @@ export class TabularDriver {
|
|
|
524
524
|
processedSheets++;
|
|
525
525
|
continue;
|
|
526
526
|
}
|
|
527
|
-
//
|
|
528
|
-
//
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
527
|
+
// ✅ FIX: Use sheet_to_json with header option to get raw arrays first
|
|
528
|
+
// Then manually construct the DataFrame with the correct header row
|
|
529
|
+
if (headerRow > 0) {
|
|
530
|
+
// Get all data as raw arrays (no header interpretation)
|
|
531
|
+
const rawData = XLSX.utils.sheet_to_json(worksheet, {
|
|
532
|
+
header: 1, // Return array of arrays
|
|
533
|
+
defval: null,
|
|
534
|
+
raw: false,
|
|
535
|
+
blankrows: false
|
|
536
|
+
});
|
|
537
|
+
if (rawData.length <= headerRow) {
|
|
538
|
+
processedSheets++;
|
|
539
|
+
continue;
|
|
540
|
+
}
|
|
541
|
+
// Extract headers from the specified row
|
|
542
|
+
const headers = rawData[headerRow].map((h, i) => {
|
|
543
|
+
if (h === null || h === undefined || String(h).trim() === '') {
|
|
544
|
+
return `__EMPTY${i > 0 ? '_' + i : ''}`;
|
|
545
|
+
}
|
|
546
|
+
return String(h);
|
|
547
|
+
});
|
|
548
|
+
// Build rows from data after header row
|
|
549
|
+
const rows = [];
|
|
550
|
+
for (let i = headerRow + 1; i < rawData.length; i++) {
|
|
551
|
+
const rowData = rawData[i];
|
|
552
|
+
if (!rowData || rowData.every((cell) => cell === null || cell === undefined)) {
|
|
553
|
+
continue; // Skip empty rows
|
|
554
|
+
}
|
|
555
|
+
const row = {};
|
|
556
|
+
headers.forEach((header, j) => {
|
|
557
|
+
row[header] = rowData[j] !== undefined ? rowData[j] : null;
|
|
558
|
+
});
|
|
559
|
+
rows.push(row);
|
|
560
|
+
}
|
|
561
|
+
if (rows.length > 0) {
|
|
562
|
+
sheets[sheetName] = new DataFrame(rows);
|
|
563
|
+
}
|
|
564
|
+
}
|
|
565
|
+
else {
|
|
566
|
+
// Default behavior: first row is header
|
|
567
|
+
const jsonData = XLSX.utils.sheet_to_json(worksheet, {
|
|
568
|
+
defval: null,
|
|
569
|
+
raw: false,
|
|
570
|
+
blankrows: false
|
|
571
|
+
});
|
|
572
|
+
if (jsonData.length > 0) {
|
|
573
|
+
sheets[sheetName] = new DataFrame(jsonData);
|
|
574
|
+
}
|
|
538
575
|
}
|
|
539
576
|
processedSheets++;
|
|
540
577
|
if (onProgress) {
|
|
@@ -610,7 +610,7 @@ export class TabularDriver {
|
|
|
610
610
|
* ✅ UPDATED: Stream Excel file with optional headerRow override
|
|
611
611
|
*/
|
|
612
612
|
async streamFileMultiSheet(file: File, options: ParseOptions = {}): Promise<Record<string, DataFrame>> {
|
|
613
|
-
const { maxSheetSize = 100000, sheetChunkSize = 10000, onProgress, headerRow } = options;
|
|
613
|
+
const { maxSheetSize = 100000, sheetChunkSize = 10000, onProgress, headerRow = 0 } = options;
|
|
614
614
|
|
|
615
615
|
let XLSX: any;
|
|
616
616
|
try {
|
|
@@ -652,18 +652,59 @@ export class TabularDriver {
|
|
|
652
652
|
continue;
|
|
653
653
|
}
|
|
654
654
|
|
|
655
|
-
//
|
|
656
|
-
//
|
|
657
|
-
|
|
658
|
-
|
|
659
|
-
|
|
660
|
-
|
|
661
|
-
|
|
662
|
-
|
|
663
|
-
|
|
655
|
+
// ✅ FIX: Use sheet_to_json with header option to get raw arrays first
|
|
656
|
+
// Then manually construct the DataFrame with the correct header row
|
|
657
|
+
if (headerRow > 0) {
|
|
658
|
+
// Get all data as raw arrays (no header interpretation)
|
|
659
|
+
const rawData: any[][] = XLSX.utils.sheet_to_json(worksheet, {
|
|
660
|
+
header: 1, // Return array of arrays
|
|
661
|
+
defval: null,
|
|
662
|
+
raw: false,
|
|
663
|
+
blankrows: false
|
|
664
|
+
});
|
|
665
|
+
|
|
666
|
+
if (rawData.length <= headerRow) {
|
|
667
|
+
processedSheets++;
|
|
668
|
+
continue;
|
|
669
|
+
}
|
|
664
670
|
|
|
665
|
-
|
|
666
|
-
|
|
671
|
+
// Extract headers from the specified row
|
|
672
|
+
const headers = rawData[headerRow].map((h: any, i: number) => {
|
|
673
|
+
if (h === null || h === undefined || String(h).trim() === '') {
|
|
674
|
+
return `__EMPTY${i > 0 ? '_' + i : ''}`;
|
|
675
|
+
}
|
|
676
|
+
return String(h);
|
|
677
|
+
});
|
|
678
|
+
|
|
679
|
+
// Build rows from data after header row
|
|
680
|
+
const rows: Record<string, any>[] = [];
|
|
681
|
+
for (let i = headerRow + 1; i < rawData.length; i++) {
|
|
682
|
+
const rowData = rawData[i];
|
|
683
|
+
if (!rowData || rowData.every((cell: any) => cell === null || cell === undefined)) {
|
|
684
|
+
continue; // Skip empty rows
|
|
685
|
+
}
|
|
686
|
+
|
|
687
|
+
const row: Record<string, any> = {};
|
|
688
|
+
headers.forEach((header: string, j: number) => {
|
|
689
|
+
row[header] = rowData[j] !== undefined ? rowData[j] : null;
|
|
690
|
+
});
|
|
691
|
+
rows.push(row);
|
|
692
|
+
}
|
|
693
|
+
|
|
694
|
+
if (rows.length > 0) {
|
|
695
|
+
sheets[sheetName] = new DataFrame(rows);
|
|
696
|
+
}
|
|
697
|
+
} else {
|
|
698
|
+
// Default behavior: first row is header
|
|
699
|
+
const jsonData: Record<string, any>[] = XLSX.utils.sheet_to_json(worksheet, {
|
|
700
|
+
defval: null,
|
|
701
|
+
raw: false,
|
|
702
|
+
blankrows: false
|
|
703
|
+
});
|
|
704
|
+
|
|
705
|
+
if (jsonData.length > 0) {
|
|
706
|
+
sheets[sheetName] = new DataFrame(jsonData);
|
|
707
|
+
}
|
|
667
708
|
}
|
|
668
709
|
|
|
669
710
|
processedSheets++;
|