@extend-ai/react-xlsx 0.16.2 → 0.16.4
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/index.cjs +1244 -120
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +31 -7
- package/dist/index.d.ts +31 -7
- package/dist/index.js +1244 -120
- package/dist/index.js.map +1 -1
- package/dist/xlsx-worker.js +89 -17
- package/dist/xlsx-worker.js.map +1 -1
- package/package.json +3 -3
package/dist/index.js
CHANGED
|
@@ -3064,6 +3064,17 @@ function applyChartOrigins(chartsByWorkbookSheetIndex, chartOriginsById, archive
|
|
|
3064
3064
|
});
|
|
3065
3065
|
}
|
|
3066
3066
|
}
|
|
3067
|
+
function hydrateWorkbookChartStyles(chartsByWorkbookSheetIndex, imageAssets) {
|
|
3068
|
+
const chartOriginsById = /* @__PURE__ */ new Map();
|
|
3069
|
+
applyChartOrigins(chartsByWorkbookSheetIndex, chartOriginsById, imageAssets.archive, imageAssets.sheetOrigins);
|
|
3070
|
+
for (const charts of chartsByWorkbookSheetIndex) {
|
|
3071
|
+
for (const chart of charts) {
|
|
3072
|
+
applyChartStyleFromXml(chart, chart.chartPath, imageAssets.archive, imageAssets.themePalette);
|
|
3073
|
+
applyBuiltinChartDefaults(chart, imageAssets.themePalette);
|
|
3074
|
+
}
|
|
3075
|
+
}
|
|
3076
|
+
return chartOriginsById;
|
|
3077
|
+
}
|
|
3067
3078
|
function loadWorkbookChartAssets(workbook, imageAssets, visibleSheetIndexByWorkbookSheetIndex, showHiddenSheets = false) {
|
|
3068
3079
|
const excludedChartIds = /* @__PURE__ */ new Set();
|
|
3069
3080
|
const chartsByWorkbookSheetIndex = Array.from({ length: workbook.sheetCount }, (_, workbookSheetIndex) => {
|
|
@@ -3164,21 +3175,14 @@ function loadWorkbookChartAssets(workbook, imageAssets, visibleSheetIndexByWorkb
|
|
|
3164
3175
|
});
|
|
3165
3176
|
const chartsheets = Array.isArray(workbook.chartsheets) ? workbook.chartsheets.map((entry, index) => normalizeChartsheet(entry, index)) : [];
|
|
3166
3177
|
const tabs = buildTabs(workbook, chartsheets, visibleSheetIndexByWorkbookSheetIndex, showHiddenSheets);
|
|
3167
|
-
const chartOriginsById = /* @__PURE__ */ new Map();
|
|
3178
|
+
const chartOriginsById = imageAssets ? hydrateWorkbookChartStyles(chartsByWorkbookSheetIndex, imageAssets) : /* @__PURE__ */ new Map();
|
|
3168
3179
|
if (imageAssets) {
|
|
3169
|
-
applyChartOrigins(chartsByWorkbookSheetIndex, chartOriginsById, imageAssets.archive, imageAssets.sheetOrigins);
|
|
3170
3180
|
for (let index = 0; index < chartsByWorkbookSheetIndex.length; index += 1) {
|
|
3171
3181
|
chartsByWorkbookSheetIndex[index] = (chartsByWorkbookSheetIndex[index] ?? []).filter((chart) => !excludedChartIds.has(chart.id));
|
|
3172
3182
|
}
|
|
3173
3183
|
for (const id of excludedChartIds) {
|
|
3174
3184
|
chartOriginsById.delete(id);
|
|
3175
3185
|
}
|
|
3176
|
-
for (const charts of chartsByWorkbookSheetIndex) {
|
|
3177
|
-
for (const chart of charts) {
|
|
3178
|
-
applyChartStyleFromXml(chart, chart.chartPath, imageAssets.archive, imageAssets.themePalette);
|
|
3179
|
-
applyBuiltinChartDefaults(chart, imageAssets.themePalette);
|
|
3180
|
-
}
|
|
3181
|
-
}
|
|
3182
3186
|
} else {
|
|
3183
3187
|
for (let index = 0; index < chartsByWorkbookSheetIndex.length; index += 1) {
|
|
3184
3188
|
chartsByWorkbookSheetIndex[index] = (chartsByWorkbookSheetIndex[index] ?? []).filter((chart) => !excludedChartIds.has(chart.id));
|
|
@@ -4421,6 +4425,7 @@ function parseWorkbookStyles(archive) {
|
|
|
4421
4425
|
const xml = readArchiveText2(archive, "xl/styles.xml");
|
|
4422
4426
|
if (!xml) {
|
|
4423
4427
|
return {
|
|
4428
|
+
differentialStyles: [],
|
|
4424
4429
|
defaultFont: null,
|
|
4425
4430
|
namedCellStyleByName: {},
|
|
4426
4431
|
styleById: {},
|
|
@@ -4430,6 +4435,7 @@ function parseWorkbookStyles(archive) {
|
|
|
4430
4435
|
const document2 = parseXml2(xml);
|
|
4431
4436
|
if (!document2) {
|
|
4432
4437
|
return {
|
|
4438
|
+
differentialStyles: [],
|
|
4433
4439
|
defaultFont: null,
|
|
4434
4440
|
namedCellStyleByName: {},
|
|
4435
4441
|
styleById: {},
|
|
@@ -4446,6 +4452,7 @@ function parseWorkbookStyles(archive) {
|
|
|
4446
4452
|
const tableStylesNode = getFirstDescendant(document2, "tableStyles");
|
|
4447
4453
|
if (!cellXfsNode) {
|
|
4448
4454
|
return {
|
|
4455
|
+
differentialStyles: [],
|
|
4449
4456
|
defaultFont: null,
|
|
4450
4457
|
namedCellStyleByName: {},
|
|
4451
4458
|
styleById: {},
|
|
@@ -4502,6 +4509,7 @@ function parseWorkbookStyles(archive) {
|
|
|
4502
4509
|
sizePt: typeof normalFont.size === "number" ? normalFont.size : void 0
|
|
4503
4510
|
} : null;
|
|
4504
4511
|
return {
|
|
4512
|
+
differentialStyles,
|
|
4505
4513
|
defaultFont,
|
|
4506
4514
|
namedCellStyleByName,
|
|
4507
4515
|
styleById,
|
|
@@ -4542,10 +4550,11 @@ function parseSpreadsheetBooleanAttribute(node, name) {
|
|
|
4542
4550
|
}
|
|
4543
4551
|
return value !== "0" && value !== "false";
|
|
4544
4552
|
}
|
|
4545
|
-
function parseStandardConditionalFormatRule(cfRuleNode, ranges) {
|
|
4553
|
+
function parseStandardConditionalFormatRule(cfRuleNode, ranges, differentialStyles = []) {
|
|
4546
4554
|
const type = cfRuleNode.getAttribute("type");
|
|
4547
4555
|
const rawPriority = Number(cfRuleNode.getAttribute("priority") ?? Number.NaN);
|
|
4548
4556
|
const priority = Number.isFinite(rawPriority) ? rawPriority : Number.MAX_SAFE_INTEGER;
|
|
4557
|
+
const formulas = getChildElements(cfRuleNode, "formula").map((formulaNode) => (formulaNode.textContent ?? "").trim()).filter((formula) => formula.length > 0);
|
|
4549
4558
|
if (type === "colorScale") {
|
|
4550
4559
|
const colorScaleNode = getFirstChild(cfRuleNode, "colorScale");
|
|
4551
4560
|
if (!colorScaleNode) {
|
|
@@ -4606,7 +4615,34 @@ function parseStandardConditionalFormatRule(cfRuleNode, ranges) {
|
|
|
4606
4615
|
showValue: parseSpreadsheetBooleanAttribute(iconSetNode, "showValue")
|
|
4607
4616
|
};
|
|
4608
4617
|
}
|
|
4609
|
-
|
|
4618
|
+
const rawDxfId = Number(cfRuleNode.getAttribute("dxfId") ?? Number.NaN);
|
|
4619
|
+
if (!type || !Number.isFinite(rawDxfId)) {
|
|
4620
|
+
return null;
|
|
4621
|
+
}
|
|
4622
|
+
const style = differentialStyles[rawDxfId];
|
|
4623
|
+
if (!style) {
|
|
4624
|
+
return null;
|
|
4625
|
+
}
|
|
4626
|
+
const rawRank = Number(cfRuleNode.getAttribute("rank") ?? Number.NaN);
|
|
4627
|
+
const rawStdDev = Number(cfRuleNode.getAttribute("stdDev") ?? Number.NaN);
|
|
4628
|
+
return {
|
|
4629
|
+
aboveAverage: parseSpreadsheetBooleanAttribute(cfRuleNode, "aboveAverage"),
|
|
4630
|
+
bottom: parseSpreadsheetBooleanAttribute(cfRuleNode, "bottom"),
|
|
4631
|
+
equalAverage: parseSpreadsheetBooleanAttribute(cfRuleNode, "equalAverage"),
|
|
4632
|
+
formulas,
|
|
4633
|
+
kind: "styled",
|
|
4634
|
+
operator: cfRuleNode.getAttribute("operator") ?? void 0,
|
|
4635
|
+
percent: parseSpreadsheetBooleanAttribute(cfRuleNode, "percent"),
|
|
4636
|
+
priority,
|
|
4637
|
+
rank: Number.isFinite(rawRank) ? rawRank : void 0,
|
|
4638
|
+
ranges,
|
|
4639
|
+
ruleType: type,
|
|
4640
|
+
stdDev: Number.isFinite(rawStdDev) ? rawStdDev : void 0,
|
|
4641
|
+
stopIfTrue: parseSpreadsheetBooleanAttribute(cfRuleNode, "stopIfTrue"),
|
|
4642
|
+
style,
|
|
4643
|
+
text: cfRuleNode.getAttribute("text") ?? void 0,
|
|
4644
|
+
timePeriod: cfRuleNode.getAttribute("timePeriod") ?? void 0
|
|
4645
|
+
};
|
|
4610
4646
|
}
|
|
4611
4647
|
function parseExtendedConditionalFormatRule(cfRuleNode, ranges) {
|
|
4612
4648
|
const type = cfRuleNode.getAttribute("type");
|
|
@@ -4717,14 +4753,14 @@ function mergeConditionalFormatRule(baseRule, extendedRule) {
|
|
|
4717
4753
|
}
|
|
4718
4754
|
return baseRule;
|
|
4719
4755
|
}
|
|
4720
|
-
function parseConditionalFormatRules(document2) {
|
|
4756
|
+
function parseConditionalFormatRules(document2, differentialStyles = []) {
|
|
4721
4757
|
const standardRules = [];
|
|
4722
4758
|
const extendedRules = [];
|
|
4723
4759
|
getLocalElements(document2, "conditionalFormatting").forEach((conditionalFormattingNode) => {
|
|
4724
4760
|
const isExtended = conditionalFormattingNode.namespaceURI !== SPREADSHEET_NS;
|
|
4725
4761
|
const ranges = isExtended ? parseSqrefRanges(getFirstChild(conditionalFormattingNode, "sqref")?.textContent ?? "") : parseSqrefRanges(conditionalFormattingNode.getAttribute("sqref"));
|
|
4726
4762
|
getChildElements(conditionalFormattingNode, "cfRule").forEach((cfRuleNode) => {
|
|
4727
|
-
const parsedRule = isExtended ? parseExtendedConditionalFormatRule(cfRuleNode, ranges) : parseStandardConditionalFormatRule(cfRuleNode, ranges);
|
|
4763
|
+
const parsedRule = isExtended ? parseExtendedConditionalFormatRule(cfRuleNode, ranges) : parseStandardConditionalFormatRule(cfRuleNode, ranges, differentialStyles);
|
|
4728
4764
|
if (parsedRule) {
|
|
4729
4765
|
if (isExtended) {
|
|
4730
4766
|
extendedRules.push(parsedRule);
|
|
@@ -4770,8 +4806,9 @@ function parseSheetState(archive, path, options) {
|
|
|
4770
4806
|
return null;
|
|
4771
4807
|
}
|
|
4772
4808
|
const includeCachedFormulaValues = options?.includeCachedFormulaValues ?? true;
|
|
4809
|
+
const autoFilterRanges = parseSqrefRanges(getLocalElements(document2, "autoFilter")[0]?.getAttribute("ref"));
|
|
4773
4810
|
const cachedFormulaValues = {};
|
|
4774
|
-
const conditionalFormatRules = parseConditionalFormatRules(document2);
|
|
4811
|
+
const conditionalFormatRules = parseConditionalFormatRules(document2, options?.differentialStyles ?? []);
|
|
4775
4812
|
const sparklines = parseSheetSparklines(document2, options?.themePalette);
|
|
4776
4813
|
const sheetFormatNode = getLocalElements(document2, "sheetFormatPr")[0] ?? null;
|
|
4777
4814
|
const sheetViewNode = getLocalElements(document2, "sheetView")[0] ?? null;
|
|
@@ -4863,6 +4900,7 @@ function parseSheetState(archive, path, options) {
|
|
|
4863
4900
|
}
|
|
4864
4901
|
});
|
|
4865
4902
|
return {
|
|
4903
|
+
autoFilterRanges,
|
|
4866
4904
|
cachedFormulaValues,
|
|
4867
4905
|
columnWidthCharacterWidthPx,
|
|
4868
4906
|
colWidthOverridesPx,
|
|
@@ -5858,11 +5896,11 @@ function parseShapeNode(shapeNode, fallbackAnchor, drawingRelationships, theme,
|
|
|
5858
5896
|
zIndex
|
|
5859
5897
|
};
|
|
5860
5898
|
}
|
|
5861
|
-
function parseAnchorContents(anchorNode, fallbackAnchor, drawingRelationships, archive, contentTypes, objectUrls, workbookSheetIndex, theme, ids, imageOriginsById, anchorIndex, sheetState, parentGroup = null) {
|
|
5899
|
+
function parseAnchorContents(anchorNode, fallbackAnchor, drawingRelationships, archive, contentTypes, objectUrls, workbookSheetIndex, theme, ids, imageOriginsById, anchorIndex, sheetState, drawingPath, parentGroup = null, picturePath = []) {
|
|
5862
5900
|
const images = [];
|
|
5863
5901
|
const shapes = [];
|
|
5864
5902
|
const mediaPaths = /* @__PURE__ */ new Set();
|
|
5865
|
-
Array.from(anchorNode.childNodes).filter(isElementNode2).forEach((child) => {
|
|
5903
|
+
Array.from(anchorNode.childNodes).filter(isElementNode2).forEach((child, childIndex) => {
|
|
5866
5904
|
if (child.localName === "pic") {
|
|
5867
5905
|
const imageId = `sheet-${workbookSheetIndex}-${ids.image}`;
|
|
5868
5906
|
const parsed = parsePictureNode(
|
|
@@ -5883,6 +5921,8 @@ function parseAnchorContents(anchorNode, fallbackAnchor, drawingRelationships, a
|
|
|
5883
5921
|
mediaPaths.add(parsed.mediaPath);
|
|
5884
5922
|
imageOriginsById.set(imageId, {
|
|
5885
5923
|
anchorIndex,
|
|
5924
|
+
drawingPath,
|
|
5925
|
+
picturePath: [...picturePath, childIndex],
|
|
5886
5926
|
workbookSheetIndex
|
|
5887
5927
|
});
|
|
5888
5928
|
}
|
|
@@ -5942,7 +5982,9 @@ function parseAnchorContents(anchorNode, fallbackAnchor, drawingRelationships, a
|
|
|
5942
5982
|
imageOriginsById,
|
|
5943
5983
|
anchorIndex,
|
|
5944
5984
|
sheetState,
|
|
5945
|
-
|
|
5985
|
+
drawingPath,
|
|
5986
|
+
nextGroup,
|
|
5987
|
+
[...picturePath, childIndex]
|
|
5946
5988
|
);
|
|
5947
5989
|
parsedGroup.images.forEach((image) => images.push(image));
|
|
5948
5990
|
parsedGroup.shapes.forEach((shape) => shapes.push(shape));
|
|
@@ -5998,7 +6040,8 @@ function parseDrawingObjects(archive, contentTypes, drawingPath, objectUrls, wor
|
|
|
5998
6040
|
ids,
|
|
5999
6041
|
imageOriginsById,
|
|
6000
6042
|
anchorIndex,
|
|
6001
|
-
sheetState
|
|
6043
|
+
sheetState,
|
|
6044
|
+
drawingPath
|
|
6002
6045
|
);
|
|
6003
6046
|
parsed.images.forEach((image) => images.push(image));
|
|
6004
6047
|
parsed.shapes.forEach((shape) => shapes.push(shape));
|
|
@@ -6028,12 +6071,13 @@ function parseWorkbookStructureAssetsFromArchive(archive, options) {
|
|
|
6028
6071
|
const workbookSheets = parseWorkbookSheets(archive);
|
|
6029
6072
|
const theme = parseWorkbookTheme(archive);
|
|
6030
6073
|
const themePalette = buildThemePalette(theme);
|
|
6031
|
-
const { defaultFont, namedCellStyleByName, styleById, tableStyleByName } = parseWorkbookStyles(archive);
|
|
6074
|
+
const { defaultFont, differentialStyles, namedCellStyleByName, styleById, tableStyleByName } = parseWorkbookStyles(archive);
|
|
6032
6075
|
return {
|
|
6033
6076
|
contentTypes,
|
|
6034
6077
|
namedCellStyleByName,
|
|
6035
6078
|
sheetStatesByWorkbookSheetIndex: workbookSheets.map((sheet) => parseSheetState(archive, sheet.path, {
|
|
6036
6079
|
...options,
|
|
6080
|
+
differentialStyles,
|
|
6037
6081
|
defaultFont,
|
|
6038
6082
|
themePalette
|
|
6039
6083
|
})),
|
|
@@ -6156,6 +6200,9 @@ function updateWorkbookImageAnchor(assets, imageId, anchor) {
|
|
|
6156
6200
|
}
|
|
6157
6201
|
const attachments = assets.sheetOrigins[origin.workbookSheetIndex]?.attachments ?? [];
|
|
6158
6202
|
for (const attachment of attachments) {
|
|
6203
|
+
if (attachment.drawingPath !== origin.drawingPath) {
|
|
6204
|
+
continue;
|
|
6205
|
+
}
|
|
6159
6206
|
const drawingXml = readArchiveText2(assets.archive, attachment.drawingPath);
|
|
6160
6207
|
if (!drawingXml) {
|
|
6161
6208
|
continue;
|
|
@@ -6166,10 +6213,45 @@ function updateWorkbookImageAnchor(assets, imageId, anchor) {
|
|
|
6166
6213
|
}
|
|
6167
6214
|
const anchorNodes = createImageAnchorNodes(drawingDocument);
|
|
6168
6215
|
const anchorNode = anchorNodes[origin.anchorIndex];
|
|
6169
|
-
if (!anchorNode
|
|
6216
|
+
if (!anchorNode) {
|
|
6170
6217
|
continue;
|
|
6171
6218
|
}
|
|
6172
|
-
|
|
6219
|
+
let pictureNode = anchorNode;
|
|
6220
|
+
let parentGroup = null;
|
|
6221
|
+
let groupAnchor = parseAnchor(anchorNode);
|
|
6222
|
+
for (const childIndex of origin.picturePath) {
|
|
6223
|
+
const child = Array.from(pictureNode.childNodes).filter(isElementNode2)[childIndex];
|
|
6224
|
+
if (!child || !groupAnchor) {
|
|
6225
|
+
break;
|
|
6226
|
+
}
|
|
6227
|
+
pictureNode = child;
|
|
6228
|
+
if (child.localName === "grpSp") {
|
|
6229
|
+
parentGroup = parseGroupTransform(
|
|
6230
|
+
child,
|
|
6231
|
+
parentGroup,
|
|
6232
|
+
groupAnchor,
|
|
6233
|
+
assets.sheetStatesByWorkbookSheetIndex[origin.workbookSheetIndex] ?? null
|
|
6234
|
+
);
|
|
6235
|
+
groupAnchor = rectToAbsoluteAnchor(parentGroup);
|
|
6236
|
+
}
|
|
6237
|
+
}
|
|
6238
|
+
if (pictureNode.localName !== "pic") {
|
|
6239
|
+
continue;
|
|
6240
|
+
}
|
|
6241
|
+
if (parentGroup) {
|
|
6242
|
+
const transform = getFirstDescendant(pictureNode, "xfrm");
|
|
6243
|
+
const off = transform ? getFirstChild(transform, "off") : null;
|
|
6244
|
+
const ext = transform ? getFirstChild(transform, "ext") : null;
|
|
6245
|
+
if (anchor.kind !== "absolute" || !off || !ext || !parentGroup.scaleX || !parentGroup.scaleY) {
|
|
6246
|
+
continue;
|
|
6247
|
+
}
|
|
6248
|
+
off.setAttribute("x", String(Math.round(parentGroup.chX + (anchor.positionEmu.x - parentGroup.x) / parentGroup.scaleX)));
|
|
6249
|
+
off.setAttribute("y", String(Math.round(parentGroup.chY + (anchor.positionEmu.y - parentGroup.y) / parentGroup.scaleY)));
|
|
6250
|
+
ext.setAttribute("cx", String(Math.max(0, Math.round(anchor.sizeEmu.cx / parentGroup.scaleX))));
|
|
6251
|
+
ext.setAttribute("cy", String(Math.max(0, Math.round(anchor.sizeEmu.cy / parentGroup.scaleY))));
|
|
6252
|
+
} else {
|
|
6253
|
+
updateAnchorNode2(anchorNode, anchor);
|
|
6254
|
+
}
|
|
6173
6255
|
assets.archive[attachment.drawingPath] = strToU82(serializeXml2(drawingDocument));
|
|
6174
6256
|
assets.dirtyArchivePaths.add(normalizeArchivePath2(attachment.drawingPath));
|
|
6175
6257
|
const imageList = assets.imagesByWorkbookSheetIndex[origin.workbookSheetIndex] ?? [];
|
|
@@ -6280,15 +6362,21 @@ function appendSheetDrawingReference(sheetDocument, relationshipId) {
|
|
|
6280
6362
|
}
|
|
6281
6363
|
const drawingNode = sheetDocument.createElementNS(SPREADSHEET_NS, "drawing");
|
|
6282
6364
|
drawingNode.setAttributeNS(REL_NS, "r:id", relationshipId);
|
|
6283
|
-
const
|
|
6284
|
-
|
|
6285
|
-
|
|
6286
|
-
|
|
6287
|
-
|
|
6288
|
-
|
|
6365
|
+
const successorNames = /* @__PURE__ */ new Set([
|
|
6366
|
+
"legacyDrawing",
|
|
6367
|
+
"legacyDrawingHF",
|
|
6368
|
+
"picture",
|
|
6369
|
+
"oleObjects",
|
|
6370
|
+
"controls",
|
|
6371
|
+
"webPublishItems",
|
|
6372
|
+
"tableParts",
|
|
6373
|
+
"extLst"
|
|
6374
|
+
]);
|
|
6375
|
+
const successor = Array.from(worksheet.childNodes).find((node) => isElementNode2(node) && node.namespaceURI === SPREADSHEET_NS && successorNames.has(node.localName));
|
|
6376
|
+
worksheet.insertBefore(drawingNode, successor ?? null);
|
|
6289
6377
|
}
|
|
6290
6378
|
function mergeWorkbookImageAssets(savedBytes, sourceAssets, sheetOrigins) {
|
|
6291
|
-
if (!sourceAssets
|
|
6379
|
+
if (!sourceAssets) {
|
|
6292
6380
|
return cloneBytes(savedBytes);
|
|
6293
6381
|
}
|
|
6294
6382
|
try {
|
|
@@ -6299,9 +6387,31 @@ function mergeWorkbookImageAssets(savedBytes, sourceAssets, sheetOrigins) {
|
|
|
6299
6387
|
if (!targetContentTypesDocument) {
|
|
6300
6388
|
return cloneBytes(savedBytes);
|
|
6301
6389
|
}
|
|
6390
|
+
const copiedParts = /* @__PURE__ */ new Set();
|
|
6391
|
+
const copyDrawingPart = (path) => {
|
|
6392
|
+
const normalizedPath = normalizeArchivePath2(path);
|
|
6393
|
+
const bytes = sourceAssets.archive[normalizedPath];
|
|
6394
|
+
if (!bytes || copiedParts.has(normalizedPath)) {
|
|
6395
|
+
return;
|
|
6396
|
+
}
|
|
6397
|
+
copiedParts.add(normalizedPath);
|
|
6398
|
+
archive[normalizedPath] = cloneBytes(bytes);
|
|
6399
|
+
mergeContentTypeForPath(targetContentTypesDocument, originalContentTypesDocument, normalizedPath);
|
|
6400
|
+
const relsPath = relsPathForDocument(normalizedPath);
|
|
6401
|
+
const relsBytes = sourceAssets.archive[relsPath];
|
|
6402
|
+
if (!relsBytes) {
|
|
6403
|
+
return;
|
|
6404
|
+
}
|
|
6405
|
+
archive[relsPath] = cloneBytes(relsBytes);
|
|
6406
|
+
mergeContentTypeForPath(targetContentTypesDocument, originalContentTypesDocument, relsPath);
|
|
6407
|
+
for (const relationship of parseRelationships(sourceAssets.archive, relsPath, normalizedPath).values()) {
|
|
6408
|
+
if (relationship.targetMode !== "External" && !relationship.type.endsWith("/hyperlink")) {
|
|
6409
|
+
copyDrawingPart(relationship.target);
|
|
6410
|
+
}
|
|
6411
|
+
}
|
|
6412
|
+
};
|
|
6302
6413
|
sheetOrigins.forEach((origin, workbookSheetIndex) => {
|
|
6303
|
-
|
|
6304
|
-
if (!origin?.attachments.length || !hasDirtyAttachment) {
|
|
6414
|
+
if (!origin?.attachments.length) {
|
|
6305
6415
|
return;
|
|
6306
6416
|
}
|
|
6307
6417
|
const currentSheet = workbookSheets[workbookSheetIndex];
|
|
@@ -6324,23 +6434,7 @@ function mergeWorkbookImageAssets(savedBytes, sourceAssets, sheetOrigins) {
|
|
|
6324
6434
|
if (!drawingBytes) {
|
|
6325
6435
|
return;
|
|
6326
6436
|
}
|
|
6327
|
-
|
|
6328
|
-
mergeContentTypeForPath(targetContentTypesDocument, originalContentTypesDocument, attachment.drawingPath);
|
|
6329
|
-
if (attachment.drawingRelsPath) {
|
|
6330
|
-
const drawingRelsBytes = sourceAssets.archive[attachment.drawingRelsPath];
|
|
6331
|
-
if (drawingRelsBytes) {
|
|
6332
|
-
archive[attachment.drawingRelsPath] = cloneBytes(drawingRelsBytes);
|
|
6333
|
-
mergeContentTypeForPath(targetContentTypesDocument, originalContentTypesDocument, attachment.drawingRelsPath);
|
|
6334
|
-
}
|
|
6335
|
-
}
|
|
6336
|
-
attachment.mediaPaths.forEach((mediaPath) => {
|
|
6337
|
-
const mediaBytes = sourceAssets.archive[mediaPath];
|
|
6338
|
-
if (!mediaBytes) {
|
|
6339
|
-
return;
|
|
6340
|
-
}
|
|
6341
|
-
archive[mediaPath] = cloneBytes(mediaBytes);
|
|
6342
|
-
mergeContentTypeForPath(targetContentTypesDocument, originalContentTypesDocument, mediaPath);
|
|
6343
|
-
});
|
|
6437
|
+
copyDrawingPart(attachment.drawingPath);
|
|
6344
6438
|
const relationshipId = nextRelationshipId(relDocument);
|
|
6345
6439
|
const relationshipNode = relDocument.createElementNS(PKG_REL_NS, "Relationship");
|
|
6346
6440
|
relationshipNode.setAttribute("Id", relationshipId);
|
|
@@ -6402,7 +6496,7 @@ function markerFromOffset(offsetPx, getSizePx) {
|
|
|
6402
6496
|
let remaining = Math.max(0, offsetPx);
|
|
6403
6497
|
let index = 0;
|
|
6404
6498
|
while (remaining > 0) {
|
|
6405
|
-
const size = Math.max(
|
|
6499
|
+
const size = Math.max(0, getSizePx(index));
|
|
6406
6500
|
if (remaining < size) {
|
|
6407
6501
|
break;
|
|
6408
6502
|
}
|
|
@@ -7186,6 +7280,7 @@ function buildSheetList(workbook, sheetStatesByWorkbookSheetIndex, themePalette,
|
|
|
7186
7280
|
const usedRange = worksheet.usedRange();
|
|
7187
7281
|
if (!usedRange) {
|
|
7188
7282
|
sheets.push({
|
|
7283
|
+
autoFilterRanges: sheetState?.autoFilterRanges ?? [],
|
|
7189
7284
|
cachedFormulaValues: sheetState?.cachedFormulaValues ?? {},
|
|
7190
7285
|
columnWidthCharacterWidthPx: sheetState?.columnWidthCharacterWidthPx,
|
|
7191
7286
|
colWidthOverridesPx: sheetState?.colWidthOverridesPx ?? {},
|
|
@@ -7272,6 +7367,7 @@ function buildSheetList(workbook, sheetStatesByWorkbookSheetIndex, themePalette,
|
|
|
7272
7367
|
return colWidthsCache;
|
|
7273
7368
|
};
|
|
7274
7369
|
const sheet = {
|
|
7370
|
+
autoFilterRanges: sheetState?.autoFilterRanges ?? [],
|
|
7275
7371
|
cachedFormulaValues: sheetState?.cachedFormulaValues ?? {},
|
|
7276
7372
|
columnWidthCharacterWidthPx: sheetState?.columnWidthCharacterWidthPx,
|
|
7277
7373
|
colWidthOverridesPx: sheetState?.colWidthOverridesPx ?? {},
|
|
@@ -7652,9 +7748,9 @@ function rangeContainsCell(range, cell) {
|
|
|
7652
7748
|
const normalized = normalizeRange(range);
|
|
7653
7749
|
return cell.row >= normalized.start.row && cell.row <= normalized.end.row && cell.col >= normalized.start.col && cell.col <= normalized.end.col;
|
|
7654
7750
|
}
|
|
7655
|
-
function mapWorksheetTables(worksheet) {
|
|
7751
|
+
function mapWorksheetTables(worksheet, autoFilterRanges = []) {
|
|
7656
7752
|
const rawTables = worksheet?.tables ?? [];
|
|
7657
|
-
|
|
7753
|
+
const mappedTables = rawTables.flatMap((table, index) => {
|
|
7658
7754
|
const rawColumns = Array.isArray(table.columns) ? table.columns : [];
|
|
7659
7755
|
const rawName = typeof table.name === "string" ? table.name : `Table${index + 1}`;
|
|
7660
7756
|
const rawDisplayName = typeof table.displayName === "string" ? table.displayName : typeof table.name === "string" ? table.name : `Table ${index + 1}`;
|
|
@@ -7682,6 +7778,34 @@ function mapWorksheetTables(worksheet) {
|
|
|
7682
7778
|
totalsRowShown: resolveWorkbookTableBoolean(table.totalsRowShown)
|
|
7683
7779
|
}];
|
|
7684
7780
|
});
|
|
7781
|
+
const existingReferences = new Set(mappedTables.map((table) => table.reference));
|
|
7782
|
+
const mappedAutoFilterTables = autoFilterRanges.flatMap((range, index) => {
|
|
7783
|
+
const reference = rangeToA1(range);
|
|
7784
|
+
if (existingReferences.has(reference)) {
|
|
7785
|
+
return [];
|
|
7786
|
+
}
|
|
7787
|
+
const columnCount = Math.max(0, range.end.col - range.start.col + 1);
|
|
7788
|
+
const columns = Array.from({ length: columnCount }, (_, columnIndex) => {
|
|
7789
|
+
const headerValue = worksheet ? decodeHtmlEntities(worksheet.getFormattedValueAt(range.start.row, range.start.col + columnIndex) ?? "") : "";
|
|
7790
|
+
return {
|
|
7791
|
+
id: columnIndex + 1,
|
|
7792
|
+
index: columnIndex,
|
|
7793
|
+
name: headerValue.trim().length > 0 ? headerValue : `Column ${columnIndex + 1}`
|
|
7794
|
+
};
|
|
7795
|
+
});
|
|
7796
|
+
return [{
|
|
7797
|
+
columns,
|
|
7798
|
+
displayName: `AutoFilter ${index + 1}`,
|
|
7799
|
+
end: range.end,
|
|
7800
|
+
headerRowCount: 1,
|
|
7801
|
+
name: `__autofilter_${index + 1}_${reference}`,
|
|
7802
|
+
reference,
|
|
7803
|
+
start: range.start,
|
|
7804
|
+
totalsRowCount: 0,
|
|
7805
|
+
totalsRowShown: false
|
|
7806
|
+
}];
|
|
7807
|
+
});
|
|
7808
|
+
return [...mappedTables, ...mappedAutoFilterTables];
|
|
7685
7809
|
}
|
|
7686
7810
|
function resolveWorkbookTableCount(value, fallback) {
|
|
7687
7811
|
if (typeof value === "number" && Number.isFinite(value) && value >= 0) {
|
|
@@ -8408,6 +8532,10 @@ function useXlsxViewerController(options) {
|
|
|
8408
8532
|
if (requestToken !== chartLoadRequestTokenRef.current) {
|
|
8409
8533
|
return;
|
|
8410
8534
|
}
|
|
8535
|
+
if (imageAssetsRef.current && !effectiveSkipXmlParsing) {
|
|
8536
|
+
const chartOriginsById = hydrateWorkbookChartStyles(result.chartsByWorkbookSheetIndex, imageAssetsRef.current);
|
|
8537
|
+
chartAssetsRef.current = { ...result, chartOriginsById };
|
|
8538
|
+
}
|
|
8411
8539
|
setChartsByWorkbookSheetIndex(result.chartsByWorkbookSheetIndex);
|
|
8412
8540
|
setChartsheets(result.chartsheets);
|
|
8413
8541
|
setTabs(result.tabs);
|
|
@@ -8623,13 +8751,14 @@ function useXlsxViewerController(options) {
|
|
|
8623
8751
|
return;
|
|
8624
8752
|
}
|
|
8625
8753
|
setImageAssets(workerImageAssets);
|
|
8754
|
+
const chartOriginsById = workerImageAssets ? hydrateWorkbookChartStyles(snapshot.chartsByWorkbookSheetIndex, workerImageAssets) : /* @__PURE__ */ new Map();
|
|
8626
8755
|
setFormControlsByWorkbookSheetIndex(snapshot.formControlsByWorkbookSheetIndex);
|
|
8627
8756
|
setWorkbook(null);
|
|
8628
8757
|
setSheets(snapshot.sheets);
|
|
8629
8758
|
setChartsByWorkbookSheetIndex(snapshot.chartsByWorkbookSheetIndex);
|
|
8630
8759
|
setChartsheets(snapshot.chartsheets);
|
|
8631
8760
|
setTabs(snapshot.tabs);
|
|
8632
|
-
chartAssetsRef.current =
|
|
8761
|
+
chartAssetsRef.current = { ...snapshot, chartOriginsById };
|
|
8633
8762
|
setWorkerTablesByWorkbookSheetIndex(snapshot.tablesByWorkbookSheetIndex);
|
|
8634
8763
|
setShouldAutoCalculate(false);
|
|
8635
8764
|
setIsWorkerBacked(true);
|
|
@@ -8841,6 +8970,9 @@ function useXlsxViewerController(options) {
|
|
|
8841
8970
|
if (!effectiveSkipXmlParsing && hasIncompleteWorkerChartSnapshot(snapshot)) {
|
|
8842
8971
|
throw new Error("Worker chart payload incomplete");
|
|
8843
8972
|
}
|
|
8973
|
+
const workerImageAssets = effectiveSkipXmlParsing ? null : parseWorkbookImageAssets(new Uint8Array(deferredBuffer));
|
|
8974
|
+
setImageAssets(workerImageAssets);
|
|
8975
|
+
const chartOriginsById = workerImageAssets ? hydrateWorkbookChartStyles(snapshot.chartsByWorkbookSheetIndex, workerImageAssets) : /* @__PURE__ */ new Map();
|
|
8844
8976
|
deferredBufferRef.current = null;
|
|
8845
8977
|
setDeferredLoadFileSize(null);
|
|
8846
8978
|
setWorkbook(null);
|
|
@@ -8848,7 +8980,7 @@ function useXlsxViewerController(options) {
|
|
|
8848
8980
|
setChartsByWorkbookSheetIndex(snapshot.chartsByWorkbookSheetIndex);
|
|
8849
8981
|
setChartsheets(snapshot.chartsheets);
|
|
8850
8982
|
setTabs(snapshot.tabs);
|
|
8851
|
-
chartAssetsRef.current =
|
|
8983
|
+
chartAssetsRef.current = { ...snapshot, chartOriginsById };
|
|
8852
8984
|
setFormControlsByWorkbookSheetIndex(snapshot.formControlsByWorkbookSheetIndex);
|
|
8853
8985
|
setWorkerTablesByWorkbookSheetIndex(snapshot.tablesByWorkbookSheetIndex);
|
|
8854
8986
|
setShouldAutoCalculate(false);
|
|
@@ -8986,8 +9118,8 @@ function useXlsxViewerController(options) {
|
|
|
8986
9118
|
}
|
|
8987
9119
|
}, [activeSheetIndex, sheets, workbook]);
|
|
8988
9120
|
const tables = React.useMemo(
|
|
8989
|
-
() => isWorkerBacked ? workerTablesByWorkbookSheetIndex[activeSheet?.workbookSheetIndex ?? -1] ?? [] : mapWorksheetTables(getActiveWorksheet()),
|
|
8990
|
-
[activeSheet?.workbookSheetIndex, getActiveWorksheet, isWorkerBacked, revision, workerTablesByWorkbookSheetIndex]
|
|
9121
|
+
() => isWorkerBacked ? workerTablesByWorkbookSheetIndex[activeSheet?.workbookSheetIndex ?? -1] ?? [] : mapWorksheetTables(getActiveWorksheet(), activeSheet?.autoFilterRanges ?? []),
|
|
9122
|
+
[activeSheet?.autoFilterRanges, activeSheet?.workbookSheetIndex, getActiveWorksheet, isWorkerBacked, revision, workerTablesByWorkbookSheetIndex]
|
|
8991
9123
|
);
|
|
8992
9124
|
const getCellSnapshotAsync = React.useCallback((workbookSheetIndex, row, col) => {
|
|
8993
9125
|
if (!isWorkerBacked) {
|
|
@@ -9939,7 +10071,7 @@ function useXlsxViewerController(options) {
|
|
|
9939
10071
|
width: Math.max(1, right - left)
|
|
9940
10072
|
};
|
|
9941
10073
|
}, [getColumnWidthPx, getRowHeightPx]);
|
|
9942
|
-
const setChartRect = React.useCallback((id, rect) => {
|
|
10074
|
+
const setChartRect = React.useCallback((id, rect, layout) => {
|
|
9943
10075
|
const hydratedChartAssets = ensureChartAssetsHydrated(workbook, sheets);
|
|
9944
10076
|
console.info("[react-xlsx debug] setChartRect", {
|
|
9945
10077
|
hasActiveSheet: Boolean(activeSheet),
|
|
@@ -9968,8 +10100,8 @@ function useXlsxViewerController(options) {
|
|
|
9968
10100
|
const nextAnchor = rectToImageAnchor(rect, currentChart.anchor, {
|
|
9969
10101
|
contentOffsetLeft: GRID_ROW_HEADER_WIDTH,
|
|
9970
10102
|
contentOffsetTop: GRID_HEADER_HEIGHT,
|
|
9971
|
-
getColumnWidthPx: (col) => getColumnWidthPx(worksheet, col),
|
|
9972
|
-
getRowHeightPx: (row) => getRowHeightPx(worksheet, row)
|
|
10103
|
+
getColumnWidthPx: (col) => layout?.columnWidths[col] ?? getColumnWidthPx(worksheet, col),
|
|
10104
|
+
getRowHeightPx: (row) => layout?.rowHeights[row] ?? getRowHeightPx(worksheet, row)
|
|
9973
10105
|
});
|
|
9974
10106
|
recordHistoryBeforeMutation();
|
|
9975
10107
|
const didUpdateAnchor = updateWorkbookChartAnchor(imageAssetsRef.current, hydratedChartAssets, id, nextAnchor);
|
|
@@ -9988,7 +10120,7 @@ function useXlsxViewerController(options) {
|
|
|
9988
10120
|
sheets,
|
|
9989
10121
|
workbook
|
|
9990
10122
|
]);
|
|
9991
|
-
const setImageRect = React.useCallback((id, rect) => {
|
|
10123
|
+
const setImageRect = React.useCallback((id, rect, layout) => {
|
|
9992
10124
|
if (readOnly || !workbook || !activeSheet || !imageAssetsRef.current) {
|
|
9993
10125
|
return;
|
|
9994
10126
|
}
|
|
@@ -10000,8 +10132,8 @@ function useXlsxViewerController(options) {
|
|
|
10000
10132
|
const nextAnchor = rectToImageAnchor(rect, currentImage.anchor, {
|
|
10001
10133
|
contentOffsetLeft: GRID_ROW_HEADER_WIDTH,
|
|
10002
10134
|
contentOffsetTop: GRID_HEADER_HEIGHT,
|
|
10003
|
-
getColumnWidthPx: (col) => getColumnWidthPx(worksheet, col),
|
|
10004
|
-
getRowHeightPx: (row) => getRowHeightPx(worksheet, row)
|
|
10135
|
+
getColumnWidthPx: (col) => layout?.columnWidths[col] ?? getColumnWidthPx(worksheet, col),
|
|
10136
|
+
getRowHeightPx: (row) => layout?.rowHeights[row] ?? getRowHeightPx(worksheet, row)
|
|
10005
10137
|
});
|
|
10006
10138
|
recordHistoryBeforeMutation();
|
|
10007
10139
|
if (!updateWorkbookImageAnchor(imageAssetsRef.current, id, nextAnchor)) {
|
|
@@ -11040,6 +11172,570 @@ import {
|
|
|
11040
11172
|
useVirtualizer
|
|
11041
11173
|
} from "@tanstack/react-virtual";
|
|
11042
11174
|
|
|
11175
|
+
// src/builtin-table-styles.ts
|
|
11176
|
+
var BUILTIN_TABLE_STYLES = {
|
|
11177
|
+
TableStyleLight1: {
|
|
11178
|
+
wholeTable: { "font": { "color": { "theme": 1 } }, "border": { "top": { "color": { "theme": 1 }, "style": "thin" }, "bottom": { "color": { "theme": 1 }, "style": "thin" } } },
|
|
11179
|
+
headerRow: { "font": { "bold": true, "color": { "theme": 1 } }, "border": { "bottom": { "color": { "theme": 1 }, "style": "thin" } } },
|
|
11180
|
+
totalRow: { "font": { "bold": true, "color": { "theme": 1 } }, "border": { "top": { "color": { "theme": 1 }, "style": "thin" } } },
|
|
11181
|
+
firstColumn: { "font": { "bold": true, "color": { "theme": 1 } } },
|
|
11182
|
+
lastColumn: { "font": { "bold": true, "color": { "theme": 1 } } },
|
|
11183
|
+
firstRowStripe: { "fill": { "color": { "theme": 0, "tint": -0.15 }, "fillType": "solid" } },
|
|
11184
|
+
firstColumnStripe: { "fill": { "color": { "theme": 0, "tint": -0.15 }, "fillType": "solid" } }
|
|
11185
|
+
},
|
|
11186
|
+
TableStyleLight2: {
|
|
11187
|
+
wholeTable: { "font": { "color": { "theme": 4, "tint": -0.25 } }, "border": { "top": { "color": { "theme": 4 }, "style": "thin" }, "bottom": { "color": { "theme": 4 }, "style": "thin" } } },
|
|
11188
|
+
headerRow: { "font": { "bold": true, "color": { "theme": 4, "tint": -0.25 } }, "border": { "bottom": { "color": { "theme": 4 }, "style": "thin" } } },
|
|
11189
|
+
totalRow: { "font": { "bold": true, "color": { "theme": 4, "tint": -0.25 } }, "border": { "top": { "color": { "theme": 4 }, "style": "thin" } } },
|
|
11190
|
+
firstColumn: { "font": { "bold": true, "color": { "theme": 4, "tint": -0.25 } } },
|
|
11191
|
+
lastColumn: { "font": { "bold": true, "color": { "theme": 4, "tint": -0.25 } } },
|
|
11192
|
+
firstRowStripe: { "fill": { "color": { "theme": 4, "tint": 0.8 }, "fillType": "solid" } },
|
|
11193
|
+
firstColumnStripe: { "fill": { "color": { "theme": 4, "tint": 0.8 }, "fillType": "solid" } }
|
|
11194
|
+
},
|
|
11195
|
+
TableStyleLight3: {
|
|
11196
|
+
wholeTable: { "font": { "color": { "theme": 5, "tint": -0.25 } }, "border": { "top": { "color": { "theme": 5 }, "style": "thin" }, "bottom": { "color": { "theme": 5 }, "style": "thin" } } },
|
|
11197
|
+
headerRow: { "font": { "bold": true, "color": { "theme": 5, "tint": -0.25 } }, "border": { "bottom": { "color": { "theme": 5 }, "style": "thin" } } },
|
|
11198
|
+
totalRow: { "font": { "bold": true, "color": { "theme": 5, "tint": -0.25 } }, "border": { "top": { "color": { "theme": 5 }, "style": "thin" } } },
|
|
11199
|
+
firstColumn: { "font": { "bold": true, "color": { "theme": 5, "tint": -0.25 } } },
|
|
11200
|
+
lastColumn: { "font": { "bold": true, "color": { "theme": 5, "tint": -0.25 } } },
|
|
11201
|
+
firstRowStripe: { "fill": { "color": { "theme": 5, "tint": 0.8 }, "fillType": "solid" } },
|
|
11202
|
+
firstColumnStripe: { "fill": { "color": { "theme": 5, "tint": 0.8 }, "fillType": "solid" } }
|
|
11203
|
+
},
|
|
11204
|
+
TableStyleLight4: {
|
|
11205
|
+
wholeTable: { "font": { "color": { "theme": 6, "tint": -0.25 } }, "border": { "top": { "color": { "theme": 6 }, "style": "thin" }, "bottom": { "color": { "theme": 6 }, "style": "thin" } } },
|
|
11206
|
+
headerRow: { "font": { "bold": true, "color": { "theme": 6, "tint": -0.25 } }, "border": { "bottom": { "color": { "theme": 6 }, "style": "thin" } } },
|
|
11207
|
+
totalRow: { "font": { "bold": true, "color": { "theme": 6, "tint": -0.25 } }, "border": { "top": { "color": { "theme": 6 }, "style": "thin" } } },
|
|
11208
|
+
firstColumn: { "font": { "bold": true, "color": { "theme": 6, "tint": -0.25 } } },
|
|
11209
|
+
lastColumn: { "font": { "bold": true, "color": { "theme": 6, "tint": -0.25 } } },
|
|
11210
|
+
firstRowStripe: { "fill": { "color": { "theme": 6, "tint": 0.8 }, "fillType": "solid" } },
|
|
11211
|
+
firstColumnStripe: { "fill": { "color": { "theme": 6, "tint": 0.8 }, "fillType": "solid" } }
|
|
11212
|
+
},
|
|
11213
|
+
TableStyleLight5: {
|
|
11214
|
+
wholeTable: { "font": { "color": { "theme": 7, "tint": -0.25 } }, "border": { "top": { "color": { "theme": 7 }, "style": "thin" }, "bottom": { "color": { "theme": 7 }, "style": "thin" } } },
|
|
11215
|
+
headerRow: { "font": { "bold": true, "color": { "theme": 7, "tint": -0.25 } }, "border": { "bottom": { "color": { "theme": 7 }, "style": "thin" } } },
|
|
11216
|
+
totalRow: { "font": { "bold": true, "color": { "theme": 7, "tint": -0.25 } }, "border": { "top": { "color": { "theme": 7 }, "style": "thin" } } },
|
|
11217
|
+
firstColumn: { "font": { "bold": true, "color": { "theme": 7, "tint": -0.25 } } },
|
|
11218
|
+
lastColumn: { "font": { "bold": true, "color": { "theme": 7, "tint": -0.25 } } },
|
|
11219
|
+
firstRowStripe: { "fill": { "color": { "theme": 7, "tint": 0.8 }, "fillType": "solid" } },
|
|
11220
|
+
firstColumnStripe: { "fill": { "color": { "theme": 7, "tint": 0.8 }, "fillType": "solid" } }
|
|
11221
|
+
},
|
|
11222
|
+
TableStyleLight6: {
|
|
11223
|
+
wholeTable: { "font": { "color": { "theme": 8, "tint": -0.25 } }, "border": { "top": { "color": { "theme": 8 }, "style": "thin" }, "bottom": { "color": { "theme": 8 }, "style": "thin" } } },
|
|
11224
|
+
headerRow: { "font": { "bold": true, "color": { "theme": 8, "tint": -0.25 } }, "border": { "bottom": { "color": { "theme": 8 }, "style": "thin" } } },
|
|
11225
|
+
totalRow: { "font": { "bold": true, "color": { "theme": 8, "tint": -0.25 } }, "border": { "top": { "color": { "theme": 8 }, "style": "thin" } } },
|
|
11226
|
+
firstColumn: { "font": { "bold": true, "color": { "theme": 8, "tint": -0.25 } } },
|
|
11227
|
+
lastColumn: { "font": { "bold": true, "color": { "theme": 8, "tint": -0.25 } } },
|
|
11228
|
+
firstRowStripe: { "fill": { "color": { "theme": 8, "tint": 0.8 }, "fillType": "solid" } },
|
|
11229
|
+
firstColumnStripe: { "fill": { "color": { "theme": 8, "tint": 0.8 }, "fillType": "solid" } }
|
|
11230
|
+
},
|
|
11231
|
+
TableStyleLight7: {
|
|
11232
|
+
wholeTable: { "font": { "color": { "theme": 9, "tint": -0.25 } }, "border": { "top": { "color": { "theme": 9 }, "style": "thin" }, "bottom": { "color": { "theme": 9 }, "style": "thin" } } },
|
|
11233
|
+
headerRow: { "font": { "bold": true, "color": { "theme": 9, "tint": -0.25 } }, "border": { "bottom": { "color": { "theme": 9 }, "style": "thin" } } },
|
|
11234
|
+
totalRow: { "font": { "bold": true, "color": { "theme": 9, "tint": -0.25 } }, "border": { "top": { "color": { "theme": 9 }, "style": "thin" } } },
|
|
11235
|
+
firstColumn: { "font": { "bold": true, "color": { "theme": 9, "tint": -0.25 } } },
|
|
11236
|
+
lastColumn: { "font": { "bold": true, "color": { "theme": 9, "tint": -0.25 } } },
|
|
11237
|
+
firstRowStripe: { "fill": { "color": { "theme": 9, "tint": 0.8 }, "fillType": "solid" } },
|
|
11238
|
+
firstColumnStripe: { "fill": { "color": { "theme": 9, "tint": 0.8 }, "fillType": "solid" } }
|
|
11239
|
+
},
|
|
11240
|
+
TableStyleLight8: {
|
|
11241
|
+
wholeTable: { "font": { "color": { "theme": 1 } }, "border": { "top": { "color": { "theme": 1 }, "style": "thin" }, "right": { "color": { "theme": 1 }, "style": "thin" }, "bottom": { "color": { "theme": 1 }, "style": "thin" }, "left": { "color": { "theme": 1 }, "style": "thin" } } },
|
|
11242
|
+
headerRow: { "font": { "bold": true, "color": { "theme": 0 } }, "fill": { "color": { "theme": 1 }, "fillType": "solid" } },
|
|
11243
|
+
totalRow: { "font": { "bold": true, "color": { "theme": 1 } }, "border": { "top": { "color": { "theme": 1 }, "style": "double" } } },
|
|
11244
|
+
firstColumn: { "font": { "bold": true, "color": { "theme": 1 } } },
|
|
11245
|
+
lastColumn: { "font": { "bold": true, "color": { "theme": 1 } } },
|
|
11246
|
+
firstRowStripe: { "border": { "top": { "color": { "theme": 1 }, "style": "thin" } } },
|
|
11247
|
+
secondRowStripe: { "border": { "top": { "color": { "theme": 1 }, "style": "thin" } } },
|
|
11248
|
+
firstColumnStripe: { "border": { "left": { "color": { "theme": 1 }, "style": "thin" } } },
|
|
11249
|
+
secondColumnStripe: { "border": { "left": { "color": { "theme": 1 }, "style": "thin" } } }
|
|
11250
|
+
},
|
|
11251
|
+
TableStyleLight9: {
|
|
11252
|
+
wholeTable: { "font": { "color": { "theme": 1 } }, "border": { "top": { "color": { "theme": 4 }, "style": "thin" }, "right": { "color": { "theme": 4 }, "style": "thin" }, "bottom": { "color": { "theme": 4 }, "style": "thin" }, "left": { "color": { "theme": 4 }, "style": "thin" } } },
|
|
11253
|
+
headerRow: { "font": { "bold": true, "color": { "theme": 0 } }, "fill": { "color": { "theme": 4 }, "fillType": "solid" } },
|
|
11254
|
+
totalRow: { "font": { "bold": true, "color": { "theme": 1 } }, "border": { "top": { "color": { "theme": 4 }, "style": "double" } } },
|
|
11255
|
+
firstColumn: { "font": { "bold": true, "color": { "theme": 1 } } },
|
|
11256
|
+
lastColumn: { "font": { "bold": true, "color": { "theme": 1 } } },
|
|
11257
|
+
firstRowStripe: { "border": { "top": { "color": { "theme": 4 }, "style": "thin" } } },
|
|
11258
|
+
secondRowStripe: { "border": { "top": { "color": { "theme": 4 }, "style": "thin" } } },
|
|
11259
|
+
firstColumnStripe: { "border": { "left": { "color": { "theme": 4 }, "style": "thin" } } },
|
|
11260
|
+
secondColumnStripe: { "border": { "left": { "color": { "theme": 4 }, "style": "thin" } } }
|
|
11261
|
+
},
|
|
11262
|
+
TableStyleLight10: {
|
|
11263
|
+
wholeTable: { "font": { "color": { "theme": 1 } }, "border": { "top": { "color": { "theme": 5 }, "style": "thin" }, "right": { "color": { "theme": 5 }, "style": "thin" }, "bottom": { "color": { "theme": 5 }, "style": "thin" }, "left": { "color": { "theme": 5 }, "style": "thin" } } },
|
|
11264
|
+
headerRow: { "font": { "bold": true, "color": { "theme": 0 } }, "fill": { "color": { "theme": 5 }, "fillType": "solid" } },
|
|
11265
|
+
totalRow: { "font": { "bold": true, "color": { "theme": 1 } }, "border": { "top": { "color": { "theme": 5 }, "style": "double" } } },
|
|
11266
|
+
firstColumn: { "font": { "bold": true, "color": { "theme": 1 } } },
|
|
11267
|
+
lastColumn: { "font": { "bold": true, "color": { "theme": 1 } } },
|
|
11268
|
+
firstRowStripe: { "border": { "top": { "color": { "theme": 5 }, "style": "thin" } } },
|
|
11269
|
+
secondRowStripe: { "border": { "top": { "color": { "theme": 5 }, "style": "thin" } } },
|
|
11270
|
+
firstColumnStripe: { "border": { "left": { "color": { "theme": 5 }, "style": "thin" } } },
|
|
11271
|
+
secondColumnStripe: { "border": { "left": { "color": { "theme": 5 }, "style": "thin" } } }
|
|
11272
|
+
},
|
|
11273
|
+
TableStyleLight11: {
|
|
11274
|
+
wholeTable: { "font": { "color": { "theme": 1 } }, "border": { "top": { "color": { "theme": 6 }, "style": "thin" }, "right": { "color": { "theme": 6 }, "style": "thin" }, "bottom": { "color": { "theme": 6 }, "style": "thin" }, "left": { "color": { "theme": 6 }, "style": "thin" } } },
|
|
11275
|
+
headerRow: { "font": { "bold": true, "color": { "theme": 0 } }, "fill": { "color": { "theme": 6 }, "fillType": "solid" } },
|
|
11276
|
+
totalRow: { "font": { "bold": true, "color": { "theme": 1 } }, "border": { "top": { "color": { "theme": 6 }, "style": "double" } } },
|
|
11277
|
+
firstColumn: { "font": { "bold": true, "color": { "theme": 1 } } },
|
|
11278
|
+
lastColumn: { "font": { "bold": true, "color": { "theme": 1 } } },
|
|
11279
|
+
firstRowStripe: { "border": { "top": { "color": { "theme": 6 }, "style": "thin" } } },
|
|
11280
|
+
secondRowStripe: { "border": { "top": { "color": { "theme": 6 }, "style": "thin" } } },
|
|
11281
|
+
firstColumnStripe: { "border": { "left": { "color": { "theme": 6 }, "style": "thin" } } },
|
|
11282
|
+
secondColumnStripe: { "border": { "left": { "color": { "theme": 6 }, "style": "thin" } } }
|
|
11283
|
+
},
|
|
11284
|
+
TableStyleLight12: {
|
|
11285
|
+
wholeTable: { "font": { "color": { "theme": 1 } }, "border": { "top": { "color": { "theme": 7 }, "style": "thin" }, "right": { "color": { "theme": 7 }, "style": "thin" }, "bottom": { "color": { "theme": 7 }, "style": "thin" }, "left": { "color": { "theme": 7 }, "style": "thin" } } },
|
|
11286
|
+
headerRow: { "font": { "bold": true, "color": { "theme": 0 } }, "fill": { "color": { "theme": 7 }, "fillType": "solid" } },
|
|
11287
|
+
totalRow: { "font": { "bold": true, "color": { "theme": 1 } }, "border": { "top": { "color": { "theme": 7 }, "style": "double" } } },
|
|
11288
|
+
firstColumn: { "font": { "bold": true, "color": { "theme": 1 } } },
|
|
11289
|
+
lastColumn: { "font": { "bold": true, "color": { "theme": 1 } } },
|
|
11290
|
+
firstRowStripe: { "border": { "top": { "color": { "theme": 7 }, "style": "thin" } } },
|
|
11291
|
+
secondRowStripe: { "border": { "top": { "color": { "theme": 7 }, "style": "thin" } } },
|
|
11292
|
+
firstColumnStripe: { "border": { "left": { "color": { "theme": 7 }, "style": "thin" } } },
|
|
11293
|
+
secondColumnStripe: { "border": { "left": { "color": { "theme": 7 }, "style": "thin" } } }
|
|
11294
|
+
},
|
|
11295
|
+
TableStyleLight13: {
|
|
11296
|
+
wholeTable: { "font": { "color": { "theme": 1 } }, "border": { "top": { "color": { "theme": 8 }, "style": "thin" }, "right": { "color": { "theme": 8 }, "style": "thin" }, "bottom": { "color": { "theme": 8 }, "style": "thin" }, "left": { "color": { "theme": 8 }, "style": "thin" } } },
|
|
11297
|
+
headerRow: { "font": { "bold": true, "color": { "theme": 0 } }, "fill": { "color": { "theme": 8 }, "fillType": "solid" } },
|
|
11298
|
+
totalRow: { "font": { "bold": true, "color": { "theme": 1 } }, "border": { "top": { "color": { "theme": 8 }, "style": "double" } } },
|
|
11299
|
+
firstColumn: { "font": { "bold": true, "color": { "theme": 1 } } },
|
|
11300
|
+
lastColumn: { "font": { "bold": true, "color": { "theme": 1 } } },
|
|
11301
|
+
firstRowStripe: { "border": { "top": { "color": { "theme": 8 }, "style": "thin" } } },
|
|
11302
|
+
secondRowStripe: { "border": { "top": { "color": { "theme": 8 }, "style": "thin" } } },
|
|
11303
|
+
firstColumnStripe: { "border": { "left": { "color": { "theme": 8 }, "style": "thin" } } },
|
|
11304
|
+
secondColumnStripe: { "border": { "left": { "color": { "theme": 8 }, "style": "thin" } } }
|
|
11305
|
+
},
|
|
11306
|
+
TableStyleLight14: {
|
|
11307
|
+
wholeTable: { "font": { "color": { "theme": 1 } }, "border": { "top": { "color": { "theme": 9 }, "style": "thin" }, "right": { "color": { "theme": 9 }, "style": "thin" }, "bottom": { "color": { "theme": 9 }, "style": "thin" }, "left": { "color": { "theme": 9 }, "style": "thin" } } },
|
|
11308
|
+
headerRow: { "font": { "bold": true, "color": { "theme": 0 } }, "fill": { "color": { "theme": 9 }, "fillType": "solid" } },
|
|
11309
|
+
totalRow: { "font": { "bold": true, "color": { "theme": 1 } }, "border": { "top": { "color": { "theme": 9 }, "style": "double" } } },
|
|
11310
|
+
firstColumn: { "font": { "bold": true, "color": { "theme": 1 } } },
|
|
11311
|
+
lastColumn: { "font": { "bold": true, "color": { "theme": 1 } } },
|
|
11312
|
+
firstRowStripe: { "border": { "top": { "color": { "theme": 9 }, "style": "thin" } } },
|
|
11313
|
+
secondRowStripe: { "border": { "top": { "color": { "theme": 9 }, "style": "thin" } } },
|
|
11314
|
+
firstColumnStripe: { "border": { "left": { "color": { "theme": 9 }, "style": "thin" } } },
|
|
11315
|
+
secondColumnStripe: { "border": { "left": { "color": { "theme": 9 }, "style": "thin" } } }
|
|
11316
|
+
},
|
|
11317
|
+
TableStyleLight15: {
|
|
11318
|
+
wholeTable: { "font": { "color": { "theme": 1 } }, "border": { "top": { "color": { "theme": 1 }, "style": "thin" }, "right": { "color": { "theme": 1 }, "style": "thin" }, "bottom": { "color": { "theme": 1 }, "style": "thin" }, "left": { "color": { "theme": 1 }, "style": "thin" }, "horizontal": { "color": { "theme": 1 }, "style": "thin" }, "vertical": { "color": { "theme": 1 }, "style": "thin" } } },
|
|
11319
|
+
headerRow: { "font": { "bold": true, "color": { "theme": 1 } }, "border": { "bottom": { "color": { "theme": 1 }, "style": "medium" } } },
|
|
11320
|
+
totalRow: { "font": { "bold": true, "color": { "theme": 1 } }, "border": { "top": { "color": { "theme": 1 }, "style": "double" } } },
|
|
11321
|
+
firstColumn: { "font": { "bold": true, "color": { "theme": 1 } } },
|
|
11322
|
+
lastColumn: { "font": { "bold": true, "color": { "theme": 1 } } },
|
|
11323
|
+
firstRowStripe: { "fill": { "color": { "theme": 0, "tint": -0.15 }, "fillType": "solid" } },
|
|
11324
|
+
firstColumnStripe: { "fill": { "color": { "theme": 0, "tint": -0.15 }, "fillType": "solid" } }
|
|
11325
|
+
},
|
|
11326
|
+
TableStyleLight16: {
|
|
11327
|
+
wholeTable: { "font": { "color": { "theme": 1 } }, "border": { "top": { "color": { "theme": 4 }, "style": "thin" }, "right": { "color": { "theme": 4 }, "style": "thin" }, "bottom": { "color": { "theme": 4 }, "style": "thin" }, "left": { "color": { "theme": 4 }, "style": "thin" }, "horizontal": { "color": { "theme": 4 }, "style": "thin" }, "vertical": { "color": { "theme": 4 }, "style": "thin" } } },
|
|
11328
|
+
headerRow: { "font": { "bold": true, "color": { "theme": 1 } }, "border": { "bottom": { "color": { "theme": 4 }, "style": "medium" } } },
|
|
11329
|
+
totalRow: { "font": { "bold": true, "color": { "theme": 1 } }, "border": { "top": { "color": { "theme": 4 }, "style": "double" } } },
|
|
11330
|
+
firstColumn: { "font": { "bold": true, "color": { "theme": 1 } } },
|
|
11331
|
+
lastColumn: { "font": { "bold": true, "color": { "theme": 1 } } },
|
|
11332
|
+
firstRowStripe: { "fill": { "color": { "theme": 4, "tint": 0.8 }, "fillType": "solid" } },
|
|
11333
|
+
firstColumnStripe: { "fill": { "color": { "theme": 4, "tint": 0.8 }, "fillType": "solid" } }
|
|
11334
|
+
},
|
|
11335
|
+
TableStyleLight17: {
|
|
11336
|
+
wholeTable: { "font": { "color": { "theme": 1 } }, "border": { "top": { "color": { "theme": 5 }, "style": "thin" }, "right": { "color": { "theme": 5 }, "style": "thin" }, "bottom": { "color": { "theme": 5 }, "style": "thin" }, "left": { "color": { "theme": 5 }, "style": "thin" }, "horizontal": { "color": { "theme": 5 }, "style": "thin" }, "vertical": { "color": { "theme": 5 }, "style": "thin" } } },
|
|
11337
|
+
headerRow: { "font": { "bold": true, "color": { "theme": 1 } }, "border": { "bottom": { "color": { "theme": 5 }, "style": "medium" } } },
|
|
11338
|
+
totalRow: { "font": { "bold": true, "color": { "theme": 1 } }, "border": { "top": { "color": { "theme": 5 }, "style": "double" } } },
|
|
11339
|
+
firstColumn: { "font": { "bold": true, "color": { "theme": 1 } } },
|
|
11340
|
+
lastColumn: { "font": { "bold": true, "color": { "theme": 1 } } },
|
|
11341
|
+
firstRowStripe: { "fill": { "color": { "theme": 5, "tint": 0.8 }, "fillType": "solid" } },
|
|
11342
|
+
firstColumnStripe: { "fill": { "color": { "theme": 5, "tint": 0.8 }, "fillType": "solid" } }
|
|
11343
|
+
},
|
|
11344
|
+
TableStyleLight18: {
|
|
11345
|
+
wholeTable: { "font": { "color": { "theme": 1 } }, "border": { "top": { "color": { "theme": 6 }, "style": "thin" }, "right": { "color": { "theme": 6 }, "style": "thin" }, "bottom": { "color": { "theme": 6 }, "style": "thin" }, "left": { "color": { "theme": 6 }, "style": "thin" }, "horizontal": { "color": { "theme": 6 }, "style": "thin" }, "vertical": { "color": { "theme": 6 }, "style": "thin" } } },
|
|
11346
|
+
headerRow: { "font": { "bold": true, "color": { "theme": 1 } }, "border": { "bottom": { "color": { "theme": 6 }, "style": "medium" } } },
|
|
11347
|
+
totalRow: { "font": { "bold": true, "color": { "theme": 1 } }, "border": { "top": { "color": { "theme": 6 }, "style": "double" } } },
|
|
11348
|
+
firstColumn: { "font": { "bold": true, "color": { "theme": 1 } } },
|
|
11349
|
+
lastColumn: { "font": { "bold": true, "color": { "theme": 1 } } },
|
|
11350
|
+
firstRowStripe: { "fill": { "color": { "theme": 6, "tint": 0.8 }, "fillType": "solid" } },
|
|
11351
|
+
firstColumnStripe: { "fill": { "color": { "theme": 6, "tint": 0.8 }, "fillType": "solid" } }
|
|
11352
|
+
},
|
|
11353
|
+
TableStyleLight19: {
|
|
11354
|
+
wholeTable: { "font": { "color": { "theme": 1 } }, "border": { "top": { "color": { "theme": 7 }, "style": "thin" }, "right": { "color": { "theme": 7 }, "style": "thin" }, "bottom": { "color": { "theme": 7 }, "style": "thin" }, "left": { "color": { "theme": 7 }, "style": "thin" }, "horizontal": { "color": { "theme": 7 }, "style": "thin" }, "vertical": { "color": { "theme": 7 }, "style": "thin" } } },
|
|
11355
|
+
headerRow: { "font": { "bold": true, "color": { "theme": 1 } }, "border": { "bottom": { "color": { "theme": 7 }, "style": "medium" } } },
|
|
11356
|
+
totalRow: { "font": { "bold": true, "color": { "theme": 1 } }, "border": { "top": { "color": { "theme": 7 }, "style": "double" } } },
|
|
11357
|
+
firstColumn: { "font": { "bold": true, "color": { "theme": 1 } } },
|
|
11358
|
+
lastColumn: { "font": { "bold": true, "color": { "theme": 1 } } },
|
|
11359
|
+
firstRowStripe: { "fill": { "color": { "theme": 7, "tint": 0.8 }, "fillType": "solid" } },
|
|
11360
|
+
firstColumnStripe: { "fill": { "color": { "theme": 7, "tint": 0.8 }, "fillType": "solid" } }
|
|
11361
|
+
},
|
|
11362
|
+
TableStyleLight20: {
|
|
11363
|
+
wholeTable: { "font": { "color": { "theme": 1 } }, "border": { "top": { "color": { "theme": 8 }, "style": "thin" }, "right": { "color": { "theme": 8 }, "style": "thin" }, "bottom": { "color": { "theme": 8 }, "style": "thin" }, "left": { "color": { "theme": 8 }, "style": "thin" }, "horizontal": { "color": { "theme": 8 }, "style": "thin" }, "vertical": { "color": { "theme": 8 }, "style": "thin" } } },
|
|
11364
|
+
headerRow: { "font": { "bold": true, "color": { "theme": 1 } }, "border": { "bottom": { "color": { "theme": 8 }, "style": "medium" } } },
|
|
11365
|
+
totalRow: { "font": { "bold": true, "color": { "theme": 1 } }, "border": { "top": { "color": { "theme": 8 }, "style": "double" } } },
|
|
11366
|
+
firstColumn: { "font": { "bold": true, "color": { "theme": 1 } } },
|
|
11367
|
+
lastColumn: { "font": { "bold": true, "color": { "theme": 1 } } },
|
|
11368
|
+
firstRowStripe: { "fill": { "color": { "theme": 8, "tint": 0.8 }, "fillType": "solid" } },
|
|
11369
|
+
firstColumnStripe: { "fill": { "color": { "theme": 8, "tint": 0.8 }, "fillType": "solid" } }
|
|
11370
|
+
},
|
|
11371
|
+
TableStyleLight21: {
|
|
11372
|
+
wholeTable: { "font": { "color": { "theme": 1 } }, "border": { "top": { "color": { "theme": 9 }, "style": "thin" }, "right": { "color": { "theme": 9 }, "style": "thin" }, "bottom": { "color": { "theme": 9 }, "style": "thin" }, "left": { "color": { "theme": 9 }, "style": "thin" }, "horizontal": { "color": { "theme": 9 }, "style": "thin" }, "vertical": { "color": { "theme": 9 }, "style": "thin" } } },
|
|
11373
|
+
headerRow: { "font": { "bold": true, "color": { "theme": 1 } }, "border": { "bottom": { "color": { "theme": 9 }, "style": "medium" } } },
|
|
11374
|
+
totalRow: { "font": { "bold": true, "color": { "theme": 1 } }, "border": { "top": { "color": { "theme": 9 }, "style": "double" } } },
|
|
11375
|
+
firstColumn: { "font": { "bold": true, "color": { "theme": 1 } } },
|
|
11376
|
+
lastColumn: { "font": { "bold": true, "color": { "theme": 1 } } },
|
|
11377
|
+
firstRowStripe: { "fill": { "color": { "theme": 9, "tint": 0.8 }, "fillType": "solid" } },
|
|
11378
|
+
firstColumnStripe: { "fill": { "color": { "theme": 9, "tint": 0.8 }, "fillType": "solid" } }
|
|
11379
|
+
},
|
|
11380
|
+
TableStyleMedium1: {
|
|
11381
|
+
wholeTable: { "font": { "color": { "theme": 1 } }, "border": { "top": { "color": { "theme": 1 }, "style": "thin" }, "right": { "color": { "theme": 1 }, "style": "thin" }, "bottom": { "color": { "theme": 1 }, "style": "thin" }, "left": { "color": { "theme": 1 }, "style": "thin" }, "horizontal": { "color": { "theme": 1 }, "style": "thin" } } },
|
|
11382
|
+
headerRow: { "font": { "bold": true, "color": { "theme": 0 } }, "fill": { "color": { "theme": 1 }, "fillType": "solid" } },
|
|
11383
|
+
totalRow: { "font": { "bold": true, "color": { "theme": 1 } }, "border": { "top": { "color": { "theme": 1 }, "style": "double" } } },
|
|
11384
|
+
firstColumn: { "font": { "bold": true, "color": { "theme": 1 } } },
|
|
11385
|
+
lastColumn: { "font": { "bold": true, "color": { "theme": 1 } } },
|
|
11386
|
+
firstRowStripe: { "fill": { "color": { "theme": 0, "tint": -0.15 }, "fillType": "solid" } },
|
|
11387
|
+
firstColumnStripe: { "fill": { "color": { "theme": 0, "tint": -0.15 }, "fillType": "solid" } }
|
|
11388
|
+
},
|
|
11389
|
+
TableStyleMedium2: {
|
|
11390
|
+
wholeTable: { "font": { "color": { "theme": 1 } }, "border": { "top": { "color": { "theme": 4, "tint": 0.4 }, "style": "thin" }, "right": { "color": { "theme": 4, "tint": 0.4 }, "style": "thin" }, "bottom": { "color": { "theme": 4, "tint": 0.4 }, "style": "thin" }, "left": { "color": { "theme": 4, "tint": 0.4 }, "style": "thin" }, "horizontal": { "color": { "theme": 4, "tint": 0.4 }, "style": "thin" } } },
|
|
11391
|
+
headerRow: { "font": { "bold": true, "color": { "theme": 0 } }, "fill": { "color": { "theme": 4 }, "fillType": "solid" } },
|
|
11392
|
+
totalRow: { "font": { "bold": true, "color": { "theme": 1 } }, "border": { "top": { "color": { "theme": 4 }, "style": "double" } } },
|
|
11393
|
+
firstColumn: { "font": { "bold": true, "color": { "theme": 1 } } },
|
|
11394
|
+
lastColumn: { "font": { "bold": true, "color": { "theme": 1 } } },
|
|
11395
|
+
firstRowStripe: { "fill": { "color": { "theme": 4, "tint": 0.8 }, "fillType": "solid" } },
|
|
11396
|
+
firstColumnStripe: { "fill": { "color": { "theme": 4, "tint": 0.8 }, "fillType": "solid" } }
|
|
11397
|
+
},
|
|
11398
|
+
TableStyleMedium3: {
|
|
11399
|
+
wholeTable: { "font": { "color": { "theme": 1 } }, "border": { "top": { "color": { "theme": 5, "tint": 0.4 }, "style": "thin" }, "right": { "color": { "theme": 5, "tint": 0.4 }, "style": "thin" }, "bottom": { "color": { "theme": 5, "tint": 0.4 }, "style": "thin" }, "left": { "color": { "theme": 5, "tint": 0.4 }, "style": "thin" }, "horizontal": { "color": { "theme": 5, "tint": 0.4 }, "style": "thin" } } },
|
|
11400
|
+
headerRow: { "font": { "bold": true, "color": { "theme": 0 } }, "fill": { "color": { "theme": 5 }, "fillType": "solid" } },
|
|
11401
|
+
totalRow: { "font": { "bold": true, "color": { "theme": 1 } }, "border": { "top": { "color": { "theme": 5 }, "style": "double" } } },
|
|
11402
|
+
firstColumn: { "font": { "bold": true, "color": { "theme": 1 } } },
|
|
11403
|
+
lastColumn: { "font": { "bold": true, "color": { "theme": 1 } } },
|
|
11404
|
+
firstRowStripe: { "fill": { "color": { "theme": 5, "tint": 0.8 }, "fillType": "solid" } },
|
|
11405
|
+
firstColumnStripe: { "fill": { "color": { "theme": 5, "tint": 0.8 }, "fillType": "solid" } }
|
|
11406
|
+
},
|
|
11407
|
+
TableStyleMedium4: {
|
|
11408
|
+
wholeTable: { "font": { "color": { "theme": 1 } }, "border": { "top": { "color": { "theme": 6, "tint": 0.4 }, "style": "thin" }, "right": { "color": { "theme": 6, "tint": 0.4 }, "style": "thin" }, "bottom": { "color": { "theme": 6, "tint": 0.4 }, "style": "thin" }, "left": { "color": { "theme": 6, "tint": 0.4 }, "style": "thin" }, "horizontal": { "color": { "theme": 6, "tint": 0.4 }, "style": "thin" } } },
|
|
11409
|
+
headerRow: { "font": { "bold": true, "color": { "theme": 0 } }, "fill": { "color": { "theme": 6 }, "fillType": "solid" } },
|
|
11410
|
+
totalRow: { "font": { "bold": true, "color": { "theme": 1 } }, "border": { "top": { "color": { "theme": 6 }, "style": "double" } } },
|
|
11411
|
+
firstColumn: { "font": { "bold": true, "color": { "theme": 1 } } },
|
|
11412
|
+
lastColumn: { "font": { "bold": true, "color": { "theme": 1 } } },
|
|
11413
|
+
firstRowStripe: { "fill": { "color": { "theme": 6, "tint": 0.8 }, "fillType": "solid" } },
|
|
11414
|
+
firstColumnStripe: { "fill": { "color": { "theme": 6, "tint": 0.8 }, "fillType": "solid" } }
|
|
11415
|
+
},
|
|
11416
|
+
TableStyleMedium5: {
|
|
11417
|
+
wholeTable: { "font": { "color": { "theme": 1 } }, "border": { "top": { "color": { "theme": 7, "tint": 0.4 }, "style": "thin" }, "right": { "color": { "theme": 7, "tint": 0.4 }, "style": "thin" }, "bottom": { "color": { "theme": 7, "tint": 0.4 }, "style": "thin" }, "left": { "color": { "theme": 7, "tint": 0.4 }, "style": "thin" }, "horizontal": { "color": { "theme": 7, "tint": 0.4 }, "style": "thin" } } },
|
|
11418
|
+
headerRow: { "font": { "bold": true, "color": { "theme": 0 } }, "fill": { "color": { "theme": 7 }, "fillType": "solid" } },
|
|
11419
|
+
totalRow: { "font": { "bold": true, "color": { "theme": 1 } }, "border": { "top": { "color": { "theme": 7 }, "style": "double" } } },
|
|
11420
|
+
firstColumn: { "font": { "bold": true, "color": { "theme": 1 } } },
|
|
11421
|
+
lastColumn: { "font": { "bold": true, "color": { "theme": 1 } } },
|
|
11422
|
+
firstRowStripe: { "fill": { "color": { "theme": 7, "tint": 0.8 }, "fillType": "solid" } },
|
|
11423
|
+
firstColumnStripe: { "fill": { "color": { "theme": 7, "tint": 0.8 }, "fillType": "solid" } }
|
|
11424
|
+
},
|
|
11425
|
+
TableStyleMedium6: {
|
|
11426
|
+
wholeTable: { "font": { "color": { "theme": 1 } }, "border": { "top": { "color": { "theme": 8, "tint": 0.4 }, "style": "thin" }, "right": { "color": { "theme": 8, "tint": 0.4 }, "style": "thin" }, "bottom": { "color": { "theme": 8, "tint": 0.4 }, "style": "thin" }, "left": { "color": { "theme": 8, "tint": 0.4 }, "style": "thin" }, "horizontal": { "color": { "theme": 8, "tint": 0.4 }, "style": "thin" } } },
|
|
11427
|
+
headerRow: { "font": { "bold": true, "color": { "theme": 0 } }, "fill": { "color": { "theme": 8 }, "fillType": "solid" } },
|
|
11428
|
+
totalRow: { "font": { "bold": true, "color": { "theme": 1 } }, "border": { "top": { "color": { "theme": 8 }, "style": "double" } } },
|
|
11429
|
+
firstColumn: { "font": { "bold": true, "color": { "theme": 1 } } },
|
|
11430
|
+
lastColumn: { "font": { "bold": true, "color": { "theme": 1 } } },
|
|
11431
|
+
firstRowStripe: { "fill": { "color": { "theme": 8, "tint": 0.8 }, "fillType": "solid" } },
|
|
11432
|
+
firstColumnStripe: { "fill": { "color": { "theme": 8, "tint": 0.8 }, "fillType": "solid" } }
|
|
11433
|
+
},
|
|
11434
|
+
TableStyleMedium7: {
|
|
11435
|
+
wholeTable: { "font": { "color": { "theme": 1 } }, "border": { "top": { "color": { "theme": 9, "tint": 0.4 }, "style": "thin" }, "right": { "color": { "theme": 9, "tint": 0.4 }, "style": "thin" }, "bottom": { "color": { "theme": 9, "tint": 0.4 }, "style": "thin" }, "left": { "color": { "theme": 9, "tint": 0.4 }, "style": "thin" }, "horizontal": { "color": { "theme": 9, "tint": 0.4 }, "style": "thin" } } },
|
|
11436
|
+
headerRow: { "font": { "bold": true, "color": { "theme": 0 } }, "fill": { "color": { "theme": 9 }, "fillType": "solid" } },
|
|
11437
|
+
totalRow: { "font": { "bold": true, "color": { "theme": 1 } }, "border": { "top": { "color": { "theme": 9 }, "style": "double" } } },
|
|
11438
|
+
firstColumn: { "font": { "bold": true, "color": { "theme": 1 } } },
|
|
11439
|
+
lastColumn: { "font": { "bold": true, "color": { "theme": 1 } } },
|
|
11440
|
+
firstRowStripe: { "fill": { "color": { "theme": 9, "tint": 0.8 }, "fillType": "solid" } },
|
|
11441
|
+
firstColumnStripe: { "fill": { "color": { "theme": 9, "tint": 0.8 }, "fillType": "solid" } }
|
|
11442
|
+
},
|
|
11443
|
+
TableStyleMedium8: {
|
|
11444
|
+
wholeTable: { "font": { "color": { "theme": 1 } }, "fill": { "color": { "theme": 0, "tint": -0.15 }, "fillType": "solid" }, "border": { "horizontal": { "color": { "theme": 0 }, "style": "thin" }, "vertical": { "color": { "theme": 0 }, "style": "thin" } } },
|
|
11445
|
+
headerRow: { "font": { "bold": true, "color": { "theme": 0 } }, "fill": { "color": { "theme": 1 }, "fillType": "solid" }, "border": { "bottom": { "color": { "theme": 0 }, "style": "thick" } } },
|
|
11446
|
+
totalRow: { "font": { "bold": true, "color": { "theme": 0 } }, "fill": { "color": { "theme": 1 }, "fillType": "solid" }, "border": { "top": { "color": { "theme": 0 }, "style": "thick" } } },
|
|
11447
|
+
firstColumn: { "font": { "bold": true, "color": { "theme": 0 } }, "fill": { "color": { "theme": 1 }, "fillType": "solid" } },
|
|
11448
|
+
lastColumn: { "font": { "bold": true, "color": { "theme": 0 } }, "fill": { "color": { "theme": 1 }, "fillType": "solid" } },
|
|
11449
|
+
firstRowStripe: { "fill": { "color": { "theme": 0, "tint": -0.35 }, "fillType": "solid" } },
|
|
11450
|
+
firstColumnStripe: { "fill": { "color": { "theme": 0, "tint": -0.35 }, "fillType": "solid" } }
|
|
11451
|
+
},
|
|
11452
|
+
TableStyleMedium9: {
|
|
11453
|
+
wholeTable: { "font": { "color": { "theme": 1 } }, "fill": { "color": { "theme": 4, "tint": 0.8 }, "fillType": "solid" }, "border": { "horizontal": { "color": { "theme": 0 }, "style": "thin" }, "vertical": { "color": { "theme": 0 }, "style": "thin" } } },
|
|
11454
|
+
headerRow: { "font": { "bold": true, "color": { "theme": 0 } }, "fill": { "color": { "theme": 4 }, "fillType": "solid" }, "border": { "bottom": { "color": { "theme": 0 }, "style": "thick" } } },
|
|
11455
|
+
totalRow: { "font": { "bold": true, "color": { "theme": 0 } }, "fill": { "color": { "theme": 4 }, "fillType": "solid" }, "border": { "top": { "color": { "theme": 0 }, "style": "thick" } } },
|
|
11456
|
+
firstColumn: { "font": { "bold": true, "color": { "theme": 0 } }, "fill": { "color": { "theme": 4 }, "fillType": "solid" } },
|
|
11457
|
+
lastColumn: { "font": { "bold": true, "color": { "theme": 0 } }, "fill": { "color": { "theme": 4 }, "fillType": "solid" } },
|
|
11458
|
+
firstRowStripe: { "fill": { "color": { "theme": 4, "tint": 0.6 }, "fillType": "solid" } },
|
|
11459
|
+
firstColumnStripe: { "fill": { "color": { "theme": 4, "tint": 0.6 }, "fillType": "solid" } }
|
|
11460
|
+
},
|
|
11461
|
+
TableStyleMedium10: {
|
|
11462
|
+
wholeTable: { "font": { "color": { "theme": 1 } }, "fill": { "color": { "theme": 5, "tint": 0.8 }, "fillType": "solid" }, "border": { "horizontal": { "color": { "theme": 0 }, "style": "thin" }, "vertical": { "color": { "theme": 0 }, "style": "thin" } } },
|
|
11463
|
+
headerRow: { "font": { "bold": true, "color": { "theme": 0 } }, "fill": { "color": { "theme": 5 }, "fillType": "solid" }, "border": { "bottom": { "color": { "theme": 0 }, "style": "thick" } } },
|
|
11464
|
+
totalRow: { "font": { "bold": true, "color": { "theme": 0 } }, "fill": { "color": { "theme": 5 }, "fillType": "solid" }, "border": { "top": { "color": { "theme": 0 }, "style": "thick" } } },
|
|
11465
|
+
firstColumn: { "font": { "bold": true, "color": { "theme": 0 } }, "fill": { "color": { "theme": 5 }, "fillType": "solid" } },
|
|
11466
|
+
lastColumn: { "font": { "bold": true, "color": { "theme": 0 } }, "fill": { "color": { "theme": 5 }, "fillType": "solid" } },
|
|
11467
|
+
firstRowStripe: { "fill": { "color": { "theme": 5, "tint": 0.6 }, "fillType": "solid" } },
|
|
11468
|
+
firstColumnStripe: { "fill": { "color": { "theme": 5, "tint": 0.6 }, "fillType": "solid" } }
|
|
11469
|
+
},
|
|
11470
|
+
TableStyleMedium11: {
|
|
11471
|
+
wholeTable: { "font": { "color": { "theme": 1 } }, "fill": { "color": { "theme": 6, "tint": 0.8 }, "fillType": "solid" }, "border": { "horizontal": { "color": { "theme": 0 }, "style": "thin" }, "vertical": { "color": { "theme": 0 }, "style": "thin" } } },
|
|
11472
|
+
headerRow: { "font": { "bold": true, "color": { "theme": 0 } }, "fill": { "color": { "theme": 6 }, "fillType": "solid" }, "border": { "bottom": { "color": { "theme": 0 }, "style": "thick" } } },
|
|
11473
|
+
totalRow: { "font": { "bold": true, "color": { "theme": 0 } }, "fill": { "color": { "theme": 6 }, "fillType": "solid" }, "border": { "top": { "color": { "theme": 0 }, "style": "thick" } } },
|
|
11474
|
+
firstColumn: { "font": { "bold": true, "color": { "theme": 0 } }, "fill": { "color": { "theme": 6 }, "fillType": "solid" } },
|
|
11475
|
+
lastColumn: { "font": { "bold": true, "color": { "theme": 0 } }, "fill": { "color": { "theme": 6 }, "fillType": "solid" } },
|
|
11476
|
+
firstRowStripe: { "fill": { "color": { "theme": 6, "tint": 0.6 }, "fillType": "solid" } },
|
|
11477
|
+
firstColumnStripe: { "fill": { "color": { "theme": 6, "tint": 0.6 }, "fillType": "solid" } }
|
|
11478
|
+
},
|
|
11479
|
+
TableStyleMedium12: {
|
|
11480
|
+
wholeTable: { "font": { "color": { "theme": 1 } }, "fill": { "color": { "theme": 7, "tint": 0.8 }, "fillType": "solid" }, "border": { "horizontal": { "color": { "theme": 0 }, "style": "thin" }, "vertical": { "color": { "theme": 0 }, "style": "thin" } } },
|
|
11481
|
+
headerRow: { "font": { "bold": true, "color": { "theme": 0 } }, "fill": { "color": { "theme": 7 }, "fillType": "solid" }, "border": { "bottom": { "color": { "theme": 0 }, "style": "thick" } } },
|
|
11482
|
+
totalRow: { "font": { "bold": true, "color": { "theme": 0 } }, "fill": { "color": { "theme": 7 }, "fillType": "solid" }, "border": { "top": { "color": { "theme": 0 }, "style": "thick" } } },
|
|
11483
|
+
firstColumn: { "font": { "bold": true, "color": { "theme": 0 } }, "fill": { "color": { "theme": 7 }, "fillType": "solid" } },
|
|
11484
|
+
lastColumn: { "font": { "bold": true, "color": { "theme": 0 } }, "fill": { "color": { "theme": 7 }, "fillType": "solid" } },
|
|
11485
|
+
firstRowStripe: { "fill": { "color": { "theme": 7, "tint": 0.6 }, "fillType": "solid" } },
|
|
11486
|
+
firstColumnStripe: { "fill": { "color": { "theme": 7, "tint": 0.6 }, "fillType": "solid" } }
|
|
11487
|
+
},
|
|
11488
|
+
TableStyleMedium13: {
|
|
11489
|
+
wholeTable: { "font": { "color": { "theme": 1 } }, "fill": { "color": { "theme": 8, "tint": 0.8 }, "fillType": "solid" }, "border": { "horizontal": { "color": { "theme": 0 }, "style": "thin" }, "vertical": { "color": { "theme": 0 }, "style": "thin" } } },
|
|
11490
|
+
headerRow: { "font": { "bold": true, "color": { "theme": 0 } }, "fill": { "color": { "theme": 8 }, "fillType": "solid" }, "border": { "bottom": { "color": { "theme": 0 }, "style": "thick" } } },
|
|
11491
|
+
totalRow: { "font": { "bold": true, "color": { "theme": 0 } }, "fill": { "color": { "theme": 8 }, "fillType": "solid" }, "border": { "top": { "color": { "theme": 0 }, "style": "thick" } } },
|
|
11492
|
+
firstColumn: { "font": { "bold": true, "color": { "theme": 0 } }, "fill": { "color": { "theme": 8 }, "fillType": "solid" } },
|
|
11493
|
+
lastColumn: { "font": { "bold": true, "color": { "theme": 0 } }, "fill": { "color": { "theme": 8 }, "fillType": "solid" } },
|
|
11494
|
+
firstRowStripe: { "fill": { "color": { "theme": 8, "tint": 0.6 }, "fillType": "solid" } },
|
|
11495
|
+
firstColumnStripe: { "fill": { "color": { "theme": 8, "tint": 0.6 }, "fillType": "solid" } }
|
|
11496
|
+
},
|
|
11497
|
+
TableStyleMedium14: {
|
|
11498
|
+
wholeTable: { "font": { "color": { "theme": 1 } }, "fill": { "color": { "theme": 9, "tint": 0.8 }, "fillType": "solid" }, "border": { "horizontal": { "color": { "theme": 0 }, "style": "thin" }, "vertical": { "color": { "theme": 0 }, "style": "thin" } } },
|
|
11499
|
+
headerRow: { "font": { "bold": true, "color": { "theme": 0 } }, "fill": { "color": { "theme": 9 }, "fillType": "solid" }, "border": { "bottom": { "color": { "theme": 0 }, "style": "thick" } } },
|
|
11500
|
+
totalRow: { "font": { "bold": true, "color": { "theme": 0 } }, "fill": { "color": { "theme": 9 }, "fillType": "solid" }, "border": { "top": { "color": { "theme": 0 }, "style": "thick" } } },
|
|
11501
|
+
firstColumn: { "font": { "bold": true, "color": { "theme": 0 } }, "fill": { "color": { "theme": 9 }, "fillType": "solid" } },
|
|
11502
|
+
lastColumn: { "font": { "bold": true, "color": { "theme": 0 } }, "fill": { "color": { "theme": 9 }, "fillType": "solid" } },
|
|
11503
|
+
firstRowStripe: { "fill": { "color": { "theme": 9, "tint": 0.6 }, "fillType": "solid" } },
|
|
11504
|
+
firstColumnStripe: { "fill": { "color": { "theme": 9, "tint": 0.6 }, "fillType": "solid" } }
|
|
11505
|
+
},
|
|
11506
|
+
TableStyleMedium15: {
|
|
11507
|
+
wholeTable: { "font": { "color": { "theme": 1 } }, "border": { "top": { "color": { "theme": 1 }, "style": "medium" }, "right": { "color": { "theme": 1 }, "style": "thin" }, "bottom": { "color": { "theme": 1 }, "style": "medium" }, "left": { "color": { "theme": 1 }, "style": "thin" }, "horizontal": { "color": { "theme": 1 }, "style": "thin" }, "vertical": { "color": { "theme": 1 }, "style": "thin" } } },
|
|
11508
|
+
headerRow: { "font": { "bold": true, "color": { "theme": 0 } }, "fill": { "color": { "theme": 1 }, "fillType": "solid" }, "border": { "bottom": { "color": { "theme": 1 }, "style": "medium" } } },
|
|
11509
|
+
totalRow: { "border": { "top": { "color": { "theme": 1 }, "style": "double" } } },
|
|
11510
|
+
firstColumn: { "font": { "bold": true, "color": { "theme": 0 } }, "fill": { "color": { "theme": 1 }, "fillType": "solid" } },
|
|
11511
|
+
lastColumn: { "font": { "bold": true, "color": { "theme": 0 } }, "fill": { "color": { "theme": 1 }, "fillType": "solid" } },
|
|
11512
|
+
firstRowStripe: { "fill": { "color": { "theme": 0, "tint": -0.15 }, "fillType": "solid" } },
|
|
11513
|
+
firstColumnStripe: { "fill": { "color": { "theme": 0, "tint": -0.15 }, "fillType": "solid" } }
|
|
11514
|
+
},
|
|
11515
|
+
TableStyleMedium16: {
|
|
11516
|
+
wholeTable: { "font": { "color": { "theme": 1 } }, "border": { "top": { "color": { "theme": 1 }, "style": "medium" }, "bottom": { "color": { "theme": 1 }, "style": "medium" } } },
|
|
11517
|
+
headerRow: { "font": { "bold": true, "color": { "theme": 0 } }, "fill": { "color": { "theme": 4 }, "fillType": "solid" }, "border": { "bottom": { "color": { "theme": 1 }, "style": "medium" } } },
|
|
11518
|
+
totalRow: { "border": { "top": { "color": { "theme": 1 }, "style": "double" } } },
|
|
11519
|
+
firstColumn: { "font": { "bold": true, "color": { "theme": 0 } }, "fill": { "color": { "theme": 4 }, "fillType": "solid" } },
|
|
11520
|
+
lastColumn: { "font": { "bold": true, "color": { "theme": 0 } }, "fill": { "color": { "theme": 4 }, "fillType": "solid" } },
|
|
11521
|
+
firstRowStripe: { "fill": { "color": { "theme": 0, "tint": -0.15 }, "fillType": "solid" } },
|
|
11522
|
+
firstColumnStripe: { "fill": { "color": { "theme": 0, "tint": -0.15 }, "fillType": "solid" } }
|
|
11523
|
+
},
|
|
11524
|
+
TableStyleMedium17: {
|
|
11525
|
+
wholeTable: { "font": { "color": { "theme": 1 } }, "border": { "top": { "color": { "theme": 1 }, "style": "medium" }, "bottom": { "color": { "theme": 1 }, "style": "medium" } } },
|
|
11526
|
+
headerRow: { "font": { "bold": true, "color": { "theme": 0 } }, "fill": { "color": { "theme": 5 }, "fillType": "solid" }, "border": { "bottom": { "color": { "theme": 1 }, "style": "medium" } } },
|
|
11527
|
+
totalRow: { "border": { "top": { "color": { "theme": 1 }, "style": "double" } } },
|
|
11528
|
+
firstColumn: { "font": { "bold": true, "color": { "theme": 0 } }, "fill": { "color": { "theme": 5 }, "fillType": "solid" } },
|
|
11529
|
+
lastColumn: { "font": { "bold": true, "color": { "theme": 0 } }, "fill": { "color": { "theme": 5 }, "fillType": "solid" } },
|
|
11530
|
+
firstRowStripe: { "fill": { "color": { "theme": 0, "tint": -0.15 }, "fillType": "solid" } },
|
|
11531
|
+
firstColumnStripe: { "fill": { "color": { "theme": 0, "tint": -0.15 }, "fillType": "solid" } }
|
|
11532
|
+
},
|
|
11533
|
+
TableStyleMedium18: {
|
|
11534
|
+
wholeTable: { "font": { "color": { "theme": 1 } }, "border": { "top": { "color": { "theme": 1 }, "style": "medium" }, "bottom": { "color": { "theme": 1 }, "style": "medium" } } },
|
|
11535
|
+
headerRow: { "font": { "bold": true, "color": { "theme": 0 } }, "fill": { "color": { "theme": 6 }, "fillType": "solid" }, "border": { "bottom": { "color": { "theme": 1 }, "style": "medium" } } },
|
|
11536
|
+
totalRow: { "border": { "top": { "color": { "theme": 1 }, "style": "double" } } },
|
|
11537
|
+
firstColumn: { "font": { "bold": true, "color": { "theme": 0 } }, "fill": { "color": { "theme": 6 }, "fillType": "solid" } },
|
|
11538
|
+
lastColumn: { "font": { "bold": true, "color": { "theme": 0 } }, "fill": { "color": { "theme": 6 }, "fillType": "solid" } },
|
|
11539
|
+
firstRowStripe: { "fill": { "color": { "theme": 0, "tint": -0.15 }, "fillType": "solid" } },
|
|
11540
|
+
firstColumnStripe: { "fill": { "color": { "theme": 0, "tint": -0.15 }, "fillType": "solid" } }
|
|
11541
|
+
},
|
|
11542
|
+
TableStyleMedium19: {
|
|
11543
|
+
wholeTable: { "font": { "color": { "theme": 1 } }, "border": { "top": { "color": { "theme": 1 }, "style": "medium" }, "bottom": { "color": { "theme": 1 }, "style": "medium" } } },
|
|
11544
|
+
headerRow: { "font": { "bold": true, "color": { "theme": 0 } }, "fill": { "color": { "theme": 7 }, "fillType": "solid" }, "border": { "bottom": { "color": { "theme": 1 }, "style": "medium" } } },
|
|
11545
|
+
totalRow: { "border": { "top": { "color": { "theme": 1 }, "style": "double" } } },
|
|
11546
|
+
firstColumn: { "font": { "bold": true, "color": { "theme": 0 } }, "fill": { "color": { "theme": 7 }, "fillType": "solid" } },
|
|
11547
|
+
lastColumn: { "font": { "bold": true, "color": { "theme": 0 } }, "fill": { "color": { "theme": 7 }, "fillType": "solid" } },
|
|
11548
|
+
firstRowStripe: { "fill": { "color": { "theme": 0, "tint": -0.15 }, "fillType": "solid" } },
|
|
11549
|
+
firstColumnStripe: { "fill": { "color": { "theme": 0, "tint": -0.15 }, "fillType": "solid" } }
|
|
11550
|
+
},
|
|
11551
|
+
TableStyleMedium20: {
|
|
11552
|
+
wholeTable: { "font": { "color": { "theme": 1 } }, "border": { "top": { "color": { "theme": 1 }, "style": "medium" }, "bottom": { "color": { "theme": 1 }, "style": "medium" } } },
|
|
11553
|
+
headerRow: { "font": { "bold": true, "color": { "theme": 0 } }, "fill": { "color": { "theme": 8 }, "fillType": "solid" }, "border": { "bottom": { "color": { "theme": 1 }, "style": "medium" } } },
|
|
11554
|
+
totalRow: { "border": { "top": { "color": { "theme": 1 }, "style": "double" } } },
|
|
11555
|
+
firstColumn: { "font": { "bold": true, "color": { "theme": 0 } }, "fill": { "color": { "theme": 8 }, "fillType": "solid" } },
|
|
11556
|
+
lastColumn: { "font": { "bold": true, "color": { "theme": 0 } }, "fill": { "color": { "theme": 8 }, "fillType": "solid" } },
|
|
11557
|
+
firstRowStripe: { "fill": { "color": { "theme": 0, "tint": -0.15 }, "fillType": "solid" } },
|
|
11558
|
+
firstColumnStripe: { "fill": { "color": { "theme": 0, "tint": -0.15 }, "fillType": "solid" } }
|
|
11559
|
+
},
|
|
11560
|
+
TableStyleMedium21: {
|
|
11561
|
+
wholeTable: { "font": { "color": { "theme": 1 } }, "border": { "top": { "color": { "theme": 1 }, "style": "medium" }, "bottom": { "color": { "theme": 1 }, "style": "medium" } } },
|
|
11562
|
+
headerRow: { "font": { "bold": true, "color": { "theme": 0 } }, "fill": { "color": { "theme": 9 }, "fillType": "solid" }, "border": { "bottom": { "color": { "theme": 1 }, "style": "medium" } } },
|
|
11563
|
+
totalRow: { "border": { "top": { "color": { "theme": 1 }, "style": "double" } } },
|
|
11564
|
+
firstColumn: { "font": { "bold": true, "color": { "theme": 0 } }, "fill": { "color": { "theme": 9 }, "fillType": "solid" } },
|
|
11565
|
+
lastColumn: { "font": { "bold": true, "color": { "theme": 0 } }, "fill": { "color": { "theme": 9 }, "fillType": "solid" } },
|
|
11566
|
+
firstRowStripe: { "fill": { "color": { "theme": 0, "tint": -0.15 }, "fillType": "solid" } },
|
|
11567
|
+
firstColumnStripe: { "fill": { "color": { "theme": 0, "tint": -0.15 }, "fillType": "solid" } }
|
|
11568
|
+
},
|
|
11569
|
+
TableStyleMedium22: {
|
|
11570
|
+
wholeTable: { "font": { "color": { "theme": 1 } }, "fill": { "color": { "theme": 0, "tint": -0.15 }, "fillType": "solid" }, "border": { "top": { "color": { "theme": 1 }, "style": "thin" }, "right": { "color": { "theme": 1 }, "style": "thin" }, "bottom": { "color": { "theme": 1 }, "style": "thin" }, "left": { "color": { "theme": 1 }, "style": "thin" }, "horizontal": { "color": { "theme": 1 }, "style": "thin" }, "vertical": { "color": { "theme": 1 }, "style": "thin" } } },
|
|
11571
|
+
headerRow: { "font": { "bold": true, "color": { "theme": 1 } } },
|
|
11572
|
+
totalRow: { "font": { "bold": true, "color": { "theme": 1 } }, "border": { "top": { "color": { "theme": 1 }, "style": "medium" } } },
|
|
11573
|
+
firstColumn: { "font": { "bold": true, "color": { "theme": 1 } } },
|
|
11574
|
+
lastColumn: { "font": { "bold": true, "color": { "theme": 1 } } },
|
|
11575
|
+
firstRowStripe: { "fill": { "color": { "theme": 0, "tint": -0.35 }, "fillType": "solid" } },
|
|
11576
|
+
firstColumnStripe: { "fill": { "color": { "theme": 0, "tint": -0.35 }, "fillType": "solid" } }
|
|
11577
|
+
},
|
|
11578
|
+
TableStyleMedium23: {
|
|
11579
|
+
wholeTable: { "font": { "color": { "theme": 1 } }, "fill": { "color": { "theme": 4, "tint": 0.8 }, "fillType": "solid" }, "border": { "top": { "color": { "theme": 4, "tint": 0.4 }, "style": "thin" }, "right": { "color": { "theme": 4, "tint": 0.4 }, "style": "thin" }, "bottom": { "color": { "theme": 4, "tint": 0.4 }, "style": "thin" }, "left": { "color": { "theme": 4, "tint": 0.4 }, "style": "thin" }, "horizontal": { "color": { "theme": 4, "tint": 0.4 }, "style": "thin" }, "vertical": { "color": { "theme": 4, "tint": 0.4 }, "style": "thin" } } },
|
|
11580
|
+
headerRow: { "font": { "bold": true, "color": { "theme": 1 } } },
|
|
11581
|
+
totalRow: { "font": { "bold": true, "color": { "theme": 1 } }, "border": { "top": { "color": { "theme": 4 }, "style": "medium" } } },
|
|
11582
|
+
firstColumn: { "font": { "bold": true, "color": { "theme": 1 } } },
|
|
11583
|
+
lastColumn: { "font": { "bold": true, "color": { "theme": 1 } } },
|
|
11584
|
+
firstRowStripe: { "fill": { "color": { "theme": 4, "tint": 0.6 }, "fillType": "solid" } },
|
|
11585
|
+
firstColumnStripe: { "fill": { "color": { "theme": 4, "tint": 0.6 }, "fillType": "solid" } }
|
|
11586
|
+
},
|
|
11587
|
+
TableStyleMedium24: {
|
|
11588
|
+
wholeTable: { "font": { "color": { "theme": 1 } }, "fill": { "color": { "theme": 5, "tint": 0.8 }, "fillType": "solid" }, "border": { "top": { "color": { "theme": 5, "tint": 0.4 }, "style": "thin" }, "right": { "color": { "theme": 5, "tint": 0.4 }, "style": "thin" }, "bottom": { "color": { "theme": 5, "tint": 0.4 }, "style": "thin" }, "left": { "color": { "theme": 5, "tint": 0.4 }, "style": "thin" }, "horizontal": { "color": { "theme": 5, "tint": 0.4 }, "style": "thin" }, "vertical": { "color": { "theme": 5, "tint": 0.4 }, "style": "thin" } } },
|
|
11589
|
+
headerRow: { "font": { "bold": true, "color": { "theme": 1 } } },
|
|
11590
|
+
totalRow: { "font": { "bold": true, "color": { "theme": 1 } }, "border": { "top": { "color": { "theme": 5 }, "style": "medium" } } },
|
|
11591
|
+
firstColumn: { "font": { "bold": true, "color": { "theme": 1 } } },
|
|
11592
|
+
lastColumn: { "font": { "bold": true, "color": { "theme": 1 } } },
|
|
11593
|
+
firstRowStripe: { "fill": { "color": { "theme": 5, "tint": 0.6 }, "fillType": "solid" } },
|
|
11594
|
+
firstColumnStripe: { "fill": { "color": { "theme": 5, "tint": 0.6 }, "fillType": "solid" } }
|
|
11595
|
+
},
|
|
11596
|
+
TableStyleMedium25: {
|
|
11597
|
+
wholeTable: { "font": { "color": { "theme": 1 } }, "fill": { "color": { "theme": 6, "tint": 0.8 }, "fillType": "solid" }, "border": { "top": { "color": { "theme": 6, "tint": 0.4 }, "style": "thin" }, "right": { "color": { "theme": 6, "tint": 0.4 }, "style": "thin" }, "bottom": { "color": { "theme": 6, "tint": 0.4 }, "style": "thin" }, "left": { "color": { "theme": 6, "tint": 0.4 }, "style": "thin" }, "horizontal": { "color": { "theme": 6, "tint": 0.4 }, "style": "thin" }, "vertical": { "color": { "theme": 6, "tint": 0.4 }, "style": "thin" } } },
|
|
11598
|
+
headerRow: { "font": { "bold": true, "color": { "theme": 1 } } },
|
|
11599
|
+
totalRow: { "font": { "bold": true, "color": { "theme": 1 } }, "border": { "top": { "color": { "theme": 6 }, "style": "medium" } } },
|
|
11600
|
+
firstColumn: { "font": { "bold": true, "color": { "theme": 1 } } },
|
|
11601
|
+
lastColumn: { "font": { "bold": true, "color": { "theme": 1 } } },
|
|
11602
|
+
firstRowStripe: { "fill": { "color": { "theme": 6, "tint": 0.6 }, "fillType": "solid" } },
|
|
11603
|
+
firstColumnStripe: { "fill": { "color": { "theme": 6, "tint": 0.6 }, "fillType": "solid" } }
|
|
11604
|
+
},
|
|
11605
|
+
TableStyleMedium26: {
|
|
11606
|
+
wholeTable: { "font": { "color": { "theme": 1 } }, "fill": { "color": { "theme": 7, "tint": 0.8 }, "fillType": "solid" }, "border": { "top": { "color": { "theme": 7, "tint": 0.4 }, "style": "thin" }, "right": { "color": { "theme": 7, "tint": 0.4 }, "style": "thin" }, "bottom": { "color": { "theme": 7, "tint": 0.4 }, "style": "thin" }, "left": { "color": { "theme": 7, "tint": 0.4 }, "style": "thin" }, "horizontal": { "color": { "theme": 7, "tint": 0.4 }, "style": "thin" }, "vertical": { "color": { "theme": 7, "tint": 0.4 }, "style": "thin" } } },
|
|
11607
|
+
headerRow: { "font": { "bold": true, "color": { "theme": 1 } } },
|
|
11608
|
+
totalRow: { "font": { "bold": true, "color": { "theme": 1 } }, "border": { "top": { "color": { "theme": 7 }, "style": "medium" } } },
|
|
11609
|
+
firstColumn: { "font": { "bold": true, "color": { "theme": 1 } } },
|
|
11610
|
+
lastColumn: { "font": { "bold": true, "color": { "theme": 1 } } },
|
|
11611
|
+
firstRowStripe: { "fill": { "color": { "theme": 7, "tint": 0.6 }, "fillType": "solid" } },
|
|
11612
|
+
firstColumnStripe: { "fill": { "color": { "theme": 7, "tint": 0.6 }, "fillType": "solid" } }
|
|
11613
|
+
},
|
|
11614
|
+
TableStyleMedium27: {
|
|
11615
|
+
wholeTable: { "font": { "color": { "theme": 1 } }, "fill": { "color": { "theme": 8, "tint": 0.8 }, "fillType": "solid" }, "border": { "top": { "color": { "theme": 8, "tint": 0.4 }, "style": "thin" }, "right": { "color": { "theme": 8, "tint": 0.4 }, "style": "thin" }, "bottom": { "color": { "theme": 8, "tint": 0.4 }, "style": "thin" }, "left": { "color": { "theme": 8, "tint": 0.4 }, "style": "thin" }, "horizontal": { "color": { "theme": 8, "tint": 0.4 }, "style": "thin" }, "vertical": { "color": { "theme": 8, "tint": 0.4 }, "style": "thin" } } },
|
|
11616
|
+
headerRow: { "font": { "bold": true, "color": { "theme": 1 } } },
|
|
11617
|
+
totalRow: { "font": { "bold": true, "color": { "theme": 1 } }, "border": { "top": { "color": { "theme": 8 }, "style": "medium" } } },
|
|
11618
|
+
firstColumn: { "font": { "bold": true, "color": { "theme": 1 } } },
|
|
11619
|
+
lastColumn: { "font": { "bold": true, "color": { "theme": 1 } } },
|
|
11620
|
+
firstRowStripe: { "fill": { "color": { "theme": 8, "tint": 0.6 }, "fillType": "solid" } },
|
|
11621
|
+
firstColumnStripe: { "fill": { "color": { "theme": 8, "tint": 0.6 }, "fillType": "solid" } }
|
|
11622
|
+
},
|
|
11623
|
+
TableStyleMedium28: {
|
|
11624
|
+
wholeTable: { "font": { "color": { "theme": 1 } }, "fill": { "color": { "theme": 9, "tint": 0.8 }, "fillType": "solid" }, "border": { "top": { "color": { "theme": 9, "tint": 0.4 }, "style": "thin" }, "right": { "color": { "theme": 9, "tint": 0.4 }, "style": "thin" }, "bottom": { "color": { "theme": 9, "tint": 0.4 }, "style": "thin" }, "left": { "color": { "theme": 9, "tint": 0.4 }, "style": "thin" }, "horizontal": { "color": { "theme": 9, "tint": 0.4 }, "style": "thin" }, "vertical": { "color": { "theme": 9, "tint": 0.4 }, "style": "thin" } } },
|
|
11625
|
+
headerRow: { "font": { "bold": true, "color": { "theme": 1 } } },
|
|
11626
|
+
totalRow: { "font": { "bold": true, "color": { "theme": 1 } }, "border": { "top": { "color": { "theme": 9 }, "style": "medium" } } },
|
|
11627
|
+
firstColumn: { "font": { "bold": true, "color": { "theme": 1 } } },
|
|
11628
|
+
lastColumn: { "font": { "bold": true, "color": { "theme": 1 } } },
|
|
11629
|
+
firstRowStripe: { "fill": { "color": { "theme": 9, "tint": 0.6 }, "fillType": "solid" } },
|
|
11630
|
+
firstColumnStripe: { "fill": { "color": { "theme": 9, "tint": 0.6 }, "fillType": "solid" } }
|
|
11631
|
+
},
|
|
11632
|
+
TableStyleDark1: {
|
|
11633
|
+
wholeTable: { "font": { "color": { "theme": 0 } }, "fill": { "color": { "theme": 1, "tint": 0.45 }, "fillType": "solid" } },
|
|
11634
|
+
headerRow: { "font": { "bold": true, "color": { "theme": 0 } }, "fill": { "color": { "theme": 1 }, "fillType": "solid" }, "border": { "bottom": { "color": { "theme": 0 }, "style": "medium" } } },
|
|
11635
|
+
totalRow: { "font": { "bold": true, "color": { "theme": 0 } }, "fill": { "color": { "theme": 1, "tint": 0.15 }, "fillType": "solid" }, "border": { "top": { "color": { "theme": 0 }, "style": "medium" } } },
|
|
11636
|
+
firstColumn: { "font": { "bold": true, "color": { "theme": 0 } }, "fill": { "color": { "theme": 1, "tint": 0.25 }, "fillType": "solid" }, "border": { "right": { "color": { "theme": 0 }, "style": "medium" } } },
|
|
11637
|
+
lastColumn: { "font": { "bold": true, "color": { "theme": 0 } }, "fill": { "color": { "theme": 1, "tint": 0.25 }, "fillType": "solid" }, "border": { "left": { "color": { "theme": 0 }, "style": "medium" } } },
|
|
11638
|
+
firstRowStripe: { "fill": { "color": { "theme": 1, "tint": 0.25 }, "fillType": "solid" } },
|
|
11639
|
+
firstColumnStripe: { "fill": { "color": { "theme": 1, "tint": 0.25 }, "fillType": "solid" } }
|
|
11640
|
+
},
|
|
11641
|
+
TableStyleDark2: {
|
|
11642
|
+
wholeTable: { "font": { "color": { "theme": 0 } }, "fill": { "color": { "theme": 4 }, "fillType": "solid" } },
|
|
11643
|
+
headerRow: { "font": { "bold": true, "color": { "theme": 0 } }, "fill": { "color": { "theme": 1 }, "fillType": "solid" }, "border": { "bottom": { "color": { "theme": 0 }, "style": "medium" } } },
|
|
11644
|
+
totalRow: { "font": { "bold": true, "color": { "theme": 0 } }, "fill": { "color": { "theme": 4, "tint": -0.5 }, "fillType": "solid" }, "border": { "top": { "color": { "theme": 0 }, "style": "medium" } } },
|
|
11645
|
+
firstColumn: { "font": { "bold": true, "color": { "theme": 0 } }, "fill": { "color": { "theme": 4, "tint": -0.25 }, "fillType": "solid" }, "border": { "right": { "color": { "theme": 0 }, "style": "medium" } } },
|
|
11646
|
+
lastColumn: { "font": { "bold": true, "color": { "theme": 0 } }, "fill": { "color": { "theme": 4, "tint": -0.25 }, "fillType": "solid" }, "border": { "left": { "color": { "theme": 0 }, "style": "medium" } } },
|
|
11647
|
+
firstRowStripe: { "fill": { "color": { "theme": 4, "tint": -0.25 }, "fillType": "solid" } },
|
|
11648
|
+
firstColumnStripe: { "fill": { "color": { "theme": 4, "tint": -0.25 }, "fillType": "solid" } }
|
|
11649
|
+
},
|
|
11650
|
+
TableStyleDark3: {
|
|
11651
|
+
wholeTable: { "font": { "color": { "theme": 0 } }, "fill": { "color": { "theme": 5 }, "fillType": "solid" } },
|
|
11652
|
+
headerRow: { "font": { "bold": true, "color": { "theme": 0 } }, "fill": { "color": { "theme": 1 }, "fillType": "solid" }, "border": { "bottom": { "color": { "theme": 0 }, "style": "medium" } } },
|
|
11653
|
+
totalRow: { "font": { "bold": true, "color": { "theme": 0 } }, "fill": { "color": { "theme": 5, "tint": -0.5 }, "fillType": "solid" }, "border": { "top": { "color": { "theme": 0 }, "style": "medium" } } },
|
|
11654
|
+
firstColumn: { "font": { "bold": true, "color": { "theme": 0 } }, "fill": { "color": { "theme": 5, "tint": -0.25 }, "fillType": "solid" }, "border": { "right": { "color": { "theme": 0 }, "style": "medium" } } },
|
|
11655
|
+
lastColumn: { "font": { "bold": true, "color": { "theme": 0 } }, "fill": { "color": { "theme": 5, "tint": -0.25 }, "fillType": "solid" }, "border": { "left": { "color": { "theme": 0 }, "style": "medium" } } },
|
|
11656
|
+
firstRowStripe: { "fill": { "color": { "theme": 5, "tint": -0.25 }, "fillType": "solid" } },
|
|
11657
|
+
firstColumnStripe: { "fill": { "color": { "theme": 5, "tint": -0.25 }, "fillType": "solid" } }
|
|
11658
|
+
},
|
|
11659
|
+
TableStyleDark4: {
|
|
11660
|
+
wholeTable: { "font": { "color": { "theme": 0 } }, "fill": { "color": { "theme": 6 }, "fillType": "solid" } },
|
|
11661
|
+
headerRow: { "font": { "bold": true, "color": { "theme": 0 } }, "fill": { "color": { "theme": 1 }, "fillType": "solid" }, "border": { "bottom": { "color": { "theme": 0 }, "style": "medium" } } },
|
|
11662
|
+
totalRow: { "font": { "bold": true, "color": { "theme": 0 } }, "fill": { "color": { "theme": 6, "tint": -0.5 }, "fillType": "solid" }, "border": { "top": { "color": { "theme": 0 }, "style": "medium" } } },
|
|
11663
|
+
firstColumn: { "font": { "bold": true, "color": { "theme": 0 } }, "fill": { "color": { "theme": 6, "tint": -0.25 }, "fillType": "solid" }, "border": { "right": { "color": { "theme": 0 }, "style": "medium" } } },
|
|
11664
|
+
lastColumn: { "font": { "bold": true, "color": { "theme": 0 } }, "fill": { "color": { "theme": 6, "tint": -0.25 }, "fillType": "solid" }, "border": { "left": { "color": { "theme": 0 }, "style": "medium" } } },
|
|
11665
|
+
firstRowStripe: { "fill": { "color": { "theme": 6, "tint": -0.25 }, "fillType": "solid" } },
|
|
11666
|
+
firstColumnStripe: { "fill": { "color": { "theme": 6, "tint": -0.25 }, "fillType": "solid" } }
|
|
11667
|
+
},
|
|
11668
|
+
TableStyleDark5: {
|
|
11669
|
+
wholeTable: { "font": { "color": { "theme": 0 } }, "fill": { "color": { "theme": 7 }, "fillType": "solid" } },
|
|
11670
|
+
headerRow: { "font": { "bold": true, "color": { "theme": 0 } }, "fill": { "color": { "theme": 1 }, "fillType": "solid" }, "border": { "bottom": { "color": { "theme": 0 }, "style": "medium" } } },
|
|
11671
|
+
totalRow: { "font": { "bold": true, "color": { "theme": 0 } }, "fill": { "color": { "theme": 7, "tint": -0.5 }, "fillType": "solid" }, "border": { "top": { "color": { "theme": 0 }, "style": "medium" } } },
|
|
11672
|
+
firstColumn: { "font": { "bold": true, "color": { "theme": 0 } }, "fill": { "color": { "theme": 7, "tint": -0.25 }, "fillType": "solid" }, "border": { "right": { "color": { "theme": 0 }, "style": "medium" } } },
|
|
11673
|
+
lastColumn: { "font": { "bold": true, "color": { "theme": 0 } }, "fill": { "color": { "theme": 7, "tint": -0.25 }, "fillType": "solid" }, "border": { "left": { "color": { "theme": 0 }, "style": "medium" } } },
|
|
11674
|
+
firstRowStripe: { "fill": { "color": { "theme": 7, "tint": -0.25 }, "fillType": "solid" } },
|
|
11675
|
+
firstColumnStripe: { "fill": { "color": { "theme": 7, "tint": -0.25 }, "fillType": "solid" } }
|
|
11676
|
+
},
|
|
11677
|
+
TableStyleDark6: {
|
|
11678
|
+
wholeTable: { "font": { "color": { "theme": 0 } }, "fill": { "color": { "theme": 8 }, "fillType": "solid" } },
|
|
11679
|
+
headerRow: { "font": { "bold": true, "color": { "theme": 0 } }, "fill": { "color": { "theme": 1 }, "fillType": "solid" }, "border": { "bottom": { "color": { "theme": 0 }, "style": "medium" } } },
|
|
11680
|
+
totalRow: { "font": { "bold": true, "color": { "theme": 0 } }, "fill": { "color": { "theme": 8, "tint": -0.5 }, "fillType": "solid" }, "border": { "top": { "color": { "theme": 0 }, "style": "medium" } } },
|
|
11681
|
+
firstColumn: { "font": { "bold": true, "color": { "theme": 0 } }, "fill": { "color": { "theme": 8, "tint": -0.25 }, "fillType": "solid" }, "border": { "right": { "color": { "theme": 0 }, "style": "medium" } } },
|
|
11682
|
+
lastColumn: { "font": { "bold": true, "color": { "theme": 0 } }, "fill": { "color": { "theme": 8, "tint": -0.25 }, "fillType": "solid" }, "border": { "left": { "color": { "theme": 0 }, "style": "medium" } } },
|
|
11683
|
+
firstRowStripe: { "fill": { "color": { "theme": 8, "tint": -0.25 }, "fillType": "solid" } },
|
|
11684
|
+
firstColumnStripe: { "fill": { "color": { "theme": 8, "tint": -0.25 }, "fillType": "solid" } }
|
|
11685
|
+
},
|
|
11686
|
+
TableStyleDark7: {
|
|
11687
|
+
wholeTable: { "font": { "color": { "theme": 0 } }, "fill": { "color": { "theme": 9 }, "fillType": "solid" } },
|
|
11688
|
+
headerRow: { "font": { "bold": true, "color": { "theme": 0 } }, "fill": { "color": { "theme": 1 }, "fillType": "solid" }, "border": { "bottom": { "color": { "theme": 0 }, "style": "medium" } } },
|
|
11689
|
+
totalRow: { "font": { "bold": true, "color": { "theme": 0 } }, "fill": { "color": { "theme": 9, "tint": -0.5 }, "fillType": "solid" }, "border": { "top": { "color": { "theme": 0 }, "style": "medium" } } },
|
|
11690
|
+
firstColumn: { "font": { "bold": true, "color": { "theme": 0 } }, "fill": { "color": { "theme": 9, "tint": -0.25 }, "fillType": "solid" }, "border": { "right": { "color": { "theme": 0 }, "style": "medium" } } },
|
|
11691
|
+
lastColumn: { "font": { "bold": true, "color": { "theme": 0 } }, "fill": { "color": { "theme": 9, "tint": -0.25 }, "fillType": "solid" }, "border": { "left": { "color": { "theme": 0 }, "style": "medium" } } },
|
|
11692
|
+
firstRowStripe: { "fill": { "color": { "theme": 9, "tint": -0.25 }, "fillType": "solid" } },
|
|
11693
|
+
firstColumnStripe: { "fill": { "color": { "theme": 9, "tint": -0.25 }, "fillType": "solid" } }
|
|
11694
|
+
},
|
|
11695
|
+
TableStyleDark8: {
|
|
11696
|
+
wholeTable: { "fill": { "color": { "theme": 0, "tint": -0.15 }, "fillType": "solid" } },
|
|
11697
|
+
headerRow: { "font": { "color": { "theme": 0 } }, "fill": { "color": { "theme": 1 }, "fillType": "solid" } },
|
|
11698
|
+
totalRow: { "font": { "bold": true, "color": { "theme": 1 } }, "border": { "top": { "color": { "theme": 1 }, "style": "double" } } },
|
|
11699
|
+
firstColumn: { "font": { "bold": true, "color": { "theme": 1 } } },
|
|
11700
|
+
lastColumn: { "font": { "bold": true, "color": { "theme": 1 } } },
|
|
11701
|
+
firstRowStripe: { "fill": { "color": { "theme": 0, "tint": -0.35 }, "fillType": "solid" } },
|
|
11702
|
+
firstColumnStripe: { "fill": { "color": { "theme": 0, "tint": -0.35 }, "fillType": "solid" } }
|
|
11703
|
+
},
|
|
11704
|
+
TableStyleDark9: {
|
|
11705
|
+
wholeTable: { "fill": { "color": { "theme": 4, "tint": 0.8 }, "fillType": "solid" } },
|
|
11706
|
+
headerRow: { "font": { "color": { "theme": 0 } }, "fill": { "color": { "theme": 5 }, "fillType": "solid" } },
|
|
11707
|
+
totalRow: { "font": { "bold": true, "color": { "theme": 1 } }, "border": { "top": { "color": { "theme": 1 }, "style": "double" } } },
|
|
11708
|
+
firstColumn: { "font": { "bold": true, "color": { "theme": 1 } } },
|
|
11709
|
+
lastColumn: { "font": { "bold": true, "color": { "theme": 1 } } },
|
|
11710
|
+
firstRowStripe: { "fill": { "color": { "theme": 4, "tint": 0.6 }, "fillType": "solid" } },
|
|
11711
|
+
firstColumnStripe: { "fill": { "color": { "theme": 4, "tint": 0.6 }, "fillType": "solid" } }
|
|
11712
|
+
},
|
|
11713
|
+
TableStyleDark10: {
|
|
11714
|
+
wholeTable: { "fill": { "color": { "theme": 6, "tint": 0.8 }, "fillType": "solid" } },
|
|
11715
|
+
headerRow: { "font": { "color": { "theme": 0 } }, "fill": { "color": { "theme": 7 }, "fillType": "solid" } },
|
|
11716
|
+
totalRow: { "font": { "bold": true, "color": { "theme": 1 } }, "border": { "top": { "color": { "theme": 1 }, "style": "double" } } },
|
|
11717
|
+
firstColumn: { "font": { "bold": true, "color": { "theme": 1 } } },
|
|
11718
|
+
lastColumn: { "font": { "bold": true, "color": { "theme": 1 } } },
|
|
11719
|
+
firstRowStripe: { "fill": { "color": { "theme": 6, "tint": 0.6 }, "fillType": "solid" } },
|
|
11720
|
+
firstColumnStripe: { "fill": { "color": { "theme": 6, "tint": 0.6 }, "fillType": "solid" } }
|
|
11721
|
+
},
|
|
11722
|
+
TableStyleDark11: {
|
|
11723
|
+
wholeTable: { "fill": { "color": { "theme": 8, "tint": 0.8 }, "fillType": "solid" } },
|
|
11724
|
+
headerRow: { "font": { "color": { "theme": 0 } }, "fill": { "color": { "theme": 9 }, "fillType": "solid" } },
|
|
11725
|
+
totalRow: { "font": { "bold": true, "color": { "theme": 1 } }, "border": { "top": { "color": { "theme": 1 }, "style": "double" } } },
|
|
11726
|
+
firstColumn: { "font": { "bold": true, "color": { "theme": 1 } } },
|
|
11727
|
+
lastColumn: { "font": { "bold": true, "color": { "theme": 1 } } },
|
|
11728
|
+
firstRowStripe: { "fill": { "color": { "theme": 8, "tint": 0.6 }, "fillType": "solid" } },
|
|
11729
|
+
firstColumnStripe: { "fill": { "color": { "theme": 8, "tint": 0.6 }, "fillType": "solid" } }
|
|
11730
|
+
}
|
|
11731
|
+
};
|
|
11732
|
+
function resolveBuiltinTableStyle(name) {
|
|
11733
|
+
if (!name || !Object.prototype.hasOwnProperty.call(BUILTIN_TABLE_STYLES, name)) {
|
|
11734
|
+
return null;
|
|
11735
|
+
}
|
|
11736
|
+
return BUILTIN_TABLE_STYLES[name] ?? null;
|
|
11737
|
+
}
|
|
11738
|
+
|
|
11043
11739
|
// src/cell-text-clip.ts
|
|
11044
11740
|
function resolveCellTextClipOverscan(overscan, usesWrappedText) {
|
|
11045
11741
|
return {
|
|
@@ -20687,7 +21383,7 @@ function canCellTextOverflow(data) {
|
|
|
20687
21383
|
return false;
|
|
20688
21384
|
}
|
|
20689
21385
|
const textAlign = data.style.textAlign;
|
|
20690
|
-
if (textAlign && textAlign !== "left" && textAlign !== "start" && textAlign !== "center") {
|
|
21386
|
+
if (textAlign && textAlign !== "left" && textAlign !== "start" && textAlign !== "center" && textAlign !== "right" && textAlign !== "end") {
|
|
20691
21387
|
return false;
|
|
20692
21388
|
}
|
|
20693
21389
|
return true;
|
|
@@ -21163,7 +21859,87 @@ function mergeResolvedCellStyle(base, overlay, options) {
|
|
|
21163
21859
|
}
|
|
21164
21860
|
return nextStyle;
|
|
21165
21861
|
}
|
|
21166
|
-
function
|
|
21862
|
+
function resolveBorderEdgePriority(edge) {
|
|
21863
|
+
const style = typeof edge?.style === "string" ? edge.style : "none";
|
|
21864
|
+
const stylePriority = {
|
|
21865
|
+
dashed: 2,
|
|
21866
|
+
dashDot: 3,
|
|
21867
|
+
dashDotDot: 3,
|
|
21868
|
+
dotted: 1,
|
|
21869
|
+
double: 8,
|
|
21870
|
+
hair: 0,
|
|
21871
|
+
medium: 6,
|
|
21872
|
+
mediumDashDot: 5,
|
|
21873
|
+
mediumDashDotDot: 5,
|
|
21874
|
+
mediumDashed: 5,
|
|
21875
|
+
none: -1,
|
|
21876
|
+
slantDashDot: 4,
|
|
21877
|
+
thick: 7,
|
|
21878
|
+
thin: 4
|
|
21879
|
+
};
|
|
21880
|
+
return stylePriority[style] ?? -1;
|
|
21881
|
+
}
|
|
21882
|
+
function resolvePreferredBorderEdge(current, candidate) {
|
|
21883
|
+
if (!candidate || typeof candidate.style !== "string" || candidate.style === "none") {
|
|
21884
|
+
return current ?? null;
|
|
21885
|
+
}
|
|
21886
|
+
if (!current) {
|
|
21887
|
+
return candidate;
|
|
21888
|
+
}
|
|
21889
|
+
const currentPriority = resolveBorderEdgePriority(current);
|
|
21890
|
+
const candidatePriority = resolveBorderEdgePriority(candidate);
|
|
21891
|
+
if (candidatePriority > currentPriority) {
|
|
21892
|
+
return candidate;
|
|
21893
|
+
}
|
|
21894
|
+
return current;
|
|
21895
|
+
}
|
|
21896
|
+
function resolveMergedRegionBorderOverlay(row, col, merge, resolveBaseCellStyle) {
|
|
21897
|
+
const rowSpan = Math.max(1, merge?.rowSpan ?? 1);
|
|
21898
|
+
const colSpan = Math.max(1, merge?.colSpan ?? 1);
|
|
21899
|
+
if (rowSpan === 1 && colSpan === 1) {
|
|
21900
|
+
return null;
|
|
21901
|
+
}
|
|
21902
|
+
const endRow = row + rowSpan - 1;
|
|
21903
|
+
const endCol = col + colSpan - 1;
|
|
21904
|
+
let top = null;
|
|
21905
|
+
let right = null;
|
|
21906
|
+
let bottom = null;
|
|
21907
|
+
let left = null;
|
|
21908
|
+
for (let targetCol = col; targetCol <= endCol; targetCol += 1) {
|
|
21909
|
+
const topStyle = resolveBaseCellStyle(row, targetCol);
|
|
21910
|
+
const topBorder = topStyle?.border;
|
|
21911
|
+
top = resolvePreferredBorderEdge(top, topBorder?.top ?? null);
|
|
21912
|
+
const bottomStyle = resolveBaseCellStyle(endRow, targetCol);
|
|
21913
|
+
const bottomBorder = bottomStyle?.border;
|
|
21914
|
+
bottom = resolvePreferredBorderEdge(bottom, bottomBorder?.bottom ?? null);
|
|
21915
|
+
}
|
|
21916
|
+
for (let targetRow = row; targetRow <= endRow; targetRow += 1) {
|
|
21917
|
+
const leftStyle = resolveBaseCellStyle(targetRow, col);
|
|
21918
|
+
const leftBorder = leftStyle?.border;
|
|
21919
|
+
left = resolvePreferredBorderEdge(left, leftBorder?.left ?? null);
|
|
21920
|
+
const rightStyle = resolveBaseCellStyle(targetRow, endCol);
|
|
21921
|
+
const rightBorder = rightStyle?.border;
|
|
21922
|
+
right = resolvePreferredBorderEdge(right, rightBorder?.right ?? null);
|
|
21923
|
+
}
|
|
21924
|
+
const border = {};
|
|
21925
|
+
if (top) {
|
|
21926
|
+
border.top = top;
|
|
21927
|
+
}
|
|
21928
|
+
if (right) {
|
|
21929
|
+
border.right = right;
|
|
21930
|
+
}
|
|
21931
|
+
if (bottom) {
|
|
21932
|
+
border.bottom = bottom;
|
|
21933
|
+
}
|
|
21934
|
+
if (left) {
|
|
21935
|
+
border.left = left;
|
|
21936
|
+
}
|
|
21937
|
+
if (Object.keys(border).length === 0) {
|
|
21938
|
+
return null;
|
|
21939
|
+
}
|
|
21940
|
+
return { border };
|
|
21941
|
+
}
|
|
21942
|
+
function normalizeTableStyleEdges(style, region, row, col) {
|
|
21167
21943
|
if (!style) {
|
|
21168
21944
|
return null;
|
|
21169
21945
|
}
|
|
@@ -21171,23 +21947,32 @@ function normalizeTableStyleEdges(style, table, row, col) {
|
|
|
21171
21947
|
if (!border) {
|
|
21172
21948
|
return style;
|
|
21173
21949
|
}
|
|
21174
|
-
const nextBorder = {
|
|
21175
|
-
if (
|
|
21176
|
-
|
|
21177
|
-
nextBorder.bottom = nextBorder.bottom ?? nextBorder.horizontal;
|
|
21178
|
-
}
|
|
21179
|
-
delete nextBorder.horizontal;
|
|
21950
|
+
const nextBorder = {};
|
|
21951
|
+
if (border.top && row === region.startRow) {
|
|
21952
|
+
nextBorder.top = border.top;
|
|
21180
21953
|
}
|
|
21181
|
-
if (
|
|
21182
|
-
|
|
21183
|
-
nextBorder.right = nextBorder.right ?? nextBorder.vertical;
|
|
21184
|
-
}
|
|
21185
|
-
delete nextBorder.vertical;
|
|
21954
|
+
if (border.bottom && row === region.endRow) {
|
|
21955
|
+
nextBorder.bottom = border.bottom;
|
|
21186
21956
|
}
|
|
21187
|
-
|
|
21188
|
-
|
|
21189
|
-
|
|
21190
|
-
|
|
21957
|
+
if (border.left && col === region.startCol) {
|
|
21958
|
+
nextBorder.left = border.left;
|
|
21959
|
+
}
|
|
21960
|
+
if (border.right && col === region.endCol) {
|
|
21961
|
+
nextBorder.right = border.right;
|
|
21962
|
+
}
|
|
21963
|
+
if (border.horizontal && row < region.endRow) {
|
|
21964
|
+
nextBorder.bottom = nextBorder.bottom ?? border.horizontal;
|
|
21965
|
+
}
|
|
21966
|
+
if (border.vertical && col < region.endCol) {
|
|
21967
|
+
nextBorder.right = nextBorder.right ?? border.vertical;
|
|
21968
|
+
}
|
|
21969
|
+
const nextStyle = { ...style };
|
|
21970
|
+
if (Object.keys(nextBorder).length === 0) {
|
|
21971
|
+
delete nextStyle.border;
|
|
21972
|
+
} else {
|
|
21973
|
+
nextStyle.border = nextBorder;
|
|
21974
|
+
}
|
|
21975
|
+
return nextStyle;
|
|
21191
21976
|
}
|
|
21192
21977
|
function resolveTableCellStyle(table, row, col, activeSheet) {
|
|
21193
21978
|
if (!table || !activeSheet) {
|
|
@@ -21197,37 +21982,72 @@ function resolveTableCellStyle(table, row, col, activeSheet) {
|
|
|
21197
21982
|
if (!styleName) {
|
|
21198
21983
|
return null;
|
|
21199
21984
|
}
|
|
21200
|
-
const tableStyle = activeSheet.tableStyleByName[styleName];
|
|
21985
|
+
const tableStyle = activeSheet.tableStyleByName[styleName] ?? resolveBuiltinTableStyle(styleName);
|
|
21201
21986
|
if (!tableStyle) {
|
|
21202
21987
|
return null;
|
|
21203
21988
|
}
|
|
21989
|
+
const headerRowCount = Math.max(table.headerRowCount, 1);
|
|
21990
|
+
const totalsRowCount = table.totalsRowShown ? Math.max(table.totalsRowCount, 1) : 0;
|
|
21991
|
+
const headerEndRow = table.start.row + headerRowCount - 1;
|
|
21992
|
+
const totalsStartRow = table.end.row - totalsRowCount + 1;
|
|
21993
|
+
const bodyStartRow = headerEndRow + 1;
|
|
21994
|
+
const bodyEndRow = totalsStartRow - 1;
|
|
21995
|
+
const isHeaderRow = row >= table.start.row && row <= headerEndRow;
|
|
21996
|
+
const isTotalsRow = totalsRowCount > 0 && row >= totalsStartRow && row <= table.end.row;
|
|
21997
|
+
const isBodyRow = row >= bodyStartRow && row <= bodyEndRow;
|
|
21998
|
+
const isFirstColumn = col === table.start.col;
|
|
21999
|
+
const isLastColumn = col === table.end.col;
|
|
22000
|
+
const tableRegion = {
|
|
22001
|
+
endCol: table.end.col,
|
|
22002
|
+
endRow: table.end.row,
|
|
22003
|
+
startCol: table.start.col,
|
|
22004
|
+
startRow: table.start.row
|
|
22005
|
+
};
|
|
22006
|
+
const headerRegion = { ...tableRegion, endRow: headerEndRow };
|
|
22007
|
+
const totalsRegion = { ...tableRegion, startRow: totalsStartRow };
|
|
21204
22008
|
let resolved = null;
|
|
21205
|
-
const applyElement = (elementType, enabled = true) => {
|
|
22009
|
+
const applyElement = (elementType, region, enabled = true) => {
|
|
21206
22010
|
if (!enabled) {
|
|
21207
22011
|
return;
|
|
21208
22012
|
}
|
|
21209
|
-
const nextStyle = normalizeTableStyleEdges(tableStyle[elementType] ?? null,
|
|
22013
|
+
const nextStyle = normalizeTableStyleEdges(tableStyle[elementType] ?? null, region, row, col);
|
|
21210
22014
|
if (!nextStyle) {
|
|
21211
22015
|
return;
|
|
21212
22016
|
}
|
|
21213
22017
|
resolved = mergeResolvedCellStyle(resolved, nextStyle);
|
|
21214
22018
|
};
|
|
21215
|
-
applyElement("wholeTable");
|
|
21216
|
-
|
|
21217
|
-
|
|
21218
|
-
|
|
21219
|
-
|
|
21220
|
-
|
|
22019
|
+
applyElement("wholeTable", tableRegion);
|
|
22020
|
+
if (isBodyRow && table.styleInfo?.showColumnStripes) {
|
|
22021
|
+
const isFirstStripe = (col - table.start.col) % 2 === 0;
|
|
22022
|
+
applyElement(isFirstStripe ? "firstColumnStripe" : "secondColumnStripe", {
|
|
22023
|
+
endCol: col,
|
|
22024
|
+
endRow: bodyEndRow,
|
|
22025
|
+
startCol: col,
|
|
22026
|
+
startRow: bodyStartRow
|
|
22027
|
+
});
|
|
22028
|
+
}
|
|
22029
|
+
if (isBodyRow && table.styleInfo?.showRowStripes) {
|
|
22030
|
+
const isFirstStripe = (row - bodyStartRow) % 2 === 0;
|
|
22031
|
+
applyElement(isFirstStripe ? "firstRowStripe" : "secondRowStripe", {
|
|
22032
|
+
...tableRegion,
|
|
22033
|
+
endRow: row,
|
|
22034
|
+
startRow: row
|
|
22035
|
+
});
|
|
22036
|
+
}
|
|
22037
|
+
applyElement("lastColumn", { ...tableRegion, startCol: table.end.col }, Boolean(table.styleInfo?.showLastColumn) && isLastColumn);
|
|
22038
|
+
applyElement("firstColumn", { ...tableRegion, endCol: table.start.col }, Boolean(table.styleInfo?.showFirstColumn) && isFirstColumn);
|
|
22039
|
+
applyElement("headerRow", headerRegion, isHeaderRow);
|
|
21221
22040
|
if (isHeaderRow && table.headerRowCellStyle) {
|
|
21222
22041
|
const namedHeaderStyle = activeSheet.namedCellStyleByName[table.headerRowCellStyle];
|
|
21223
22042
|
if (namedHeaderStyle) {
|
|
21224
22043
|
resolved = mergeResolvedCellStyle(resolved, namedHeaderStyle);
|
|
21225
22044
|
}
|
|
21226
22045
|
}
|
|
21227
|
-
|
|
21228
|
-
|
|
21229
|
-
|
|
21230
|
-
}
|
|
22046
|
+
applyElement("totalRow", totalsRegion, isTotalsRow);
|
|
22047
|
+
applyElement("firstHeaderCell", { ...headerRegion, endCol: table.start.col }, isHeaderRow && isFirstColumn);
|
|
22048
|
+
applyElement("lastHeaderCell", { ...headerRegion, startCol: table.end.col }, isHeaderRow && isLastColumn);
|
|
22049
|
+
applyElement("firstTotalCell", { ...totalsRegion, endCol: table.start.col }, isTotalsRow && isFirstColumn);
|
|
22050
|
+
applyElement("lastTotalCell", { ...totalsRegion, startCol: table.end.col }, isTotalsRow && isLastColumn);
|
|
21231
22051
|
return resolved;
|
|
21232
22052
|
}
|
|
21233
22053
|
function getTableHeaderColumn(table, row, col) {
|
|
@@ -21934,7 +22754,8 @@ function resolveConditionalRuleThreshold(threshold, numericValues) {
|
|
|
21934
22754
|
return null;
|
|
21935
22755
|
}
|
|
21936
22756
|
const fallbackValue = typeof threshold.value === "number" ? threshold.value : null;
|
|
21937
|
-
|
|
22757
|
+
const thresholdType = threshold.type.trim().toLowerCase();
|
|
22758
|
+
if (thresholdType === "num" || thresholdType === "formula") {
|
|
21938
22759
|
return fallbackValue;
|
|
21939
22760
|
}
|
|
21940
22761
|
if (numericValues.length === 0) {
|
|
@@ -21942,17 +22763,216 @@ function resolveConditionalRuleThreshold(threshold, numericValues) {
|
|
|
21942
22763
|
}
|
|
21943
22764
|
const minValue = Math.min(...numericValues);
|
|
21944
22765
|
const maxValue = Math.max(...numericValues);
|
|
21945
|
-
if (
|
|
22766
|
+
if (thresholdType === "min") {
|
|
21946
22767
|
return minValue;
|
|
21947
22768
|
}
|
|
21948
|
-
if (
|
|
22769
|
+
if (thresholdType === "max") {
|
|
21949
22770
|
return maxValue;
|
|
21950
22771
|
}
|
|
21951
|
-
if (
|
|
22772
|
+
if (thresholdType === "automin" || thresholdType === "automaticmin") {
|
|
22773
|
+
return Math.min(0, minValue);
|
|
22774
|
+
}
|
|
22775
|
+
if (thresholdType === "automax" || thresholdType === "automaticmax") {
|
|
22776
|
+
return Math.max(0, maxValue);
|
|
22777
|
+
}
|
|
22778
|
+
if ((thresholdType === "percent" || thresholdType === "percentile") && fallbackValue !== null) {
|
|
21952
22779
|
return minValue + (maxValue - minValue) * (fallbackValue / 100);
|
|
21953
22780
|
}
|
|
21954
22781
|
return fallbackValue;
|
|
21955
22782
|
}
|
|
22783
|
+
function parseConditionalFormulaLiteral(formula) {
|
|
22784
|
+
const trimmed = formula.trim();
|
|
22785
|
+
if (trimmed.length === 0) {
|
|
22786
|
+
return null;
|
|
22787
|
+
}
|
|
22788
|
+
const withoutEquals = trimmed.startsWith("=") ? trimmed.slice(1).trim() : trimmed;
|
|
22789
|
+
if (withoutEquals.startsWith('"') && withoutEquals.endsWith('"') && withoutEquals.length >= 2) {
|
|
22790
|
+
return withoutEquals.slice(1, -1).replace(/\"\"/g, '"');
|
|
22791
|
+
}
|
|
22792
|
+
const numeric = Number(withoutEquals.replace(/,/g, ""));
|
|
22793
|
+
if (Number.isFinite(numeric)) {
|
|
22794
|
+
return numeric;
|
|
22795
|
+
}
|
|
22796
|
+
return withoutEquals;
|
|
22797
|
+
}
|
|
22798
|
+
function resolveConditionalCellIsMatch(operator, left, right, numericValue, textValue) {
|
|
22799
|
+
const normalizedOperator = operator.trim();
|
|
22800
|
+
const normalizedText = textValue.trim();
|
|
22801
|
+
const parsedNumericText = Number(normalizedText.replace(/,/g, ""));
|
|
22802
|
+
const effectiveNumericValue = numericValue ?? (Number.isFinite(parsedNumericText) ? parsedNumericText : null);
|
|
22803
|
+
const cellIsTextComparable = effectiveNumericValue === null && normalizedText.length > 0;
|
|
22804
|
+
const compareComparable = (literal, predicate) => {
|
|
22805
|
+
if (typeof literal !== "number") {
|
|
22806
|
+
return false;
|
|
22807
|
+
}
|
|
22808
|
+
if (effectiveNumericValue !== null) {
|
|
22809
|
+
return predicate(effectiveNumericValue, literal);
|
|
22810
|
+
}
|
|
22811
|
+
if (cellIsTextComparable) {
|
|
22812
|
+
return predicate(1, 0);
|
|
22813
|
+
}
|
|
22814
|
+
return false;
|
|
22815
|
+
};
|
|
22816
|
+
switch (normalizedOperator) {
|
|
22817
|
+
case "greaterThan":
|
|
22818
|
+
return compareComparable(left, (cell, value) => cell > value);
|
|
22819
|
+
case "greaterThanOrEqual":
|
|
22820
|
+
return compareComparable(left, (cell, value) => cell >= value);
|
|
22821
|
+
case "lessThan":
|
|
22822
|
+
return compareComparable(left, (cell, value) => cell < value);
|
|
22823
|
+
case "lessThanOrEqual":
|
|
22824
|
+
return compareComparable(left, (cell, value) => cell <= value);
|
|
22825
|
+
case "between":
|
|
22826
|
+
if (typeof left !== "number" || typeof right !== "number") {
|
|
22827
|
+
return false;
|
|
22828
|
+
}
|
|
22829
|
+
if (effectiveNumericValue === null) {
|
|
22830
|
+
return false;
|
|
22831
|
+
}
|
|
22832
|
+
return effectiveNumericValue >= left && effectiveNumericValue <= right;
|
|
22833
|
+
case "notBetween":
|
|
22834
|
+
if (typeof left !== "number" || typeof right !== "number") {
|
|
22835
|
+
return false;
|
|
22836
|
+
}
|
|
22837
|
+
if (effectiveNumericValue === null) {
|
|
22838
|
+
return cellIsTextComparable;
|
|
22839
|
+
}
|
|
22840
|
+
return effectiveNumericValue < left || effectiveNumericValue > right;
|
|
22841
|
+
case "notEqual":
|
|
22842
|
+
if (typeof left === "number") {
|
|
22843
|
+
if (effectiveNumericValue !== null) {
|
|
22844
|
+
return effectiveNumericValue !== left;
|
|
22845
|
+
}
|
|
22846
|
+
return cellIsTextComparable;
|
|
22847
|
+
}
|
|
22848
|
+
return left !== null && normalizedText.toLowerCase() !== String(left).toLowerCase();
|
|
22849
|
+
case "equal":
|
|
22850
|
+
default:
|
|
22851
|
+
if (typeof left === "number") {
|
|
22852
|
+
if (effectiveNumericValue !== null) {
|
|
22853
|
+
return effectiveNumericValue === left;
|
|
22854
|
+
}
|
|
22855
|
+
return false;
|
|
22856
|
+
}
|
|
22857
|
+
return left !== null && normalizedText.toLowerCase() === String(left).toLowerCase();
|
|
22858
|
+
}
|
|
22859
|
+
}
|
|
22860
|
+
function resolveConditionalFormulaComparable(formula, worksheet, sheet, batchedCells) {
|
|
22861
|
+
const literal = parseConditionalFormulaLiteral(formula);
|
|
22862
|
+
if (typeof literal === "number") {
|
|
22863
|
+
return literal;
|
|
22864
|
+
}
|
|
22865
|
+
const normalized = formula.trim().replace(/^=/, "").trim();
|
|
22866
|
+
if (normalized.length === 0) {
|
|
22867
|
+
return literal;
|
|
22868
|
+
}
|
|
22869
|
+
const splitReference = splitSheetFormulaReference(normalized);
|
|
22870
|
+
const targetSheetName = splitReference?.sheetName ?? null;
|
|
22871
|
+
if (targetSheetName && sheet?.name && targetSheetName !== sheet.name) {
|
|
22872
|
+
return literal;
|
|
22873
|
+
}
|
|
22874
|
+
const cellRef = splitReference?.range ?? normalized;
|
|
22875
|
+
const cell = parseA1CellReference3(cellRef.replace(/\$/g, ""));
|
|
22876
|
+
if (!cell) {
|
|
22877
|
+
return literal;
|
|
22878
|
+
}
|
|
22879
|
+
if (worksheet) {
|
|
22880
|
+
const numeric = getCellNumericValue(worksheet, cell.row, cell.col);
|
|
22881
|
+
if (numeric !== null) {
|
|
22882
|
+
return numeric;
|
|
22883
|
+
}
|
|
22884
|
+
return getCellDisplayValue(worksheet, cell.row, cell.col, sheet);
|
|
22885
|
+
}
|
|
22886
|
+
if (batchedCells) {
|
|
22887
|
+
const batched = batchedCells.get(`${cell.row}:${cell.col}`);
|
|
22888
|
+
if (batched) {
|
|
22889
|
+
const numeric = getBatchedCellNumericValue(batched);
|
|
22890
|
+
if (numeric !== null) {
|
|
22891
|
+
return numeric;
|
|
22892
|
+
}
|
|
22893
|
+
return batched.value;
|
|
22894
|
+
}
|
|
22895
|
+
}
|
|
22896
|
+
return literal;
|
|
22897
|
+
}
|
|
22898
|
+
function normalizeConditionalTextOperand(value) {
|
|
22899
|
+
if (value === null || value === void 0) {
|
|
22900
|
+
return "";
|
|
22901
|
+
}
|
|
22902
|
+
return String(value).trim().toLowerCase();
|
|
22903
|
+
}
|
|
22904
|
+
function resolveConditionalStyledRuleMatch(rule, numericValue, textValue, worksheet, sheet, batchedCells) {
|
|
22905
|
+
const normalizedRuleType = rule.ruleType.trim().toLowerCase();
|
|
22906
|
+
const left = resolveConditionalFormulaComparable(rule.formulas?.[0] ?? "", worksheet, sheet, batchedCells);
|
|
22907
|
+
const right = resolveConditionalFormulaComparable(rule.formulas?.[1] ?? "", worksheet, sheet, batchedCells);
|
|
22908
|
+
if (normalizedRuleType === "cellis") {
|
|
22909
|
+
return resolveConditionalCellIsMatch(rule.operator ?? "equal", left, right, numericValue, textValue);
|
|
22910
|
+
}
|
|
22911
|
+
const normalizedCellText = textValue.trim().toLowerCase();
|
|
22912
|
+
const normalizedOperand = normalizeConditionalTextOperand(rule.text) || normalizeConditionalTextOperand(left);
|
|
22913
|
+
switch (normalizedRuleType) {
|
|
22914
|
+
case "beginwith":
|
|
22915
|
+
case "beginswith":
|
|
22916
|
+
return normalizedOperand.length > 0 && normalizedCellText.startsWith(normalizedOperand);
|
|
22917
|
+
case "endwith":
|
|
22918
|
+
case "endswith":
|
|
22919
|
+
return normalizedOperand.length > 0 && normalizedCellText.endsWith(normalizedOperand);
|
|
22920
|
+
case "containstext":
|
|
22921
|
+
return normalizedOperand.length > 0 && normalizedCellText.includes(normalizedOperand);
|
|
22922
|
+
case "notcontainstext":
|
|
22923
|
+
return normalizedOperand.length > 0 && !normalizedCellText.includes(normalizedOperand);
|
|
22924
|
+
default:
|
|
22925
|
+
return false;
|
|
22926
|
+
}
|
|
22927
|
+
}
|
|
22928
|
+
var styledConditionalRulesByRuleList = /* @__PURE__ */ new WeakMap();
|
|
22929
|
+
function getStyledConditionalRules(rules) {
|
|
22930
|
+
let styledRules = styledConditionalRulesByRuleList.get(rules);
|
|
22931
|
+
if (!styledRules) {
|
|
22932
|
+
styledRules = rules.filter((rule) => rule.kind === "styled");
|
|
22933
|
+
styledConditionalRulesByRuleList.set(rules, styledRules);
|
|
22934
|
+
}
|
|
22935
|
+
return styledRules;
|
|
22936
|
+
}
|
|
22937
|
+
function resolveConditionalCellStyleForCell(row, col, sheet, readNumericValue, readTextValue, worksheet, batchedCells) {
|
|
22938
|
+
const rules = sheet?.conditionalFormatRules;
|
|
22939
|
+
if (!sheet || !rules || rules.length === 0) {
|
|
22940
|
+
return null;
|
|
22941
|
+
}
|
|
22942
|
+
const styledRules = getStyledConditionalRules(rules);
|
|
22943
|
+
if (styledRules.length === 0) {
|
|
22944
|
+
return null;
|
|
22945
|
+
}
|
|
22946
|
+
const matchedStyles = [];
|
|
22947
|
+
let numericValue;
|
|
22948
|
+
let textValue;
|
|
22949
|
+
for (const rule of styledRules) {
|
|
22950
|
+
if (!rule.ranges.some((range) => isCellInRange({ row, col }, range))) {
|
|
22951
|
+
continue;
|
|
22952
|
+
}
|
|
22953
|
+
if (numericValue === void 0) {
|
|
22954
|
+
numericValue = readNumericValue();
|
|
22955
|
+
}
|
|
22956
|
+
if (textValue === void 0) {
|
|
22957
|
+
textValue = readTextValue();
|
|
22958
|
+
}
|
|
22959
|
+
if (!resolveConditionalStyledRuleMatch(rule, numericValue, textValue, worksheet, sheet, batchedCells)) {
|
|
22960
|
+
continue;
|
|
22961
|
+
}
|
|
22962
|
+
matchedStyles.push(rule.style);
|
|
22963
|
+
if (rule.stopIfTrue) {
|
|
22964
|
+
break;
|
|
22965
|
+
}
|
|
22966
|
+
}
|
|
22967
|
+
if (matchedStyles.length === 0) {
|
|
22968
|
+
return null;
|
|
22969
|
+
}
|
|
22970
|
+
let resolved = null;
|
|
22971
|
+
for (let index = matchedStyles.length - 1; index >= 0; index -= 1) {
|
|
22972
|
+
resolved = mergeResolvedCellStyle(resolved, matchedStyles[index]);
|
|
22973
|
+
}
|
|
22974
|
+
return resolved;
|
|
22975
|
+
}
|
|
21956
22976
|
function buildConditionalIcon(iconSet, iconId) {
|
|
21957
22977
|
switch (iconSet) {
|
|
21958
22978
|
case "NoIcons":
|
|
@@ -22960,6 +23980,7 @@ function GridRow({
|
|
|
22960
23980
|
"div",
|
|
22961
23981
|
{
|
|
22962
23982
|
style: {
|
|
23983
|
+
left: cellData.spillOffsetX ?? 0,
|
|
22963
23984
|
maxWidth: cellData.spillWidth,
|
|
22964
23985
|
overflow: "visible",
|
|
22965
23986
|
pointerEvents: "none",
|
|
@@ -23196,6 +24217,8 @@ function XlsxGrid({
|
|
|
23196
24217
|
const firstVisibleRowRef = React4.useRef(void 0);
|
|
23197
24218
|
const lastVisibleRowRef = React4.useRef(void 0);
|
|
23198
24219
|
const cellRenderCacheRef = React4.useRef(/* @__PURE__ */ new Map());
|
|
24220
|
+
const cellBaseRawStyleCacheRef = React4.useRef(/* @__PURE__ */ new Map());
|
|
24221
|
+
const mergedBorderOverlayCacheRef = React4.useRef(/* @__PURE__ */ new Map());
|
|
23199
24222
|
const conditionalFormatMetricsCacheRef = React4.useRef(/* @__PURE__ */ new Map());
|
|
23200
24223
|
const resizeStateRef = React4.useRef(null);
|
|
23201
24224
|
const resizeFrameRef = React4.useRef(null);
|
|
@@ -23207,6 +24230,8 @@ function XlsxGrid({
|
|
|
23207
24230
|
const pendingSelectionDragCleanupRef = React4.useRef(null);
|
|
23208
24231
|
const fillDragCleanupRef = React4.useRef(null);
|
|
23209
24232
|
const cachedScrollerRectRef = React4.useRef(null);
|
|
24233
|
+
const installImageInteractionListenersRef = React4.useRef(installImageInteractionListeners);
|
|
24234
|
+
const installChartInteractionListenersRef = React4.useRef(installChartInteractionListeners);
|
|
23210
24235
|
const imageInteractionCleanupRef = React4.useRef(null);
|
|
23211
24236
|
const imageInteractionRef = React4.useRef(null);
|
|
23212
24237
|
const chartInteractionCleanupRef = React4.useRef(null);
|
|
@@ -24194,6 +25219,10 @@ function XlsxGrid({
|
|
|
24194
25219
|
React4.useEffect(() => {
|
|
24195
25220
|
readOnlyRef.current = readOnly;
|
|
24196
25221
|
}, [readOnly]);
|
|
25222
|
+
React4.useLayoutEffect(() => {
|
|
25223
|
+
installImageInteractionListenersRef.current = installImageInteractionListeners;
|
|
25224
|
+
installChartInteractionListenersRef.current = installChartInteractionListeners;
|
|
25225
|
+
});
|
|
24197
25226
|
React4.useEffect(() => {
|
|
24198
25227
|
chartPreviewRectRef.current = chartPreviewRect;
|
|
24199
25228
|
}, [chartPreviewRect]);
|
|
@@ -25221,6 +26250,8 @@ function XlsxGrid({
|
|
|
25221
26250
|
const cellRenderCacheInvalidationRef = React4.useRef(null);
|
|
25222
26251
|
if (cellRenderCacheInvalidationRef.current !== cellRenderCacheInvalidationKey) {
|
|
25223
26252
|
cellRenderCacheRef.current.clear();
|
|
26253
|
+
cellBaseRawStyleCacheRef.current.clear();
|
|
26254
|
+
mergedBorderOverlayCacheRef.current.clear();
|
|
25224
26255
|
cellRenderCacheInvalidationRef.current = cellRenderCacheInvalidationKey;
|
|
25225
26256
|
}
|
|
25226
26257
|
const getCellData = React4.useCallback((row, col) => {
|
|
@@ -25259,13 +26290,64 @@ function XlsxGrid({
|
|
|
25259
26290
|
return mergedSecondaryData;
|
|
25260
26291
|
}
|
|
25261
26292
|
const merge = worksheet ? worksheet.getMergeSpan(row, col) : batchCoversRow ? batchedCell?.mergeSpan : null;
|
|
25262
|
-
const
|
|
25263
|
-
|
|
25264
|
-
|
|
26293
|
+
const resolveBaseResolvedStyle = (targetRow, targetCol) => {
|
|
26294
|
+
const targetCacheKey = `${targetRow}:${targetCol}`;
|
|
26295
|
+
const cachedBaseStyle = cellBaseRawStyleCacheRef.current.get(targetCacheKey);
|
|
26296
|
+
if (cachedBaseStyle !== void 0) {
|
|
26297
|
+
return cachedBaseStyle;
|
|
26298
|
+
}
|
|
26299
|
+
const targetBatchCoversRow = viewportRowBatch ? targetRow >= viewportRowBatch.startRow && targetRow <= viewportRowBatch.endRow : false;
|
|
26300
|
+
const targetBatchedCell = targetBatchCoversRow ? viewportRowBatch?.cells.get(targetCacheKey) : void 0;
|
|
26301
|
+
const targetInheritedStyle = resolveInheritedCellStyle2(activeSheet, targetRow, targetCol);
|
|
26302
|
+
const targetWorksheetStyle = targetBatchCoversRow ? targetBatchedCell?.style ?? null : worksheet?.getCellStyleAt(targetRow, targetCol) ?? null;
|
|
26303
|
+
const targetRawStyle = mergeResolvedCellStyle(targetInheritedStyle, targetWorksheetStyle, {
|
|
26304
|
+
replaceXfSubtrees: true
|
|
26305
|
+
});
|
|
26306
|
+
const targetTable = getTableAtCell(effectiveTables, targetRow, targetCol);
|
|
26307
|
+
const targetTableStyle = resolveTableCellStyle(targetTable, targetRow, targetCol, activeSheet);
|
|
26308
|
+
const resolvedStyle = mergeResolvedCellStyle(targetRawStyle, targetTableStyle);
|
|
26309
|
+
cellBaseRawStyleCacheRef.current.set(targetCacheKey, resolvedStyle);
|
|
26310
|
+
return resolvedStyle;
|
|
26311
|
+
};
|
|
25265
26312
|
const table = getTableAtCell(effectiveTables, row, col);
|
|
25266
|
-
const
|
|
25267
|
-
const
|
|
25268
|
-
|
|
26313
|
+
const mergeRowSpan = Math.max(1, merge?.rowSpan ?? 1);
|
|
26314
|
+
const mergeColSpan = Math.max(1, merge?.colSpan ?? 1);
|
|
26315
|
+
let mergedBorderOverlay = null;
|
|
26316
|
+
if (mergeRowSpan > 1 || mergeColSpan > 1) {
|
|
26317
|
+
const mergedBorderOverlayCacheKey = `${row}:${col}:${mergeRowSpan}:${mergeColSpan}`;
|
|
26318
|
+
const cachedOverlay = mergedBorderOverlayCacheRef.current.get(mergedBorderOverlayCacheKey);
|
|
26319
|
+
if (cachedOverlay !== void 0) {
|
|
26320
|
+
mergedBorderOverlay = cachedOverlay;
|
|
26321
|
+
} else {
|
|
26322
|
+
mergedBorderOverlay = resolveMergedRegionBorderOverlay(
|
|
26323
|
+
row,
|
|
26324
|
+
col,
|
|
26325
|
+
merge,
|
|
26326
|
+
(targetRow, targetCol) => resolveBaseResolvedStyle(targetRow, targetCol)
|
|
26327
|
+
);
|
|
26328
|
+
mergedBorderOverlayCacheRef.current.set(mergedBorderOverlayCacheKey, mergedBorderOverlay);
|
|
26329
|
+
}
|
|
26330
|
+
}
|
|
26331
|
+
const baseResolvedStyle = resolveBaseResolvedStyle(row, col);
|
|
26332
|
+
const resolvedMergedStyle = mergeResolvedCellStyle(baseResolvedStyle, mergedBorderOverlay);
|
|
26333
|
+
let displayValue = null;
|
|
26334
|
+
const readDisplayValue = () => {
|
|
26335
|
+
if (displayValue === null) {
|
|
26336
|
+
displayValue = batchCoversRow || !worksheet ? batchedCell?.value ?? "" : getCellDisplayValue(worksheet, row, col, activeSheet);
|
|
26337
|
+
}
|
|
26338
|
+
return displayValue;
|
|
26339
|
+
};
|
|
26340
|
+
const conditionalCellStyle = resolveConditionalCellStyleForCell(
|
|
26341
|
+
row,
|
|
26342
|
+
col,
|
|
26343
|
+
activeSheet,
|
|
26344
|
+
() => worksheet ? getCellNumericValue(worksheet, row, col) : getBatchedCellNumericValue(batchedCell),
|
|
26345
|
+
readDisplayValue,
|
|
26346
|
+
worksheet,
|
|
26347
|
+
viewportRowBatch?.cells
|
|
26348
|
+
);
|
|
26349
|
+
const finalResolvedStyle = mergeResolvedCellStyle(resolvedMergedStyle, conditionalCellStyle);
|
|
26350
|
+
const alignment = finalResolvedStyle?.alignment;
|
|
25269
26351
|
const textRotationDeg = resolveSpreadsheetTextRotation(alignment?.textRotation);
|
|
25270
26352
|
const headerRowCount = table ? Math.max(table.headerRowCount, 1) : 0;
|
|
25271
26353
|
const rawHyperlink = batchCoversRow ? batchedCell?.hyperlink : worksheet?.getHyperlinkAt(row, col);
|
|
@@ -25285,7 +26367,7 @@ function XlsxGrid({
|
|
|
25285
26367
|
sparkline.range.start.col
|
|
25286
26368
|
)
|
|
25287
26369
|
) : null;
|
|
25288
|
-
const checkboxState =
|
|
26370
|
+
const checkboxState = finalResolvedStyle?.cellControl && worksheet ? getCellBooleanValue(worksheet, row, col) : null;
|
|
25289
26371
|
const chartHighlight = resolveCellChartHighlight({ row, col }, activeSheetChartHighlights);
|
|
25290
26372
|
const nextData = {
|
|
25291
26373
|
canvas: void 0,
|
|
@@ -25319,12 +26401,12 @@ function XlsxGrid({
|
|
|
25319
26401
|
isTableHeader: Boolean(table && row >= table.start.row && row < table.start.row + headerRowCount),
|
|
25320
26402
|
rowSpan: merge?.rowSpan,
|
|
25321
26403
|
sparkline: sparkline && sparklineValues ? { config: sparkline, values: sparklineValues } : null,
|
|
25322
|
-
style: scaleCssProperties(buildCellStyle(
|
|
26404
|
+
style: scaleCssProperties(buildCellStyle(finalResolvedStyle, palette, activeSheet?.themePalette, {
|
|
25323
26405
|
showGridLines: activeSheet?.showGridLines
|
|
25324
26406
|
}), zoomFactor),
|
|
25325
26407
|
textRotationDeg,
|
|
25326
26408
|
validation: resolveCellDataValidation(row, col, activeSheet),
|
|
25327
|
-
value: sparkline ? "" : checkboxState !== null ? "" :
|
|
26409
|
+
value: sparkline ? "" : checkboxState !== null ? "" : readDisplayValue()
|
|
25328
26410
|
};
|
|
25329
26411
|
if (getCellStyle) {
|
|
25330
26412
|
const styleOverrides = getCellStyle({
|
|
@@ -25350,6 +26432,7 @@ function XlsxGrid({
|
|
|
25350
26432
|
}
|
|
25351
26433
|
}
|
|
25352
26434
|
nextData.canvas = buildCanvasCellStyleCache(nextData.style);
|
|
26435
|
+
cellRenderCacheRef.current.set(cacheKey, nextData);
|
|
25353
26436
|
if (canCellTextOverflow(nextData)) {
|
|
25354
26437
|
const startColIndex = colIndexByActual.get(col);
|
|
25355
26438
|
if (startColIndex !== void 0) {
|
|
@@ -25362,9 +26445,13 @@ function XlsxGrid({
|
|
|
25362
26445
|
displayEffectiveColWidths[startColIndex] ?? displayDefaultColWidth,
|
|
25363
26446
|
sumPrefixRange(colPrefixSums, startColIndex, endColIndex)
|
|
25364
26447
|
);
|
|
26448
|
+
const align = nextData.style.textAlign;
|
|
26449
|
+
const spillSide = align === "right" || align === "end" ? "left" : "right";
|
|
25365
26450
|
let availableWidth = baseWidth;
|
|
25366
26451
|
if (requiredWidth > availableWidth) {
|
|
25367
|
-
|
|
26452
|
+
const nextColStep = spillSide === "left" ? -1 : 1;
|
|
26453
|
+
let nextColIndex = spillSide === "left" ? startColIndex - 1 : endColIndex + 1;
|
|
26454
|
+
while (nextColIndex >= 0 && nextColIndex < visibleCols.length) {
|
|
25368
26455
|
const nextActualCol = visibleCols[nextColIndex];
|
|
25369
26456
|
if (nextActualCol === void 0) {
|
|
25370
26457
|
break;
|
|
@@ -25377,9 +26464,12 @@ function XlsxGrid({
|
|
|
25377
26464
|
if (requiredWidth <= availableWidth) {
|
|
25378
26465
|
break;
|
|
25379
26466
|
}
|
|
26467
|
+
nextColIndex += nextColStep;
|
|
25380
26468
|
}
|
|
25381
26469
|
if (availableWidth > baseWidth) {
|
|
25382
26470
|
nextData.spillWidth = Math.max(0, availableWidth - horizontalPadding);
|
|
26471
|
+
nextData.spillSide = spillSide;
|
|
26472
|
+
nextData.spillOffsetX = spillSide === "left" ? Math.min(0, baseWidth - availableWidth) : 0;
|
|
25383
26473
|
}
|
|
25384
26474
|
}
|
|
25385
26475
|
}
|
|
@@ -25424,7 +26514,6 @@ function XlsxGrid({
|
|
|
25424
26514
|
}
|
|
25425
26515
|
}
|
|
25426
26516
|
}
|
|
25427
|
-
cellRenderCacheRef.current.set(cacheKey, nextData);
|
|
25428
26517
|
return nextData;
|
|
25429
26518
|
}, [
|
|
25430
26519
|
activeSheet,
|
|
@@ -27594,11 +28683,13 @@ function XlsxGrid({
|
|
|
27594
28683
|
top: (useFrozenVerticalPosition ? stickyTopByRow.get(drawCell.row) ?? baseTop - drawingViewport.top : baseTop - drawingViewport.top) - paneBoundsForCell.top,
|
|
27595
28684
|
width: displayRect?.width ?? (displayEffectiveColWidths[drawColIndex] ?? colItem.size)
|
|
27596
28685
|
};
|
|
28686
|
+
const spillOffsetX = Math.min(0, cellData.spillOffsetX ?? 0);
|
|
28687
|
+
const drawableLeft = localRect.left + spillOffsetX;
|
|
27597
28688
|
const drawableWidth = Math.max(localRect.width, cellData.spillWidth ?? 0);
|
|
27598
|
-
if (
|
|
28689
|
+
if (drawableLeft + drawableWidth < 0 || localRect.top + localRect.height < 0 || drawableLeft > paneBoundsForCell.width || localRect.top > paneBoundsForCell.height) {
|
|
27599
28690
|
continue;
|
|
27600
28691
|
}
|
|
27601
|
-
if (!intersectsCanvasDirtyRects(
|
|
28692
|
+
if (!intersectsCanvasDirtyRects(drawableLeft, localRect.top, drawableWidth, localRect.height, paneDirtyRects)) {
|
|
27602
28693
|
canvasProfileCulledCells += 1;
|
|
27603
28694
|
continue;
|
|
27604
28695
|
}
|
|
@@ -27648,11 +28739,27 @@ function XlsxGrid({
|
|
|
27648
28739
|
const bottomBorder = canvasCellStyle.bottomBorder;
|
|
27649
28740
|
const leftBorder = canvasCellStyle.leftBorder;
|
|
27650
28741
|
const rightNeighborCol = visibleCols[drawColIndex + Math.max(1, cellData.colSpan ?? 1)];
|
|
27651
|
-
const
|
|
27652
|
-
const
|
|
28742
|
+
const rightNeighborCell = rightNeighborCol === void 0 ? null : { row: drawCell.row, col: rightNeighborCol };
|
|
28743
|
+
const rightNeighborData = rightNeighborCell ? getCellData(rightNeighborCell.row, rightNeighborCell.col) : null;
|
|
28744
|
+
let rightNeighborLeftBorder = rightNeighborData?.isMergedSecondary ? null : rightNeighborData?.canvas?.leftBorder ?? parseCanvasBorderDeclaration(rightNeighborData?.style.borderLeft);
|
|
28745
|
+
if (rightNeighborLeftBorder == null && rightNeighborCell && rightNeighborData?.isMergedSecondary) {
|
|
28746
|
+
const rightNeighborAnchorCell = resolveMergeAnchorCell(rightNeighborCell);
|
|
28747
|
+
if (rightNeighborAnchorCell.col === rightNeighborCell.col) {
|
|
28748
|
+
const rightNeighborAnchorData = getCellData(rightNeighborAnchorCell.row, rightNeighborAnchorCell.col);
|
|
28749
|
+
rightNeighborLeftBorder = rightNeighborAnchorData.isMergedSecondary ? null : rightNeighborAnchorData.canvas?.leftBorder ?? parseCanvasBorderDeclaration(rightNeighborAnchorData.style.borderLeft);
|
|
28750
|
+
}
|
|
28751
|
+
}
|
|
27653
28752
|
const bottomNeighborRow = visibleRows[drawRowIndex + Math.max(1, cellData.rowSpan ?? 1)];
|
|
27654
|
-
const
|
|
27655
|
-
const
|
|
28753
|
+
const bottomNeighborCell = bottomNeighborRow === void 0 ? null : { row: bottomNeighborRow, col: drawCell.col };
|
|
28754
|
+
const bottomNeighborData = bottomNeighborCell ? getCellData(bottomNeighborCell.row, bottomNeighborCell.col) : null;
|
|
28755
|
+
let bottomNeighborTopBorder = bottomNeighborData?.isMergedSecondary ? null : bottomNeighborData?.canvas?.topBorder ?? parseCanvasBorderDeclaration(bottomNeighborData?.style.borderTop);
|
|
28756
|
+
if (bottomNeighborTopBorder == null && bottomNeighborCell && bottomNeighborData?.isMergedSecondary) {
|
|
28757
|
+
const bottomNeighborAnchorCell = resolveMergeAnchorCell(bottomNeighborCell);
|
|
28758
|
+
if (bottomNeighborAnchorCell.row === bottomNeighborCell.row) {
|
|
28759
|
+
const bottomNeighborAnchorData = getCellData(bottomNeighborAnchorCell.row, bottomNeighborAnchorCell.col);
|
|
28760
|
+
bottomNeighborTopBorder = bottomNeighborAnchorData.isMergedSecondary ? null : bottomNeighborAnchorData.canvas?.topBorder ?? parseCanvasBorderDeclaration(bottomNeighborAnchorData.style.borderTop);
|
|
28761
|
+
}
|
|
28762
|
+
}
|
|
27656
28763
|
const resolvedRightBorder = resolveCanvasBoundaryBorder(rightBorder, rightNeighborLeftBorder);
|
|
27657
28764
|
const resolvedBottomBorder = resolveCanvasBoundaryBorder(bottomBorder, bottomNeighborTopBorder);
|
|
27658
28765
|
if (showGridLines && (!resolvedRightBorder || !resolvedBottomBorder)) {
|
|
@@ -27901,10 +29008,11 @@ function XlsxGrid({
|
|
|
27901
29008
|
} else if (spillMaxWidth != null) {
|
|
27902
29009
|
const text = shouldEllipsizeText ? truncateCanvasText(paneContext, rawText, maxTextWidth) : rawText;
|
|
27903
29010
|
const textY = resolveCanvasTextMiddleY(cellStyle.verticalAlign, contentTop, contentHeight, singleLineHeight);
|
|
29011
|
+
const spillClipLeft = cellData.spillSide === "left" ? contentLeft + contentWidth - spillMaxWidth - textClipOverscan : contentLeft - textClipOverscan;
|
|
27904
29012
|
deferredSpillTextsByPane[pane].push({
|
|
27905
29013
|
align,
|
|
27906
29014
|
clipHeight: contentHeight + textClipOverscan * 2,
|
|
27907
|
-
clipLeft:
|
|
29015
|
+
clipLeft: spillClipLeft,
|
|
27908
29016
|
clipTop: contentTop - textClipOverscan,
|
|
27909
29017
|
clipWidth: spillMaxWidth + textClipOverscan * 2,
|
|
27910
29018
|
color: textColor,
|
|
@@ -28228,7 +29336,7 @@ function XlsxGrid({
|
|
|
28228
29336
|
setInteractionMode("select");
|
|
28229
29337
|
document.body.style.cursor = "move";
|
|
28230
29338
|
document.body.style.userSelect = "none";
|
|
28231
|
-
|
|
29339
|
+
installChartInteractionListenersRef.current(event.pointerId);
|
|
28232
29340
|
}, [focusGrid, selectChart]);
|
|
28233
29341
|
const startChartResize = React4.useCallback((event, chart, rect, handle) => {
|
|
28234
29342
|
if (readOnlyRef.current || chart.editable === false || event.button !== 0) {
|
|
@@ -28254,7 +29362,7 @@ function XlsxGrid({
|
|
|
28254
29362
|
setInteractionMode("select");
|
|
28255
29363
|
document.body.style.cursor = String(IMAGE_HANDLE_CURSOR[handle]);
|
|
28256
29364
|
document.body.style.userSelect = "none";
|
|
28257
|
-
|
|
29365
|
+
installChartInteractionListenersRef.current(event.pointerId);
|
|
28258
29366
|
}, [focusGrid, selectChart]);
|
|
28259
29367
|
const startImageMove = React4.useCallback((event, image, rect) => {
|
|
28260
29368
|
if (event.button !== 0) {
|
|
@@ -28282,7 +29390,7 @@ function XlsxGrid({
|
|
|
28282
29390
|
setInteractionMode("select");
|
|
28283
29391
|
document.body.style.cursor = "move";
|
|
28284
29392
|
document.body.style.userSelect = "none";
|
|
28285
|
-
|
|
29393
|
+
installImageInteractionListenersRef.current(event.pointerId);
|
|
28286
29394
|
}, [focusGrid, selectImage]);
|
|
28287
29395
|
const startImageResize = React4.useCallback((event, image, rect, handle) => {
|
|
28288
29396
|
if (readOnlyRef.current || image.editable === false || event.button !== 0) {
|
|
@@ -28308,7 +29416,7 @@ function XlsxGrid({
|
|
|
28308
29416
|
setInteractionMode("select");
|
|
28309
29417
|
document.body.style.cursor = String(IMAGE_HANDLE_CURSOR[handle]);
|
|
28310
29418
|
document.body.style.userSelect = "none";
|
|
28311
|
-
|
|
29419
|
+
installImageInteractionListenersRef.current(event.pointerId);
|
|
28312
29420
|
}, [focusGrid, selectImage]);
|
|
28313
29421
|
const handleImageClick = React4.useCallback((image) => {
|
|
28314
29422
|
if (skipNextImageClickRef.current === image.id) {
|
|
@@ -29676,7 +30784,10 @@ function XlsxGrid({
|
|
|
29676
30784
|
skipNextImageClickRef.current = interaction.imageId;
|
|
29677
30785
|
}
|
|
29678
30786
|
if (interaction.didMove && finalRect) {
|
|
29679
|
-
setImageRect(interaction.imageId, toLogicalRect(finalRect)
|
|
30787
|
+
setImageRect(interaction.imageId, toLogicalRect(finalRect), {
|
|
30788
|
+
columnWidths: actualColWidths,
|
|
30789
|
+
rowHeights: actualRowHeights
|
|
30790
|
+
});
|
|
29680
30791
|
}
|
|
29681
30792
|
}
|
|
29682
30793
|
imagePreviewRectRef.current = null;
|
|
@@ -29753,7 +30864,10 @@ function XlsxGrid({
|
|
|
29753
30864
|
skipNextChartClickRef.current = interaction.chartId;
|
|
29754
30865
|
}
|
|
29755
30866
|
if (interaction.didMove && finalRect) {
|
|
29756
|
-
setChartRect(interaction.chartId, toLogicalRect(finalRect)
|
|
30867
|
+
setChartRect(interaction.chartId, toLogicalRect(finalRect), {
|
|
30868
|
+
columnWidths: actualColWidths,
|
|
30869
|
+
rowHeights: actualRowHeights
|
|
30870
|
+
});
|
|
29757
30871
|
}
|
|
29758
30872
|
}
|
|
29759
30873
|
chartPreviewRectRef.current = null;
|
|
@@ -31592,7 +32706,17 @@ function useXlsxViewerThumbnails(options = {}) {
|
|
|
31592
32706
|
const inheritedStyle = resolveInheritedCellStyle2(sheet, row, col);
|
|
31593
32707
|
const worksheetStyle = worksheet ? worksheet.getCellStyleAt(row, col) ?? null : batchedCell?.style ?? null;
|
|
31594
32708
|
const mergedStyle = mergeResolvedCellStyle(inheritedStyle, worksheetStyle, { replaceXfSubtrees: true });
|
|
31595
|
-
const
|
|
32709
|
+
const conditionalCellStyle = resolveConditionalCellStyleForCell(
|
|
32710
|
+
row,
|
|
32711
|
+
col,
|
|
32712
|
+
sheet,
|
|
32713
|
+
() => worksheet ? getCellNumericValue(worksheet, row, col) : getBatchedCellNumericValue(batchedCell),
|
|
32714
|
+
() => worksheet ? getCellDisplayValue(worksheet, row, col, sheet) : batchedCell?.value ?? "",
|
|
32715
|
+
worksheet,
|
|
32716
|
+
workerRowBatch?.cells
|
|
32717
|
+
);
|
|
32718
|
+
const finalResolvedStyle = mergeResolvedCellStyle(mergedStyle, conditionalCellStyle);
|
|
32719
|
+
const alignment = finalResolvedStyle?.alignment;
|
|
31596
32720
|
const sparkline = sparklineByCell.get(cacheKey) ?? null;
|
|
31597
32721
|
const getNumericValue = (targetRow, targetCol) => worksheet ? getCellNumericValue(worksheet, targetRow, targetCol) : getBatchedCellNumericValue(workerRowBatch?.cells.get(`${targetRow}:${targetCol}`));
|
|
31598
32722
|
const sparklineValues = sparkline ? sparkline.range.start.row === sparkline.range.end.row ? Array.from(
|
|
@@ -31608,7 +32732,7 @@ function useXlsxViewerThumbnails(options = {}) {
|
|
|
31608
32732
|
sparkline.range.start.col
|
|
31609
32733
|
)
|
|
31610
32734
|
) : null;
|
|
31611
|
-
const checkboxState =
|
|
32735
|
+
const checkboxState = finalResolvedStyle?.cellControl ? worksheet ? getCellBooleanValue(worksheet, row, col) : getBatchedCellBooleanValue(batchedCell) : null;
|
|
31612
32736
|
const nextData = {
|
|
31613
32737
|
canvas: void 0,
|
|
31614
32738
|
checkboxState,
|
|
@@ -31619,7 +32743,7 @@ function useXlsxViewerThumbnails(options = {}) {
|
|
|
31619
32743
|
isMergedSecondary: false,
|
|
31620
32744
|
rowSpan: merge?.rowSpan,
|
|
31621
32745
|
sparkline: sparkline && sparklineValues ? { config: sparkline, values: sparklineValues } : null,
|
|
31622
|
-
style: buildCellStyle(
|
|
32746
|
+
style: buildCellStyle(finalResolvedStyle, palette, sheet.themePalette, {
|
|
31623
32747
|
showGridLines
|
|
31624
32748
|
}),
|
|
31625
32749
|
textRotationDeg: resolveSpreadsheetTextRotation(alignment?.textRotation),
|