@extend-ai/react-xlsx 0.12.1 → 0.12.3

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.
@@ -3100,6 +3100,85 @@ function sheetColumnWidthToPixels(width, columnCharacterWidthPx = DEFAULT_COLUMN
3100
3100
  const pixels = width < 1 ? Math.floor(width * (digitWidth + 5) + 0.5) : Math.floor((256 * width + Math.floor(128 / digitWidth)) / 256 * digitWidth);
3101
3101
  return Math.max(MIN_COL_WIDTH_PX, pixels);
3102
3102
  }
3103
+ function resolveWorksheetDefaultColumnWidthPixels(worksheet, columnCharacterWidthPx = DEFAULT_COLUMN_CHARACTER_WIDTH_PX, fallbackPx = sheetColumnWidthToPixels(8.43, columnCharacterWidthPx)) {
3104
+ const width = typeof worksheet.defaultColumnWidth === "number" ? worksheet.defaultColumnWidth : Number.NaN;
3105
+ return Number.isFinite(width) && width > 0 ? sheetColumnWidthToPixels(width, columnCharacterWidthPx) : fallbackPx;
3106
+ }
3107
+ function resolveWorksheetDefaultRowHeightPixels(worksheet, fallbackPx = Math.max(MIN_ROW_HEIGHT_PX, Math.round(15 * 1.33))) {
3108
+ const height = typeof worksheet.defaultRowHeight === "number" ? worksheet.defaultRowHeight : Number.NaN;
3109
+ return Number.isFinite(height) && height > 0 ? Math.max(MIN_ROW_HEIGHT_PX, Math.round(height * 1.33)) : fallbackPx;
3110
+ }
3111
+ function resolveWorksheetHiddenRows(worksheet, maxRow) {
3112
+ if (!Number.isFinite(maxRow) || maxRow < 0 || typeof worksheet.isRowHidden !== "function") {
3113
+ return [];
3114
+ }
3115
+ const hiddenRows = [];
3116
+ for (let row = 0; row <= maxRow; row += 1) {
3117
+ if (worksheet.isRowHidden(row)) {
3118
+ hiddenRows.push(row);
3119
+ }
3120
+ }
3121
+ return hiddenRows;
3122
+ }
3123
+ function resolveWorksheetHiddenCols(worksheet, maxCol) {
3124
+ if (!Number.isFinite(maxCol) || maxCol < 0 || typeof worksheet.isColumnHidden !== "function") {
3125
+ return [];
3126
+ }
3127
+ const hiddenCols = [];
3128
+ for (let col = 0; col <= maxCol; col += 1) {
3129
+ if (worksheet.isColumnHidden(col)) {
3130
+ hiddenCols.push(col);
3131
+ }
3132
+ }
3133
+ return hiddenCols;
3134
+ }
3135
+ function resolveWorksheetMergeMetadata(worksheet) {
3136
+ const mergeMetadata = {
3137
+ hasHorizontalMerges: false,
3138
+ hasVerticalMerges: false,
3139
+ maxHorizontalMergeEndCol: -1,
3140
+ maxVerticalMergeEndRow: -1
3141
+ };
3142
+ const mergedRegions = Array.isArray(worksheet.mergedRegions) ? worksheet.mergedRegions : [];
3143
+ for (const rawRegion of mergedRegions) {
3144
+ let range = null;
3145
+ if (typeof rawRegion === "string") {
3146
+ range = parseA1RangeReference(rawRegion);
3147
+ } else if (rawRegion && typeof rawRegion === "object") {
3148
+ const region = rawRegion;
3149
+ const startRow = typeof region.startRow === "number" ? region.startRow : Number.NaN;
3150
+ const startCol = typeof region.startCol === "number" ? region.startCol : Number.NaN;
3151
+ const endRow = typeof region.endRow === "number" ? region.endRow : Number.NaN;
3152
+ const endCol = typeof region.endCol === "number" ? region.endCol : Number.NaN;
3153
+ if ([startRow, startCol, endRow, endCol].every((value) => Number.isFinite(value) && value >= 0)) {
3154
+ range = {
3155
+ end: {
3156
+ col: Math.max(startCol, endCol),
3157
+ row: Math.max(startRow, endRow)
3158
+ },
3159
+ start: {
3160
+ col: Math.min(startCol, endCol),
3161
+ row: Math.min(startRow, endRow)
3162
+ }
3163
+ };
3164
+ } else if (typeof region.range === "string") {
3165
+ range = parseA1RangeReference(region.range);
3166
+ }
3167
+ }
3168
+ if (!range) {
3169
+ continue;
3170
+ }
3171
+ if (range.end.col > range.start.col) {
3172
+ mergeMetadata.hasHorizontalMerges = true;
3173
+ mergeMetadata.maxHorizontalMergeEndCol = Math.max(mergeMetadata.maxHorizontalMergeEndCol, range.end.col);
3174
+ }
3175
+ if (range.end.row > range.start.row) {
3176
+ mergeMetadata.hasVerticalMerges = true;
3177
+ mergeMetadata.maxVerticalMergeEndRow = Math.max(mergeMetadata.maxVerticalMergeEndRow, range.end.row);
3178
+ }
3179
+ }
3180
+ return mergeMetadata;
3181
+ }
3103
3182
  function buildThemePalette(theme) {
3104
3183
  const themeOrder = ["lt1", "dk1", "lt2", "dk2", "accent1", "accent2", "accent3", "accent4", "accent5", "accent6", "hlink", "folHlink"];
3105
3184
  const colorsByIndex = {};
@@ -3782,67 +3861,6 @@ function parseWorkbookStyles(archive) {
3782
3861
  tableStyleByName
3783
3862
  };
3784
3863
  }
3785
- function parseWorkbookTableMetadata(archive, workbookSheets) {
3786
- return workbookSheets.map((sheet) => {
3787
- const sheetRelationships = parseRelationships(archive, relsPathForDocument(sheet.path), sheet.path);
3788
- const sheetXml = readArchiveText2(archive, sheet.path);
3789
- if (!sheetXml) {
3790
- return [];
3791
- }
3792
- const sheetDocument = parseXml2(sheetXml);
3793
- if (!sheetDocument) {
3794
- return [];
3795
- }
3796
- return getLocalElements(sheetDocument, "tablePart").flatMap((tablePartNode) => {
3797
- const relationshipId = getRelationshipId(tablePartNode);
3798
- if (!relationshipId) {
3799
- return [];
3800
- }
3801
- const relationship = sheetRelationships.get(relationshipId);
3802
- if (!relationship) {
3803
- return [];
3804
- }
3805
- const tableXml = readArchiveText2(archive, relationship.target);
3806
- if (!tableXml) {
3807
- return [];
3808
- }
3809
- const tableDocument = parseXml2(tableXml);
3810
- const tableNode = tableDocument?.documentElement;
3811
- if (!tableNode || tableNode.localName !== "table") {
3812
- return [];
3813
- }
3814
- return [{
3815
- displayName: tableNode.getAttribute("displayName") ?? void 0,
3816
- headerRowCount: parseWorkbookTableCount(tableNode.getAttribute("headerRowCount"), 1),
3817
- headerRowCellStyle: tableNode.getAttribute("headerRowCellStyle") ?? void 0,
3818
- name: tableNode.getAttribute("name") ?? void 0,
3819
- reference: tableNode.getAttribute("ref") ?? void 0,
3820
- totalsRowCount: parseWorkbookTableCount(tableNode.getAttribute("totalsRowCount"), 0),
3821
- totalsRowShown: parseWorkbookTableBoolean(tableNode.getAttribute("totalsRowShown"), false)
3822
- }];
3823
- });
3824
- });
3825
- }
3826
- function parseWorkbookTableCount(value, fallback) {
3827
- if (value === null) {
3828
- return fallback;
3829
- }
3830
- const parsed = Number.parseInt(value, 10);
3831
- return Number.isFinite(parsed) && parsed >= 0 ? parsed : fallback;
3832
- }
3833
- function parseWorkbookTableBoolean(value, fallback) {
3834
- if (value === null) {
3835
- return fallback;
3836
- }
3837
- const normalized = value.trim().toLowerCase();
3838
- if (normalized === "0" || normalized === "false" || normalized === "") {
3839
- return false;
3840
- }
3841
- if (normalized === "1" || normalized === "true") {
3842
- return true;
3843
- }
3844
- return fallback;
3845
- }
3846
3864
  function parseSqrefRanges(sqref) {
3847
3865
  if (!sqref) {
3848
3866
  return [];
@@ -4114,12 +4132,6 @@ function parseSheetState(archive, path, options) {
4114
4132
  const colWidthOverridesPx = {};
4115
4133
  const rowStyleIds = {};
4116
4134
  const colStyleIds = {};
4117
- const hiddenRows = /* @__PURE__ */ new Set();
4118
- const hiddenCols = /* @__PURE__ */ new Set();
4119
- let hasHorizontalMerges = false;
4120
- let hasVerticalMerges = false;
4121
- let maxHorizontalMergeEndCol = -1;
4122
- let maxVerticalMergeEndRow = -1;
4123
4135
  let minContentCol = Number.POSITIVE_INFINITY;
4124
4136
  let minContentRow = Number.POSITIVE_INFINITY;
4125
4137
  let maxContentCol = -1;
@@ -4160,16 +4172,12 @@ function parseSheetState(archive, path, options) {
4160
4172
  const rowIndex = Number(rowNode.getAttribute("r") ?? 0) - 1;
4161
4173
  const height = Number(rowNode.getAttribute("ht") ?? Number.NaN);
4162
4174
  const styleId = Number(rowNode.getAttribute("s") ?? Number.NaN);
4163
- const isHidden = (rowNode.getAttribute("hidden") ?? "0") === "1";
4164
4175
  if (rowIndex >= 0 && Number.isFinite(height)) {
4165
4176
  rowHeightOverridesPx[rowIndex] = Math.max(MIN_ROW_HEIGHT_PX, Math.round(height * 1.33));
4166
4177
  }
4167
4178
  if (rowIndex >= 0 && Number.isFinite(styleId)) {
4168
4179
  rowStyleIds[rowIndex] = styleId;
4169
4180
  }
4170
- if (rowIndex >= 0 && isHidden) {
4171
- hiddenRows.add(rowIndex);
4172
- }
4173
4181
  getChildElements(rowNode, "c").forEach((cellNode) => {
4174
4182
  const cellRef = cellNode.getAttribute("r");
4175
4183
  if (isMeaningfulCellNode(cellNode)) {
@@ -4184,28 +4192,12 @@ function parseSheetState(archive, path, options) {
4184
4192
  }
4185
4193
  });
4186
4194
  });
4187
- getLocalElements(document2, "mergeCell").forEach((mergeNode) => {
4188
- const reference = mergeNode.getAttribute("ref");
4189
- const range = reference ? parseA1RangeReference(reference) : null;
4190
- if (!range) {
4191
- return;
4192
- }
4193
- if (range.end.col > range.start.col) {
4194
- hasHorizontalMerges = true;
4195
- maxHorizontalMergeEndCol = Math.max(maxHorizontalMergeEndCol, range.end.col);
4196
- }
4197
- if (range.end.row > range.start.row) {
4198
- hasVerticalMerges = true;
4199
- maxVerticalMergeEndRow = Math.max(maxVerticalMergeEndRow, range.end.row);
4200
- }
4201
- });
4202
- const maxMetadataCol = Math.max(maxContentCol, maxHorizontalMergeEndCol, 0) + 256;
4195
+ const maxMetadataCol = Math.max(maxContentCol, 0) + 256;
4203
4196
  getLocalElements(document2, "col").forEach((colNode) => {
4204
4197
  const min = Number(colNode.getAttribute("min") ?? 0) - 1;
4205
4198
  const max = Number(colNode.getAttribute("max") ?? 0) - 1;
4206
4199
  const width = Number(colNode.getAttribute("width") ?? Number.NaN);
4207
4200
  const styleId = Number(colNode.getAttribute("style") ?? Number.NaN);
4208
- const isHidden = (colNode.getAttribute("hidden") ?? "0") === "1";
4209
4201
  if (!Number.isFinite(width)) {
4210
4202
  if (!Number.isFinite(styleId)) {
4211
4203
  return;
@@ -4220,9 +4212,6 @@ function parseSheetState(archive, path, options) {
4220
4212
  if (Number.isFinite(styleId)) {
4221
4213
  colStyleIds[col] = styleId;
4222
4214
  }
4223
- if (isHidden) {
4224
- hiddenCols.add(col);
4225
- }
4226
4215
  }
4227
4216
  }
4228
4217
  });
@@ -4234,16 +4223,16 @@ function parseSheetState(archive, path, options) {
4234
4223
  conditionalFormatRules,
4235
4224
  defaultColWidthPx: sheetColumnWidthToPixels(defaultColWidth, columnWidthCharacterWidthPx),
4236
4225
  defaultRowHeightPx: Math.max(MIN_ROW_HEIGHT_PX, Math.round(defaultRowHeight * 1.33)),
4237
- hasHorizontalMerges,
4238
- hasVerticalMerges,
4239
- maxHorizontalMergeEndCol,
4240
- maxVerticalMergeEndRow,
4226
+ hasHorizontalMerges: false,
4227
+ hasVerticalMerges: false,
4228
+ maxHorizontalMergeEndCol: -1,
4229
+ maxVerticalMergeEndRow: -1,
4241
4230
  maxContentCol,
4242
4231
  maxContentRow,
4243
4232
  minContentCol: Number.isFinite(minContentCol) ? minContentCol : -1,
4244
4233
  minContentRow: Number.isFinite(minContentRow) ? minContentRow : -1,
4245
- hiddenCols: [...hiddenCols].sort((left, right) => left - right),
4246
- hiddenRows: [...hiddenRows].sort((left, right) => left - right),
4234
+ hiddenCols: [],
4235
+ hiddenRows: [],
4247
4236
  rowHeightOverridesPx,
4248
4237
  rowStyleIds,
4249
4238
  showGridLines: (sheetViewNode?.getAttribute("showGridLines") ?? "1") !== "0",
@@ -4267,7 +4256,6 @@ function parseWorkbookStructureAssetsFromArchive(archive, options) {
4267
4256
  const theme = parseWorkbookTheme(archive);
4268
4257
  const themePalette = buildThemePalette(theme);
4269
4258
  const { defaultFont, namedCellStyleByName, styleById, tableStyleByName } = parseWorkbookStyles(archive);
4270
- const tableMetadataByWorkbookSheetIndex = parseWorkbookTableMetadata(archive, workbookSheets);
4271
4259
  return {
4272
4260
  contentTypes,
4273
4261
  namedCellStyleByName,
@@ -4277,7 +4265,7 @@ function parseWorkbookStructureAssetsFromArchive(archive, options) {
4277
4265
  themePalette
4278
4266
  })),
4279
4267
  styleById,
4280
- tableMetadataByWorkbookSheetIndex,
4268
+ tableMetadataByWorkbookSheetIndex: workbookSheets.map(() => []),
4281
4269
  tableStyleByName,
4282
4270
  theme,
4283
4271
  themePalette,
@@ -4584,16 +4572,20 @@ function resolveWorksheetZoomScale(worksheet, sheetState) {
4584
4572
  }
4585
4573
  function resolveSheetDisplayUsedRange(usedRange, sheetState) {
4586
4574
  const [minRow, minCol, maxRow, maxCol] = usedRange;
4587
- const maxMeaningfulRow = Math.max(sheetState?.maxContentRow ?? -1, sheetState?.maxVerticalMergeEndRow ?? -1);
4588
- const maxMeaningfulCol = Math.max(sheetState?.maxContentCol ?? -1, sheetState?.maxHorizontalMergeEndCol ?? -1);
4575
+ const maxContentRow = sheetState?.maxContentRow ?? -1;
4576
+ const maxContentCol = sheetState?.maxContentCol ?? -1;
4577
+ const maxVerticalMergeEndRow = sheetState?.maxVerticalMergeEndRow ?? -1;
4578
+ const maxHorizontalMergeEndCol = sheetState?.maxHorizontalMergeEndCol ?? -1;
4579
+ const maxMeaningfulRow = Math.max(maxContentRow, maxVerticalMergeEndRow);
4580
+ const maxMeaningfulCol = Math.max(maxContentCol, maxHorizontalMergeEndCol);
4589
4581
  if (maxMeaningfulRow < 0 && maxMeaningfulCol < 0) {
4590
4582
  return usedRange;
4591
4583
  }
4592
4584
  return [
4593
4585
  sheetState?.minContentRow !== void 0 && sheetState.minContentRow >= 0 ? Math.min(minRow, sheetState.minContentRow) : minRow,
4594
4586
  sheetState?.minContentCol !== void 0 && sheetState.minContentCol >= 0 ? Math.min(minCol, sheetState.minContentCol) : minCol,
4595
- maxMeaningfulRow >= 0 ? Math.min(maxRow, maxMeaningfulRow) : maxRow,
4596
- maxMeaningfulCol >= 0 ? Math.min(maxCol, maxMeaningfulCol) : maxCol
4587
+ maxMeaningfulRow >= 0 ? maxContentRow >= 0 ? Math.min(maxRow, maxMeaningfulRow) : Math.max(maxRow, maxMeaningfulRow) : maxRow,
4588
+ maxMeaningfulCol >= 0 ? maxContentCol >= 0 ? Math.min(maxCol, maxMeaningfulCol) : Math.max(maxCol, maxMeaningfulCol) : maxCol
4597
4589
  ];
4598
4590
  }
4599
4591
  function buildSheetList(nextWorkbook, structureAssets, showHiddenSheets = false) {
@@ -4601,6 +4593,20 @@ function buildSheetList(nextWorkbook, structureAssets, showHiddenSheets = false)
4601
4593
  for (let index = 0; index < nextWorkbook.sheetCount; index += 1) {
4602
4594
  const worksheet = nextWorkbook.getSheet(index);
4603
4595
  const sheetState = structureAssets?.sheetStatesByWorkbookSheetIndex[index] ?? null;
4596
+ const mergeMetadata = resolveWorksheetMergeMetadata(worksheet);
4597
+ const effectiveSheetState = {
4598
+ ...sheetState,
4599
+ ...mergeMetadata
4600
+ };
4601
+ const defaultColWidthPx = resolveWorksheetDefaultColumnWidthPixels(
4602
+ worksheet,
4603
+ sheetState?.columnWidthCharacterWidthPx,
4604
+ sheetState?.defaultColWidthPx ?? DEFAULT_COL_WIDTH
4605
+ );
4606
+ const defaultRowHeightPx = resolveWorksheetDefaultRowHeightPixels(
4607
+ worksheet,
4608
+ sheetState?.defaultRowHeightPx ?? DEFAULT_ROW_HEIGHT
4609
+ );
4604
4610
  const visibility = normalizeWorksheetVisibility2(worksheet.visibility);
4605
4611
  if (!showHiddenSheets && visibility !== "visible") {
4606
4612
  continue;
@@ -4610,14 +4616,14 @@ function buildSheetList(nextWorkbook, structureAssets, showHiddenSheets = false)
4610
4616
  if (width !== void 0 && width !== null) {
4611
4617
  return resolveSheetColumnWidthPixels(width, sheetState?.columnWidthCharacterWidthPx);
4612
4618
  }
4613
- return sheetState?.colWidthOverridesPx?.[col] ?? sheetState?.defaultColWidthPx ?? DEFAULT_COL_WIDTH;
4619
+ return sheetState?.colWidthOverridesPx?.[col] ?? defaultColWidthPx;
4614
4620
  };
4615
4621
  const resolveRowHeightPx = (row) => {
4616
4622
  const height = worksheet.getRowHeight(row);
4617
4623
  if (height !== void 0 && height !== null) {
4618
4624
  return Math.max(Math.round(height * 1.33), 16);
4619
4625
  }
4620
- return sheetState?.rowHeightOverridesPx?.[row] ?? sheetState?.defaultRowHeightPx ?? DEFAULT_ROW_HEIGHT;
4626
+ return sheetState?.rowHeightOverridesPx?.[row] ?? defaultRowHeightPx;
4621
4627
  };
4622
4628
  const usedRange = worksheet.usedRange();
4623
4629
  if (!usedRange) {
@@ -4630,13 +4636,13 @@ function buildSheetList(nextWorkbook, structureAssets, showHiddenSheets = false)
4630
4636
  colWidths: [],
4631
4637
  conditionalFormatRules: sheetState?.conditionalFormatRules ?? [],
4632
4638
  dataValidations: parseWorksheetDataValidations(worksheet),
4633
- defaultColWidthPx: sheetState?.defaultColWidthPx ?? DEFAULT_COL_WIDTH,
4634
- defaultRowHeightPx: sheetState?.defaultRowHeightPx ?? DEFAULT_ROW_HEIGHT,
4639
+ defaultColWidthPx,
4640
+ defaultRowHeightPx,
4635
4641
  freezePanes: parseWorksheetFreezePanes(worksheet),
4636
- hasHorizontalMerges: sheetState?.hasHorizontalMerges ?? false,
4637
- hasVerticalMerges: sheetState?.hasVerticalMerges ?? false,
4638
- maxHorizontalMergeEndCol: sheetState?.maxHorizontalMergeEndCol ?? -1,
4639
- maxVerticalMergeEndRow: sheetState?.maxVerticalMergeEndRow ?? -1,
4642
+ hasHorizontalMerges: mergeMetadata.hasHorizontalMerges,
4643
+ hasVerticalMerges: mergeMetadata.hasVerticalMerges,
4644
+ maxHorizontalMergeEndCol: mergeMetadata.maxHorizontalMergeEndCol,
4645
+ maxVerticalMergeEndRow: mergeMetadata.maxVerticalMergeEndRow,
4640
4646
  hiddenCols: sheetState?.hiddenCols ?? [],
4641
4647
  hiddenRows: sheetState?.hiddenRows ?? [],
4642
4648
  minUsedCol: -1,
@@ -4662,9 +4668,9 @@ function buildSheetList(nextWorkbook, structureAssets, showHiddenSheets = false)
4662
4668
  });
4663
4669
  continue;
4664
4670
  }
4665
- const [minRow, minCol, maxRow, maxCol] = resolveSheetDisplayUsedRange(usedRange, sheetState);
4666
- const hiddenRows = (sheetState?.hiddenRows ?? []).filter((row) => row >= 0 && row <= maxRow);
4667
- const hiddenCols = (sheetState?.hiddenCols ?? []).filter((col) => col >= 0 && col <= maxCol);
4671
+ const [minRow, minCol, maxRow, maxCol] = resolveSheetDisplayUsedRange(usedRange, effectiveSheetState);
4672
+ const hiddenRows = resolveWorksheetHiddenRows(worksheet, maxRow);
4673
+ const hiddenCols = resolveWorksheetHiddenCols(worksheet, maxCol);
4668
4674
  sheetsByWorkbookSheetIndex.push({
4669
4675
  cachedFormulaValues: sheetState?.cachedFormulaValues ?? {},
4670
4676
  columnWidthCharacterWidthPx: sheetState?.columnWidthCharacterWidthPx,
@@ -4674,13 +4680,13 @@ function buildSheetList(nextWorkbook, structureAssets, showHiddenSheets = false)
4674
4680
  colWidths: [],
4675
4681
  conditionalFormatRules: sheetState?.conditionalFormatRules ?? [],
4676
4682
  dataValidations: parseWorksheetDataValidations(worksheet),
4677
- defaultColWidthPx: sheetState?.defaultColWidthPx ?? DEFAULT_COL_WIDTH,
4678
- defaultRowHeightPx: sheetState?.defaultRowHeightPx ?? DEFAULT_ROW_HEIGHT,
4683
+ defaultColWidthPx,
4684
+ defaultRowHeightPx,
4679
4685
  freezePanes: parseWorksheetFreezePanes(worksheet),
4680
- hasHorizontalMerges: sheetState?.hasHorizontalMerges ?? false,
4681
- hasVerticalMerges: sheetState?.hasVerticalMerges ?? false,
4682
- maxHorizontalMergeEndCol: sheetState?.maxHorizontalMergeEndCol ?? -1,
4683
- maxVerticalMergeEndRow: sheetState?.maxVerticalMergeEndRow ?? -1,
4686
+ hasHorizontalMerges: mergeMetadata.hasHorizontalMerges,
4687
+ hasVerticalMerges: mergeMetadata.hasVerticalMerges,
4688
+ maxHorizontalMergeEndCol: mergeMetadata.maxHorizontalMergeEndCol,
4689
+ maxVerticalMergeEndRow: mergeMetadata.maxVerticalMergeEndRow,
4684
4690
  hiddenCols,
4685
4691
  hiddenRows,
4686
4692
  minUsedCol: minCol,
@@ -4707,17 +4713,14 @@ function buildSheetList(nextWorkbook, structureAssets, showHiddenSheets = false)
4707
4713
  }
4708
4714
  return sheetsByWorkbookSheetIndex;
4709
4715
  }
4710
- function mapWorksheetTables(worksheet, metadataForSheet) {
4716
+ function mapWorksheetTables(worksheet) {
4711
4717
  const rawTables = worksheet?.tables ?? [];
4712
4718
  return rawTables.flatMap((table, index) => {
4713
4719
  const rawColumns = Array.isArray(table.columns) ? table.columns : [];
4714
4720
  const rawName = typeof table.name === "string" ? table.name : `Table${index + 1}`;
4715
4721
  const rawDisplayName = typeof table.displayName === "string" ? table.displayName : typeof table.name === "string" ? table.name : `Table ${index + 1}`;
4716
- const metadata = metadataForSheet?.find(
4717
- (entry) => entry.name && entry.name === rawName || entry.displayName && entry.displayName === rawDisplayName || entry.reference && entry.reference === table.reference
4718
- );
4719
4722
  const rawReference = typeof table.reference === "string" ? table.reference : "";
4720
- const reference = metadata?.reference ?? rawReference;
4723
+ const reference = rawReference;
4721
4724
  const parsedRange = parseA1RangeReference2(reference);
4722
4725
  if (!parsedRange) {
4723
4726
  return [];
@@ -4730,14 +4733,14 @@ function mapWorksheetTables(worksheet, metadataForSheet) {
4730
4733
  })),
4731
4734
  displayName: rawDisplayName,
4732
4735
  end: parsedRange.end,
4733
- headerRowCount: metadata?.headerRowCount ?? resolveWorkbookTableCount(table.headerRowCount, 1),
4734
- headerRowCellStyle: metadata?.headerRowCellStyle,
4736
+ headerRowCount: resolveWorkbookTableCount(table.headerRowCount, 1),
4737
+ headerRowCellStyle: typeof table.headerRowCellStyle === "string" ? table.headerRowCellStyle : void 0,
4735
4738
  name: rawName,
4736
4739
  reference,
4737
4740
  start: parsedRange.start,
4738
4741
  styleInfo: table.styleInfo,
4739
- totalsRowCount: metadata?.totalsRowCount ?? resolveWorkbookTableCount(table.totalsRowCount, 0),
4740
- totalsRowShown: metadata?.totalsRowShown ?? resolveWorkbookTableBoolean(table.totalsRowShown)
4742
+ totalsRowCount: resolveWorkbookTableCount(table.totalsRowCount, 0),
4743
+ totalsRowShown: resolveWorkbookTableBoolean(table.totalsRowShown)
4741
4744
  }];
4742
4745
  });
4743
4746
  }
@@ -4827,10 +4830,7 @@ async function loadWorkbook(buffer, skipXmlParsing = false, showHiddenSheets = f
4827
4830
  sheets = buildSheetList(nextWorkbook, structureAssets, showHiddenSheets);
4828
4831
  tablesByWorkbookSheetIndex = Array.from(
4829
4832
  { length: nextWorkbook.sheetCount },
4830
- (_, workbookSheetIndex) => mapWorksheetTables(
4831
- nextWorkbook.getSheet(workbookSheetIndex),
4832
- structureAssets?.tableMetadataByWorkbookSheetIndex[workbookSheetIndex] ?? null
4833
- )
4833
+ (_, workbookSheetIndex) => mapWorksheetTables(nextWorkbook.getSheet(workbookSheetIndex))
4834
4834
  );
4835
4835
  const visibleSheetIndexByWorkbookSheetIndex = new Map(sheets.map((sheet, index) => [sheet.workbookSheetIndex, index]));
4836
4836
  const hasCharts = Array.from({ length: nextWorkbook.sheetCount }, (_, workbookSheetIndex) => {