@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.
- package/dist/duke_sheets_wasm_bg.wasm +0 -0
- package/dist/index.cjs +169 -139
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +169 -139
- package/dist/index.js.map +1 -1
- package/dist/xlsx-worker.js +133 -133
- package/dist/xlsx-worker.js.map +1 -1
- package/package.json +2 -2
package/dist/xlsx-worker.js
CHANGED
|
@@ -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
|
-
|
|
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: [
|
|
4246
|
-
hiddenRows: [
|
|
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
|
|
4588
|
-
const
|
|
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] ??
|
|
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] ??
|
|
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
|
|
4634
|
-
defaultRowHeightPx
|
|
4639
|
+
defaultColWidthPx,
|
|
4640
|
+
defaultRowHeightPx,
|
|
4635
4641
|
freezePanes: parseWorksheetFreezePanes(worksheet),
|
|
4636
|
-
hasHorizontalMerges:
|
|
4637
|
-
hasVerticalMerges:
|
|
4638
|
-
maxHorizontalMergeEndCol:
|
|
4639
|
-
maxVerticalMergeEndRow:
|
|
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,
|
|
4666
|
-
const hiddenRows = (
|
|
4667
|
-
const hiddenCols = (
|
|
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
|
|
4678
|
-
defaultRowHeightPx
|
|
4683
|
+
defaultColWidthPx,
|
|
4684
|
+
defaultRowHeightPx,
|
|
4679
4685
|
freezePanes: parseWorksheetFreezePanes(worksheet),
|
|
4680
|
-
hasHorizontalMerges:
|
|
4681
|
-
hasVerticalMerges:
|
|
4682
|
-
maxHorizontalMergeEndCol:
|
|
4683
|
-
maxVerticalMergeEndRow:
|
|
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
|
|
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 =
|
|
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:
|
|
4734
|
-
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:
|
|
4740
|
-
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) => {
|