diff --git a/package-lock.json b/package-lock.json index 0241ff8..95f0c95 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12,7 +12,7 @@ "@borgar/fx": "~5.0.5", "@borgar/simple-xml": "~2.2.2", "@borgar/zip": "~1.0.0", - "@jsfkit/types": "~2.5.0", + "@jsfkit/types": "~2.6.0", "@jsfkit/utils": "~1.2.0", "numfmt": "~3.2.6" }, @@ -997,9 +997,9 @@ } }, "node_modules/@jsfkit/types": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@jsfkit/types/-/types-2.5.0.tgz", - "integrity": "sha512-HtwwB1Jm1OSwWVulCzpEH73/X92caWOYVLKJ+OrQIuSDG9X/9vFq4gn6GWJ/RZvshARqWoFBAhlak6gMShh1HA==", + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@jsfkit/types/-/types-2.6.0.tgz", + "integrity": "sha512-AWdQjHHrs1Iv/4vBRu//zExD3x/qzd24gEDAJjVuAmS1OyrUr4gQENgppTYsmipgKsoUX775Tfo84Z0JeNsy9w==", "license": "MIT" }, "node_modules/@jsfkit/utils": { diff --git a/package.json b/package.json index 560a067..d773248 100644 --- a/package.json +++ b/package.json @@ -85,7 +85,7 @@ "@borgar/fx": "~5.0.5", "@borgar/simple-xml": "~2.2.2", "@borgar/zip": "~1.0.0", - "@jsfkit/types": "~2.5.0", + "@jsfkit/types": "~2.6.0", "@jsfkit/utils": "~1.2.0", "numfmt": "~3.2.6" }, diff --git a/src/handler/worksheet.spec.ts b/src/handler/worksheet.spec.ts index f4d3e91..ee4e716 100644 --- a/src/handler/worksheet.spec.ts +++ b/src/handler/worksheet.spec.ts @@ -96,3 +96,211 @@ describe('handlerWorksheet selection', () => { expect(sheet.views![0]?.activeRanges).toEqual([ 'A1:D4', 'C3:G8' ]); }); }); + +describe('handlerWorksheet sheetViews', () => { + it('defaults to no frozen panes', () => { + const sheet = parseSheet( + SHEET_OPEN + + ` + + ` + + SHEET_CLOSE, + ); + expect(sheet.views).toBeUndefined(); + }); + + it('includes two frozen panes vertically split ', () => { + const sheetViews = ` + + + + + `; + const sheet = parseSheet(SHEET_OPEN + sheetViews + SHEET_CLOSE); + expect(sheet.views).toHaveLength(1); + const view = sheet.views![0]; + expect(view.panes).toEqual({ + type: 'frozen', + columns: 1, + firstVisibleCell: 'C1', + activePane: 'topEnd', + }); + }); + + it('includes two frozen panes horizontally split ', () => { + const sheetViews = ` + + + + + `; + const sheet = parseSheet(SHEET_OPEN + sheetViews + SHEET_CLOSE); + expect(sheet.views).toHaveLength(1); + const view = sheet.views![0]; + expect(view.panes).toEqual({ + type: 'frozen', + rows: 2, + firstVisibleCell: 'A3', + activePane: 'bottomStart', + }); + }); + + it('includes four frozen panes', () => { + const sheetViews = ` + + + + + `; + const sheet = parseSheet(SHEET_OPEN + sheetViews + SHEET_CLOSE); + expect(sheet.views).toHaveLength(1); + const view = sheet.views![0]; + expect(view.workbookView).toEqual(42); + expect(view.panes).toEqual({ + type: 'frozen', + columns: 1, + rows: 2, + firstVisibleCell: 'B9', + activePane: 'bottomEnd', + }); + }); + + it('parses "frozenSplit" panes', () => { + const sheetViews = ` + + + + + + + + `; + const sheet = parseSheet(SHEET_OPEN + sheetViews + SHEET_CLOSE); + expect(sheet.views).toHaveLength(1); + const view = sheet.views![0]; + expect(view.workbookView).toEqual(0); + expect(view.panes).toEqual({ + type: 'frozen', + columns: 10, + rows: 19, + firstVisibleCell: 'K20', + activePane: 'bottomEnd', + }); + }); + + it('ignores default frozen panes', () => { + const sheetViews = ` + + + + + `; + const sheet = parseSheet(SHEET_OPEN + sheetViews + SHEET_CLOSE); + expect(sheet.views).toBeUndefined(); + }); + + it('ignores frozen panes with a zero split but valid topLeftCell and activePane attributes', () => { + const sheetViews = ` + + + + + `; + const sheet = parseSheet(SHEET_OPEN + sheetViews + SHEET_CLOSE); + expect(sheet.views).toBeUndefined(); + }); + + it('handles default selection in frozen panes', () => { + const sheetViews = ` + + + + + + + `; + const sheet = parseSheet(SHEET_OPEN + sheetViews + SHEET_CLOSE); + expect(sheet.views![0].activeCell).toEqual('C1'); + }); + + it('handles selection in frozen panes', () => { + const sheetViews = ` + + + + + + + + + `; + const sheet = parseSheet(SHEET_OPEN + sheetViews + SHEET_CLOSE); + expect(sheet.views![0].activeCell).toEqual('A3'); + }); + + it('omits firstVisibleCell when a frozen pane has no topLeftCell', () => { + const sheetViews = ` + + + + + + `; + const sheet = parseSheet(SHEET_OPEN + sheetViews + SHEET_CLOSE); + expect(sheet.views).toHaveLength(1); + expect(sheet.views![0].panes).toBeDefined(); + expect(sheet.views![0].panes!.firstVisibleCell).toBeUndefined(); + }); + + it('omits activePane when a frozen pane uses default activePane="topLeft"', () => { + const sheetViews = ` + + + + + + `; + const sheet = parseSheet(SHEET_OPEN + sheetViews + SHEET_CLOSE); + expect(sheet.views).toHaveLength(1); + expect(sheet.views![0].panes).toBeDefined(); + expect(sheet.views![0].panes!.activePane).toBeUndefined(); + }); + + it('discards implicitly split panes ( has no state attribute)', () => { + const sheetViews = ` + + + + + + + + + `; + const sheet = parseSheet(SHEET_OPEN + sheetViews + SHEET_CLOSE); + expect(sheet.views).toHaveLength(1); + expect(sheet.views![0]).toEqual({ + activeCell: 'F9', + workbookView: 0, + }); + }); + + it('discards explicitly split panes ()', () => { + const sheetViews = ` + + + + + + + + + `; + const sheet = parseSheet(SHEET_OPEN + sheetViews + SHEET_CLOSE); + expect(sheet.views).toHaveLength(1); + expect(sheet.views![0]).toEqual({ + activeCell: 'F9', + workbookView: 0, + }); + }); +}); diff --git a/src/handler/worksheet.ts b/src/handler/worksheet.ts index a7a1a4a..ffe01a2 100644 --- a/src/handler/worksheet.ts +++ b/src/handler/worksheet.ts @@ -1,4 +1,4 @@ -import type { GridSize, PageMargins, Worksheet, WorksheetLayoutScales, WorksheetView } from '@jsfkit/types'; +import type { GridSize, PageMargins, Worksheet, WorksheetLayoutScales, WorksheetView, WorksheetViewFrozenPanes } from '@jsfkit/types'; import { Document, Element } from '@borgar/simple-xml'; import { attr, boolAttr, numAttr } from '../utils/attr.ts'; import { rle } from '../utils/rle.ts'; @@ -13,6 +13,15 @@ import { toInt } from '../utils/typecast.ts'; import { addProp } from '../utils/addProp.ts'; import { DEFAULT_PAGE_MARGINS } from '../constants.ts'; +type ExcelFrozenPaneLocation = 'topLeft' | 'topRight' | 'bottomLeft' | 'bottomRight'; +type JSFFrozenPaneLocation = NonNullable; +const FROZEN_PANE_LOCATIONS: Record = { + topLeft: 'topStart', + topRight: 'topEnd', + bottomLeft: 'bottomStart', + bottomRight: 'bottomEnd', +}; + /** * Extracts zoom levels (layout scales) for the different view modes for a sheet. * @@ -62,10 +71,7 @@ export function handlerWorksheet ( hidden: context.sheetLinks.find(link => link.name === sheetName)?.hidden ?? 0, }; - // Store last selected cell and/or range (both optional) for each of the sheet's view. A sheet - // view may be split into four panes, although of course most aren't. But to cover that case we - // need to find the active pane then find its active cell. When there's only one pane (i.e. almost - // all spreadsheets), you look for the default pane, "topLeft". + // Store the sheet's views (layout, zoom level, selected cell/range, frozen panes). const views: WorksheetView[] = []; const sheetViews = dom.querySelectorAll('sheetViews > sheetView'); sheetViews.forEach(sheetView => { @@ -74,8 +80,34 @@ export function handlerWorksheet ( if (activeLayout === 'normal' || activeLayout === 'pageLayout' || activeLayout === 'pageBreakPreview') { view.activeLayout = activeLayout; } + + // Sheet views can be split into two panes (horizontally or vertically), or four panes + // (quadrants). When they're split, they can be "split panes" (four different views of the full + // sheet) or "frozen panes" (one view of the sheet but with fixed header rows and/or columns). + // Split panes have been around forever, but frozen panes are more common. Only frozen panes are + // supported here. const pane = getFirstChild(sheetView, 'pane'); - const activePane = pane ? attr(pane, 'activePane', 'topLeft') : 'topLeft'; + const activePane = ( + pane ? attr(pane, 'activePane', 'topLeft') : 'topLeft' + ) as ExcelFrozenPaneLocation; + if (pane && (attr(pane, 'state') === 'frozen' || attr(pane, 'state') === 'frozenSplit')) { + const columnSplit = numAttr(pane, 'xSplit', 0); + const rowSplit = numAttr(pane, 'ySplit', 0); + const firstVisibleCell = attr(pane, 'topLeftCell'); + + // If a view contains frozen panes, find which row and column they're split on, where the + // non-frozen pane is scrolled to, and which pane is active. + if (columnSplit !== 0 || rowSplit !== 0) { + view.panes = { type: 'frozen' }; + addProp(view.panes, 'columns', columnSplit, 0); + addProp(view.panes, 'rows', rowSplit, 0); + addProp(view.panes, 'firstVisibleCell', firstVisibleCell, ''); + addProp(view.panes, 'activePane', FROZEN_PANE_LOCATIONS[activePane], 'topStart'); + } + } + + // Which cell/range is selected within which pane? If there are no frozen panes, OOXML pretends + // there's a single "topLeft" pane that defines the selection. const selection = sheetView.children .find(el => el.tagName === 'selection' && attr(el, 'pane', 'topLeft') === activePane); if (selection) { @@ -88,6 +120,7 @@ export function handlerWorksheet ( view.activeRanges = activeRanges; } } + addProp(view, 'showGridLines', boolAttr(sheetView, 'showGridLines'), true); addProp(view, 'layoutScales', getLayoutScales(sheetView)); diff --git a/tests/excel/freeze-panes.xlsx b/tests/excel/freeze-panes.xlsx new file mode 100644 index 0000000..b79deb4 Binary files /dev/null and b/tests/excel/freeze-panes.xlsx differ diff --git a/tests/excel/freeze-panes.xlsx.json b/tests/excel/freeze-panes.xlsx.json new file mode 100644 index 0000000..7c77c05 --- /dev/null +++ b/tests/excel/freeze-panes.xlsx.json @@ -0,0 +1,1059 @@ +{ + "name": "freeze-panes.xlsx", + "sheets": [ + { + "name": "VIS01000", + "cells": { + "A1": { + "s": 1, + "v": "Consumer price index and changes, base 1988=100" + }, + "B2": { "s": 2, "v": "Monthly change, %" }, + "A3": { "s": 2, "v": "1988M05" }, + "B3": { "s": 3, "v": "." }, + "A4": { "s": 2, "v": "1988M06" }, + "B4": { "s": 4, "v": 3.4 }, + "A5": { "s": 2, "v": "1988M07" }, + "B5": { "s": 4, "v": 3.48 }, + "A6": { "s": 2, "v": "1988M08" }, + "B6": { "s": 4, "v": 2.15 }, + "A7": { "s": 2, "v": "1988M09" }, + "B7": { "s": 4, "v": 0.64 }, + "A8": { "s": 2, "v": "1988M10" }, + "B8": { "s": 4, "v": 0.36 }, + "A9": { "s": 2, "v": "1988M11" }, + "B9": { "s": 4, "v": 0.09 }, + "A10": { "s": 2, "v": "1988M12" }, + "B10": { "s": 4, "v": 0.18 }, + "A11": { "s": 2, "v": "1989M01" }, + "B11": { "s": 4, "v": 1.72 }, + "A12": { "s": 2, "v": "1989M02" }, + "B12": { "s": 4, "v": 1.42 }, + "A13": { "s": 2, "v": "1989M03" }, + "B13": { "s": 4, "v": 2.8 }, + "A14": { "s": 2, "v": "1989M04" }, + "B14": { "s": 4, "v": 2.13 }, + "A15": { "s": 2, "v": "1989M05" }, + "B15": { "s": 4, "v": 2 }, + "A16": { "s": 2, "v": "1989M06" }, + "B16": { "s": 4, "v": 2.94 }, + "A17": { "s": 2, "v": "1989M07" }, + "B17": { "s": 4, "v": 0.71 }, + "A18": { "s": 2, "v": "1989M08" }, + "B18": { "s": 4, "v": 1.34 }, + "A19": { "s": 2, "v": "1989M09" }, + "B19": { "s": 4, "v": 2.02 }, + "A20": { "s": 2, "v": "1989M10" }, + "B20": { "s": 4, "v": 1.98 }, + "A21": { "s": 2, "v": "1989M11" }, + "B21": { "s": 4, "v": 1.5 }, + "A22": { "s": 2, "v": "1989M12" }, + "B22": { "s": 4, "v": 2.14 }, + "A23": { "s": 2, "v": "1990M01" }, + "B23": { "s": 4, "v": 0.51 }, + "A24": { "s": 2, "v": "1990M02" }, + "B24": { "s": 4, "v": 1.58 }, + "A25": { "s": 2, "v": "1990M03" }, + "B25": { "s": 4, "v": 0.85 }, + "A26": { "s": 2, "v": "1990M04" }, + "B26": { "s": 4, "v": 0.28 }, + "A27": { "s": 2, "v": "1990M05" }, + "B27": { "s": 4, "v": 0.91 }, + "A28": { "s": 2, "v": "1990M06" }, + "B28": { "s": 4, "v": 0.69 }, + "A29": { "s": 2, "v": "1990M07" }, + "B29": { "s": 4, "v": 0.69 }, + "A30": { "s": 2, "v": "1990M08" }, + "B30": { "s": 4, "v": 0.27 }, + "A31": { "s": 2, "v": "1990M09" }, + "B31": { "s": 4, "v": 0 }, + "A32": { "s": 2, "v": "1990M10" }, + "B32": { "s": 4, "v": 0.27 }, + "A33": { "s": 2, "v": "1990M11" }, + "B33": { "s": 4, "v": 0.68 }, + "A34": { "s": 2, "v": "1990M12" }, + "B34": { "s": 4, "v": 0.27 }, + "A35": { "s": 2, "v": "1991M01" }, + "B35": { "s": 4, "v": 0.61 }, + "A36": { "s": 2, "v": "1991M02" }, + "B36": { "s": 4, "v": 0.33 }, + "A37": { "s": 2, "v": "1991M03" }, + "B37": { "s": 4, "v": 0.2 }, + "A38": { "s": 2, "v": "1991M04" }, + "B38": { "s": 4, "v": 0.47 }, + "A39": { "s": 2, "v": "1991M05" }, + "B39": { "s": 4, "v": 1.19 }, + "A40": { "s": 2, "v": "1991M06" }, + "B40": { "s": 4, "v": 1.37 }, + "A41": { "s": 2, "v": "1991M07" }, + "B41": { "s": 4, "v": 0.71 }, + "A42": { "s": 2, "v": "1991M08" }, + "B42": { "s": 4, "v": 0.77 }, + "A43": { "s": 2, "v": "1991M09" }, + "B43": { "s": 4, "v": 0.57 }, + "A44": { "s": 2, "v": "1991M10" }, + "B44": { "s": 4, "v": 0.76 }, + "A45": { "s": 2, "v": "1991M11" }, + "B45": { "s": 4, "v": 0.44 }, + "A46": { "s": 2, "v": "1991M12" }, + "B46": { "s": 4, "v": -0.12 }, + "A47": { "s": 2, "v": "1992M01" }, + "B47": { "s": 4, "v": 0.25 }, + "A48": { "s": 2, "v": "1992M02" }, + "B48": { "s": 4, "v": 0.12 }, + "A49": { "s": 2, "v": "1992M03" }, + "B49": { "s": 4, "v": 0.12 }, + "A50": { "s": 2, "v": "1992M04" }, + "B50": { "s": 4, "v": 0 }, + "A51": { "s": 2, "v": "1992M05" }, + "B51": { "s": 4, "v": -0.06 }, + "A52": { "s": 2, "v": "1992M06" }, + "B52": { "s": 4, "v": 0.37 }, + "A53": { "s": 2, "v": "1992M07" }, + "B53": { "s": 4, "v": 0.19 }, + "A54": { "s": 2, "v": "1992M08" }, + "B54": { "s": 4, "v": 0 }, + "A55": { "s": 2, "v": "1992M09" }, + "B55": { "s": 4, "v": -0.06 }, + "A56": { "s": 2, "v": "1992M10" }, + "B56": { "s": 4, "v": 0.06 }, + "A57": { "s": 2, "v": "1992M11" }, + "B57": { "s": 4, "v": 0 }, + "A58": { "s": 2, "v": "1992M12" }, + "B58": { "s": 4, "v": 0.5 }, + "A59": { "s": 2, "v": "1993M01" }, + "B59": { "s": 4, "v": 1.17 }, + "A60": { "s": 2, "v": "1993M02" }, + "B60": { "s": 4, "v": 0.73 }, + "A61": { "s": 2, "v": "1993M03" }, + "B61": { "s": 4, "v": 0.06 }, + "A62": { "s": 2, "v": "1993M04" }, + "B62": { "s": 4, "v": 0.3 }, + "A63": { "s": 2, "v": "1993M05" }, + "B63": { "s": 4, "v": 0.24 }, + "A64": { "s": 2, "v": "1993M06" }, + "B64": { "s": 4, "v": -0.06 }, + "A65": { "s": 2, "v": "1993M07" }, + "B65": { "s": 4, "v": 0.9 }, + "A66": { "s": 2, "v": "1993M08" }, + "B66": { "s": 4, "v": 0.89 }, + "A67": { "s": 2, "v": "1993M09" }, + "B67": { "s": 4, "v": 0.35 }, + "A68": { "s": 2, "v": "1993M10" }, + "B68": { "s": 4, "v": 0.59 }, + "A69": { "s": 2, "v": "1993M11" }, + "B69": { "s": 4, "v": 0 }, + "A70": { "s": 2, "v": "1993M12" }, + "B70": { "s": 4, "v": -0.53 }, + "A71": { "s": 2, "v": "1994M01" }, + "B71": { "s": 4, "v": -0.35 }, + "A72": { "s": 2, "v": "1994M02" }, + "B72": { "s": 4, "v": 0.12 }, + "A73": { "s": 2, "v": "1994M03" }, + "B73": { "s": 4, "v": 0.12 }, + "A74": { "s": 2, "v": "1994M04" }, + "B74": { "s": 4, "v": 0.12 }, + "A75": { "s": 2, "v": "1994M05" }, + "B75": { "s": 4, "v": 0 }, + "A76": { "s": 2, "v": "1994M06" }, + "B76": { "s": 4, "v": 0.12 }, + "A77": { "s": 2, "v": "1994M07" }, + "B77": { "s": 4, "v": 0.18 }, + "A78": { "s": 2, "v": "1994M08" }, + "B78": { "s": 4, "v": 0.06 }, + "A79": { "s": 2, "v": "1994M09" }, + "B79": { "s": 4, "v": 0.29 }, + "A80": { "s": 2, "v": "1994M10" }, + "B80": { "s": 4, "v": -0.12 }, + "A81": { "s": 2, "v": "1994M11" }, + "B81": { "s": 4, "v": -0.06 }, + "A82": { "s": 2, "v": "1994M12" }, + "B82": { "s": 4, "v": 0.06 }, + "A83": { "s": 2, "v": "1995M01" }, + "B83": { "s": 4, "v": 0.76 }, + "A84": { "s": 2, "v": "1995M02" }, + "B84": { "s": 4, "v": 0.12 }, + "A85": { "s": 2, "v": "1995M03" }, + "B85": { "s": 4, "v": -0.17 }, + "A86": { "s": 2, "v": "1995M04" }, + "B86": { "s": 4, "v": -0.12 }, + "A87": { "s": 2, "v": "1995M05" }, + "B87": { "s": 4, "v": 0.17 }, + "A88": { "s": 2, "v": "1995M06" }, + "B88": { "s": 4, "v": 0.12 }, + "A89": { "s": 2, "v": "1995M07" }, + "B89": { "s": 4, "v": 0.29 }, + "A90": { "s": 2, "v": "1995M08" }, + "B90": { "s": 4, "v": 0.41 }, + "A91": { "s": 2, "v": "1995M09" }, + "B91": { "s": 4, "v": 0.35 }, + "A92": { "s": 2, "v": "1995M10" }, + "B92": { "s": 4, "v": 0.46 }, + "A93": { "s": 2, "v": "1995M11" }, + "B93": { "s": 4, "v": -0.34 }, + "A94": { "s": 2, "v": "1995M12" }, + "B94": { "s": 4, "v": -0.06 }, + "A95": { "s": 2, "v": "1996M01" }, + "B95": { "s": 4, "v": 0.4 }, + "A96": { "s": 2, "v": "1996M02" }, + "B96": { "s": 4, "v": 0.17 }, + "A97": { "s": 2, "v": "1996M03" }, + "B97": { "s": 4, "v": 0.17 }, + "A98": { "s": 2, "v": "1996M04" }, + "B98": { "s": 4, "v": 0.17 }, + "A99": { "s": 2, "v": "1996M05" }, + "B99": { "s": 4, "v": 0.63 }, + "A100": { "s": 2, "v": "1996M06" }, + "B100": { "s": 4, "v": -0.11 }, + "A101": { "s": 2, "v": "1996M07" }, + "B101": { "s": 4, "v": 0.11 }, + "A102": { "s": 2, "v": "1996M08" }, + "B102": { "s": 4, "v": 0.62 }, + "A103": { "s": 2, "v": "1996M09" }, + "B103": { "s": 4, "v": 0.22 }, + "A104": { "s": 2, "v": "1996M10" }, + "B104": { "s": 4, "v": 0.06 }, + "A105": { "s": 2, "v": "1996M11" }, + "B105": { "s": 4, "v": 0.06 }, + "A106": { "s": 2, "v": "1996M12" }, + "B106": { "s": 4, "v": -0.45 }, + "A107": { "s": 2, "v": "1997M01" }, + "B107": { "s": 4, "v": 0.34 }, + "A108": { "s": 2, "v": "1997M02" }, + "B108": { "s": 4, "v": 0.06 }, + "A109": { "s": 2, "v": "1997M03" }, + "B109": { "s": 4, "v": -0.06 }, + "A110": { "s": 2, "v": "1997M04" }, + "B110": { "s": 4, "v": 0.73 }, + "A111": { "s": 2, "v": "1997M05" }, + "B111": { "s": 4, "v": -0.17 }, + "A112": { "s": 2, "v": "1997M06" }, + "B112": { "s": 4, "v": 0.22 }, + "A113": { "s": 2, "v": "1997M07" }, + "B113": { "s": 4, "v": 0.17 }, + "A114": { "s": 2, "v": "1997M08" }, + "B114": { "s": 4, "v": 0.28 }, + "A115": { "s": 2, "v": "1997M09" }, + "B115": { "s": 4, "v": 0.39 }, + "A116": { "s": 2, "v": "1997M10" }, + "B116": { "s": 4, "v": 0.33 }, + "A117": { "s": 2, "v": "1997M11" }, + "B117": { "s": 4, "v": -0.11 }, + "A118": { "s": 2, "v": "1997M12" }, + "B118": { "s": 4, "v": -0.17 }, + "A119": { "s": 2, "v": "1998M01" }, + "B119": { "s": 4, "v": 0.55 }, + "A120": { "s": 2, "v": "1998M02" }, + "B120": { "s": 4, "v": -0.22 }, + "A121": { "s": 2, "v": "1998M03" }, + "B121": { "s": 4, "v": 0.38 }, + "A122": { "s": 2, "v": "1998M04" }, + "B122": { "s": 4, "v": 0.22 }, + "A123": { "s": 2, "v": "1998M05" }, + "B123": { "s": 4, "v": 0.33 }, + "A124": { "s": 2, "v": "1998M06" }, + "B124": { "s": 4, "v": 0.16 }, + "A125": { "s": 2, "v": "1998M07" }, + "B125": { "s": 4, "v": -0.22 }, + "A126": { "s": 2, "v": "1998M08" }, + "B126": { "s": 4, "v": -0.54 }, + "A127": { "s": 2, "v": "1998M09" }, + "B127": { "s": 4, "v": 0.11 }, + "A128": { "s": 2, "v": "1998M10" }, + "B128": { "s": 4, "v": 0.44 }, + "A129": { "s": 2, "v": "1998M11" }, + "B129": { "s": 4, "v": 0.27 }, + "A130": { "s": 2, "v": "1998M12" }, + "B130": { "s": 4, "v": -0.22 }, + "A131": { "s": 2, "v": "1999M01" }, + "B131": { "s": 4, "v": 0.6 }, + "A132": { "s": 2, "v": "1999M02" }, + "B132": { "s": 4, "v": -0.16 }, + "A133": { "s": 2, "v": "1999M03" }, + "B133": { "s": 4, "v": 0.49 }, + "A134": { "s": 2, "v": "1999M04" }, + "B134": { "s": 4, "v": 0.54 }, + "A135": { "s": 2, "v": "1999M05" }, + "B135": { "s": 4, "v": 0.48 }, + "A136": { "s": 2, "v": "1999M06" }, + "B136": { "s": 4, "v": 0.8 }, + "A137": { "s": 2, "v": "1999M07" }, + "B137": { "s": 4, "v": 0.37 }, + "A138": { "s": 2, "v": "1999M08" }, + "B138": { "s": 4, "v": 0.37 }, + "A139": { "s": 2, "v": "1999M09" }, + "B139": { "s": 4, "v": 0.84 }, + "A140": { "s": 2, "v": "1999M10" }, + "B140": { "s": 4, "v": 0.78 }, + "A141": { "s": 2, "v": "1999M11" }, + "B141": { "s": 4, "v": 0 }, + "A142": { "s": 2, "v": "1999M12" }, + "B142": { "s": 4, "v": 0.36 }, + "A143": { "s": 2, "v": "2000M01" }, + "B143": { "s": 4, "v": 0.77 }, + "A144": { "s": 2, "v": "2000M02" }, + "B144": { "s": 4, "v": -0.31 }, + "A145": { "s": 2, "v": "2000M03" }, + "B145": { "s": 4, "v": 0.77 }, + "A146": { "s": 2, "v": "2000M04" }, + "B146": { "s": 4, "v": 0.61 }, + "A147": { "s": 2, "v": "2000M05" }, + "B147": { "s": 4, "v": 0.4 }, + "A148": { "s": 2, "v": "2000M06" }, + "B148": { "s": 4, "v": 0.35 }, + "A149": { "s": 2, "v": "2000M07" }, + "B149": { "s": 4, "v": 0.5 }, + "A150": { "s": 2, "v": "2000M08" }, + "B150": { "s": 4, "v": -0.5 }, + "A151": { "s": 2, "v": "2000M09" }, + "B151": { "s": 4, "v": 0.2 }, + "A152": { "s": 2, "v": "2000M10" }, + "B152": { "s": 4, "v": 1 }, + "A153": { "s": 2, "v": "2000M11" }, + "B153": { "s": 4, "v": 0.3 }, + "A154": { "s": 2, "v": "2000M12" }, + "B154": { "s": 4, "v": 0 }, + "A155": { "s": 2, "v": "2001M01" }, + "B155": { "s": 4, "v": 0.15 }, + "A156": { "s": 2, "v": "2001M02" }, + "B156": { "s": 4, "v": 0.2 }, + "A157": { "s": 2, "v": "2001M03" }, + "B157": { "s": 4, "v": 0.59 }, + "A158": { "s": 2, "v": "2001M04" }, + "B158": { "s": 4, "v": 1.23 }, + "A159": { "s": 2, "v": "2001M05" }, + "B159": { "s": 4, "v": 1.4 }, + "A160": { "s": 2, "v": "2001M06" }, + "B160": { "s": 4, "v": 1.53 }, + "A161": { "s": 2, "v": "2001M07" }, + "B161": { "s": 4, "v": 0.75 }, + "A162": { "s": 2, "v": "2001M08" }, + "B162": { "s": 4, "v": 0.33 }, + "A163": { "s": 2, "v": "2001M09" }, + "B163": { "s": 4, "v": 0.65 }, + "A164": { "s": 2, "v": "2001M10" }, + "B164": { "s": 4, "v": 0.65 }, + "A165": { "s": 2, "v": "2001M11" }, + "B165": { "s": 4, "v": 0.37 }, + "A166": { "s": 2, "v": "2001M12" }, + "B166": { "s": 4, "v": 0.46 }, + "A167": { "s": 2, "v": "2002M01" }, + "B167": { "s": 4, "v": 0.91 }, + "A168": { "s": 2, "v": "2002M02" }, + "B168": { "s": 4, "v": -0.27 }, + "A169": { "s": 2, "v": "2002M03" }, + "B169": { "s": 4, "v": 0.41 }, + "A170": { "s": 2, "v": "2002M04" }, + "B170": { "s": 4, "v": 0.05 }, + "A171": { "s": 2, "v": "2002M05" }, + "B171": { "s": 4, "v": -0.05 }, + "A172": { "s": 2, "v": "2002M06" }, + "B172": { "s": 4, "v": 0.45 }, + "A173": { "s": 2, "v": "2002M07" }, + "B173": { "s": 4, "v": 0.09 }, + "A174": { "s": 2, "v": "2002M08" }, + "B174": { "s": 4, "v": -0.54 }, + "A175": { "s": 2, "v": "2002M09" }, + "B175": { "s": 4, "v": 0.5 }, + "A176": { "s": 2, "v": "2002M10" }, + "B176": { "s": 4, "v": 0.54 }, + "A177": { "s": 2, "v": "2002M11" }, + "B177": { "s": 4, "v": -0.18 }, + "A178": { "s": 2, "v": "2002M12" }, + "B178": { "s": 4, "v": 0.09 }, + "A179": { "s": 2, "v": "2003M01" }, + "B179": { "s": 4, "v": 0.36 }, + "A180": { "s": 2, "v": "2003M02" }, + "B180": { "s": 4, "v": -0.18 }, + "A181": { "s": 2, "v": "2003M03" }, + "B181": { "s": 4, "v": 1.07 }, + "A182": { "s": 2, "v": "2003M04" }, + "B182": { "s": 4, "v": 0.13 }, + "A183": { "s": 2, "v": "2003M05" }, + "B183": { "s": 4, "v": -0.18 }, + "A184": { "s": 2, "v": "2003M06" }, + "B184": { "s": 4, "v": 0.09 }, + "A185": { "s": 2, "v": "2003M07" }, + "B185": { "s": 4, "v": -0.13 }, + "A186": { "s": 2, "v": "2003M08" }, + "B186": { "s": 4, "v": -0.09 }, + "A187": { "s": 2, "v": "2003M09" }, + "B187": { "s": 4, "v": 0.71 }, + "A188": { "s": 2, "v": "2003M10" }, + "B188": { "s": 4, "v": 0.48 }, + "A189": { "s": 2, "v": "2003M11" }, + "B189": { "s": 4, "v": 0.13 }, + "A190": { "s": 2, "v": "2003M12" }, + "B190": { "s": 4, "v": 0.31 }, + "A191": { "s": 2, "v": "2004M01" }, + "B191": { "s": 4, "v": 0.04 }, + "A192": { "s": 2, "v": "2004M02" }, + "B192": { "s": 4, "v": -0.3 }, + "A193": { "s": 2, "v": "2004M03" }, + "B193": { "s": 4, "v": 0.57 }, + "A194": { "s": 2, "v": "2004M04" }, + "B194": { "s": 4, "v": 0.56 }, + "A195": { "s": 2, "v": "2004M05" }, + "B195": { "s": 4, "v": 0.82 }, + "A196": { "s": 2, "v": "2004M06" }, + "B196": { "s": 4, "v": 0.77 }, + "A197": { "s": 2, "v": "2004M07" }, + "B197": { "s": 4, "v": -0.47 }, + "A198": { "s": 2, "v": "2004M08" }, + "B198": { "s": 4, "v": 0 }, + "A199": { "s": 2, "v": "2004M09" }, + "B199": { "s": 4, "v": 0.43 }, + "A200": { "s": 2, "v": "2004M10" }, + "B200": { "s": 4, "v": 0.76 }, + "A201": { "s": 2, "v": "2004M11" }, + "B201": { "s": 4, "v": 0.21 }, + "A202": { "s": 2, "v": "2004M12" }, + "B202": { "s": 4, "v": 0.46 }, + "A203": { "s": 2, "v": "2005M01" }, + "B203": { "s": 4, "v": 0.08 }, + "A204": { "s": 2, "v": "2005M02" }, + "B204": { "s": 4, "v": 0.21 }, + "A205": { "s": 2, "v": "2005M03" }, + "B205": { "s": 4, "v": 0.75 }, + "A206": { "s": 2, "v": "2005M04" }, + "B206": { "s": 4, "v": 0.21 }, + "A207": { "s": 2, "v": "2005M05" }, + "B207": { "s": 4, "v": -0.54 }, + "A208": { "s": 2, "v": "2005M06" }, + "B208": { "s": 4, "v": 0.71 }, + "A209": { "s": 2, "v": "2005M07" }, + "B209": { "s": 4, "v": 0.12 }, + "A210": { "s": 2, "v": "2005M08" }, + "B210": { "s": 4, "v": 0.21 }, + "A211": { "s": 2, "v": "2005M09" }, + "B211": { "s": 4, "v": 1.52 }, + "A212": { "s": 2, "v": "2005M10" }, + "B212": { "s": 4, "v": 0.61 }, + "A213": { "s": 2, "v": "2005M11" }, + "B213": { "s": 4, "v": -0.16 }, + "A214": { "s": 2, "v": "2005M12" }, + "B214": { "s": 4, "v": 0.36 }, + "A215": { "s": 2, "v": "2006M01" }, + "B215": { "s": 4, "v": 0.32 }, + "A216": { "s": 2, "v": "2006M02" }, + "B216": { "s": 4, "v": -0.08 }, + "A217": { "s": 2, "v": "2006M03" }, + "B217": { "s": 4, "v": 1.12 }, + "A218": { "s": 2, "v": "2006M04" }, + "B218": { "s": 4, "v": 1.15 }, + "A219": { "s": 2, "v": "2006M05" }, + "B219": { "s": 4, "v": 1.45 }, + "A220": { "s": 2, "v": "2006M06" }, + "B220": { "s": 4, "v": 1.16 }, + "A221": { "s": 2, "v": "2006M07" }, + "B221": { "s": 4, "v": 0.46 }, + "A222": { "s": 2, "v": "2006M08" }, + "B222": { "s": 4, "v": 0.34 }, + "A223": { "s": 2, "v": "2006M09" }, + "B223": { "s": 4, "v": 0.61 }, + "A224": { "s": 2, "v": "2006M10" }, + "B224": { "s": 4, "v": 0.23 }, + "A225": { "s": 2, "v": "2006M11" }, + "B225": { "s": 4, "v": -0.04 }, + "A226": { "s": 2, "v": "2006M12" }, + "B226": { "s": 4, "v": 0.04 }, + "A227": { "s": 2, "v": "2007M01" }, + "B227": { "s": 4, "v": 0.26 }, + "A228": { "s": 2, "v": "2007M02" }, + "B228": { "s": 4, "v": 0.41 }, + "A229": { "s": 2, "v": "2007M03" }, + "B229": { "s": 4, "v": -0.34 }, + "A230": { "s": 2, "v": "2007M04" }, + "B230": { "s": 4, "v": 0.6 }, + "A231": { "s": 2, "v": "2007M05" }, + "B231": { "s": 4, "v": 0.86 }, + "A232": { "s": 2, "v": "2007M06" }, + "B232": { "s": 4, "v": 0.52 }, + "A233": { "s": 2, "v": "2007M07" }, + "B233": { "s": 4, "v": 0.22 }, + "A234": { "s": 2, "v": "2007M08" }, + "B234": { "s": 4, "v": 0.04 }, + "A235": { "s": 2, "v": "2007M09" }, + "B235": { "s": 4, "v": 1.32 }, + "A236": { "s": 2, "v": "2007M10" }, + "B236": { "s": 4, "v": 0.51 }, + "A237": { "s": 2, "v": "2007M11" }, + "B237": { "s": 4, "v": 0.65 }, + "A238": { "s": 2, "v": "2007M12" }, + "B238": { "s": 4, "v": 0.68 }, + "A239": { "s": 2, "v": "2008M01" }, + "B239": { "s": 4, "v": 0.18 }, + "A240": { "s": 2, "v": "2008M02" }, + "B240": { "s": 4, "v": 1.38 }, + "A241": { "s": 2, "v": "2008M03" }, + "B241": { "s": 4, "v": 1.47 }, + "A242": { "s": 2, "v": "2008M04" }, + "B242": { "s": 4, "v": 3.41 }, + "A243": { "s": 2, "v": "2008M05" }, + "B243": { "s": 4, "v": 1.37 }, + "A244": { "s": 2, "v": "2008M06" }, + "B244": { "s": 4, "v": 0.89 }, + "A245": { "s": 2, "v": "2008M07" }, + "B245": { "s": 4, "v": 0.94 }, + "A246": { "s": 2, "v": "2008M08" }, + "B246": { "s": 4, "v": 0.9 }, + "A247": { "s": 2, "v": "2008M09" }, + "B247": { "s": 4, "v": 0.86 }, + "A248": { "s": 2, "v": "2008M10" }, + "B248": { "s": 4, "v": 2.16 }, + "A249": { "s": 2, "v": "2008M11" }, + "B249": { "s": 4, "v": 1.74 }, + "A250": { "s": 2, "v": "2008M12" }, + "B250": { "s": 4, "v": 1.52 }, + "A251": { "s": 2, "v": "2009M01" }, + "B251": { "s": 4, "v": 0.57 }, + "A252": { "s": 2, "v": "2009M02" }, + "B252": { "s": 4, "v": 0.51 }, + "A253": { "s": 2, "v": "2009M03" }, + "B253": { "s": 4, "v": -0.59 }, + "A254": { "s": 2, "v": "2009M04" }, + "B254": { "s": 4, "v": 0.45 }, + "A255": { "s": 2, "v": "2009M05" }, + "B255": { "s": 4, "v": 1.13 }, + "A256": { "s": 2, "v": "2009M06" }, + "B256": { "s": 4, "v": 1.38 }, + "A257": { "s": 2, "v": "2009M07" }, + "B257": { "s": 4, "v": 0.17 }, + "A258": { "s": 2, "v": "2009M08" }, + "B258": { "s": 4, "v": 0.52 }, + "A259": { "s": 2, "v": "2009M09" }, + "B259": { "s": 4, "v": 0.78 }, + "A260": { "s": 2, "v": "2009M10" }, + "B260": { "s": 4, "v": 1.14 }, + "A261": { "s": 2, "v": "2009M11" }, + "B261": { "s": 4, "v": 0.74 }, + "A262": { "s": 2, "v": "2009M12" }, + "B262": { "s": 4, "v": 0.48 }, + "A263": { "s": 2, "v": "2010M01" }, + "B263": { "s": 4, "v": -0.31 }, + "A264": { "s": 2, "v": "2010M02" }, + "B264": { "s": 4, "v": 1.15 }, + "A265": { "s": 2, "v": "2010M03" }, + "B265": { "s": 4, "v": 0.55 }, + "A266": { "s": 2, "v": "2010M04" }, + "B266": { "s": 4, "v": 0.25 }, + "A267": { "s": 2, "v": "2010M05" }, + "B267": { "s": 4, "v": 0.41 }, + "A268": { "s": 2, "v": "2010M06" }, + "B268": { "s": 4, "v": -0.33 }, + "A269": { "s": 2, "v": "2010M07" }, + "B269": { "s": 4, "v": -0.66 }, + "A270": { "s": 2, "v": "2010M08" }, + "B270": { "s": 4, "v": 0.25 }, + "A271": { "s": 2, "v": "2010M09" }, + "B271": { "s": 4, "v": 0 }, + "A272": { "s": 2, "v": "2010M10" }, + "B272": { "s": 4, "v": 0.74 }, + "A273": { "s": 2, "v": "2010M11" }, + "B273": { "s": 4, "v": 0.05 }, + "A274": { "s": 2, "v": "2010M12" }, + "B274": { "s": 4, "v": 0.33 }, + "A275": { "s": 2, "v": "2011M01" }, + "B275": { "s": 4, "v": -0.9 }, + "A276": { "s": 2, "v": "2011M02" }, + "B276": { "s": 4, "v": 1.18 }, + "A277": { "s": 2, "v": "2011M03" }, + "B277": { "s": 4, "v": 0.95 }, + "A278": { "s": 2, "v": "2011M04" }, + "B278": { "s": 4, "v": 0.78 }, + "A279": { "s": 2, "v": "2011M05" }, + "B279": { "s": 4, "v": 0.94 }, + "A280": { "s": 2, "v": "2011M06" }, + "B280": { "s": 4, "v": 0.5 }, + "A281": { "s": 2, "v": "2011M07" }, + "B281": { "s": 4, "v": 0.11 }, + "A282": { "s": 2, "v": "2011M08" }, + "B282": { "s": 4, "v": 0.26 }, + "A283": { "s": 2, "v": "2011M09" }, + "B283": { "s": 4, "v": 0.63 }, + "A284": { "s": 2, "v": "2011M10" }, + "B284": { "s": 4, "v": 0.34 }, + "A285": { "s": 2, "v": "2011M11" }, + "B285": { "s": 4, "v": 0 }, + "A286": { "s": 2, "v": "2011M12" }, + "B286": { "s": 4, "v": 0.36 }, + "A287": { "s": 2, "v": "2012M01" }, + "B287": { "s": 4, "v": 0.28 }, + "A288": { "s": 2, "v": "2012M02" }, + "B288": { "s": 4, "v": 1.01 }, + "A289": { "s": 2, "v": "2012M03" }, + "B289": { "s": 4, "v": 1.05 }, + "A290": { "s": 2, "v": "2012M04" }, + "B290": { "s": 4, "v": 0.78 }, + "A291": { "s": 2, "v": "2012M05" }, + "B291": { "s": 4, "v": -0.03 }, + "A292": { "s": 2, "v": "2012M06" }, + "B292": { "s": 4, "v": 0.5 }, + "A293": { "s": 2, "v": "2012M07" }, + "B293": { "s": 4, "v": -0.72 }, + "A294": { "s": 2, "v": "2012M08" }, + "B294": { "s": 4, "v": -0.15 }, + "A295": { "s": 2, "v": "2012M09" }, + "B295": { "s": 4, "v": 0.76 }, + "A296": { "s": 2, "v": "2012M10" }, + "B296": { "s": 4, "v": 0.28 }, + "A297": { "s": 2, "v": "2012M11" }, + "B297": { "s": 4, "v": 0.32 }, + "A298": { "s": 2, "v": "2012M12" }, + "B298": { "s": 4, "v": 0.05 }, + "A299": { "s": 2, "v": "2013M01" }, + "B299": { "s": 4, "v": 0.27 }, + "A300": { "s": 2, "v": "2013M02" }, + "B300": { "s": 4, "v": 1.64 }, + "A301": { "s": 2, "v": "2013M03" }, + "B301": { "s": 4, "v": 0.2 }, + "A302": { "s": 2, "v": "2013M04" }, + "B302": { "s": 4, "v": 0.19 }, + "A303": { "s": 2, "v": "2013M05" }, + "B303": { "s": 4, "v": -0.05 }, + "A304": { "s": 2, "v": "2013M06" }, + "B304": { "s": 4, "v": 0.53 }, + "A305": { "s": 2, "v": "2013M07" }, + "B305": { "s": 4, "v": -0.27 }, + "A306": { "s": 2, "v": "2013M08" }, + "B306": { "s": 4, "v": 0.34 }, + "A307": { "s": 2, "v": "2013M09" }, + "B307": { "s": 4, "v": 0.34 }, + "A308": { "s": 2, "v": "2013M10" }, + "B308": { "s": 4, "v": 0 }, + "A309": { "s": 2, "v": "2013M11" }, + "B309": { "s": 4, "v": 0.36 }, + "A310": { "s": 2, "v": "2013M12" }, + "B310": { "s": 4, "v": 0.53 }, + "A311": { "s": 2, "v": "2014M01" }, + "B311": { "s": 4, "v": -0.72 }, + "A312": { "s": 2, "v": "2014M02" }, + "B312": { "s": 4, "v": 0.67 }, + "A313": { "s": 2, "v": "2014M03" }, + "B313": { "s": 4, "v": 0.24 }, + "A314": { "s": 2, "v": "2014M04" }, + "B314": { "s": 4, "v": 0.31 }, + "A315": { "s": 2, "v": "2014M05" }, + "B315": { "s": 4, "v": 0.07 }, + "A316": { "s": 2, "v": "2014M06" }, + "B316": { "s": 4, "v": 0.36 }, + "A317": { "s": 2, "v": "2014M07" }, + "B317": { "s": 4, "v": -0.17 }, + "A318": { "s": 2, "v": "2014M08" }, + "B318": { "s": 4, "v": 0.24 }, + "A319": { "s": 2, "v": "2014M09" }, + "B319": { "s": 4, "v": -0.12 }, + "A320": { "s": 2, "v": "2014M10" }, + "B320": { "s": 4, "v": 0.14 }, + "A321": { "s": 2, "v": "2014M11" }, + "B321": { "s": 4, "v": -0.52 }, + "A322": { "s": 2, "v": "2014M12" }, + "B322": { "s": 4, "v": 0.31 }, + "A323": { "s": 2, "v": "2015M01" }, + "B323": { "s": 4, "v": -0.71 }, + "A324": { "s": 2, "v": "2015M02" }, + "B324": { "s": 4, "v": 0.67 }, + "A325": { "s": 2, "v": "2015M03" }, + "B325": { "s": 4, "v": 1.02 }, + "A326": { "s": 2, "v": "2015M04" }, + "B326": { "s": 4, "v": 0.14 }, + "A327": { "s": 2, "v": "2015M05" }, + "B327": { "s": 4, "v": 0.28 }, + "A328": { "s": 2, "v": "2015M06" }, + "B328": { "s": 4, "v": 0.26 }, + "A329": { "s": 2, "v": "2015M07" }, + "B329": { "s": 4, "v": 0.16 }, + "A330": { "s": 2, "v": "2015M08" }, + "B330": { "s": 4, "v": 0.53 }, + "A331": { "s": 2, "v": "2015M09" }, + "B331": { "s": 4, "v": -0.39 }, + "A332": { "s": 2, "v": "2015M10" }, + "B332": { "s": 4, "v": 0.07 }, + "A333": { "s": 2, "v": "2015M11" }, + "B333": { "s": 4, "v": -0.35 }, + "A334": { "s": 2, "v": "2015M12" }, + "B334": { "s": 4, "v": 0.33 }, + "A335": { "s": 2, "v": "2016M01" }, + "B335": { "s": 4, "v": -0.58 }, + "A336": { "s": 2, "v": "2016M02" }, + "B336": { "s": 4, "v": 0.68 }, + "A337": { "s": 2, "v": "2016M03" }, + "B337": { "s": 4, "v": 0.37 }, + "A338": { "s": 2, "v": "2016M04" }, + "B338": { "s": 4, "v": 0.21 }, + "A339": { "s": 2, "v": "2016M05" }, + "B339": { "s": 4, "v": 0.42 }, + "A340": { "s": 2, "v": "2016M06" }, + "B340": { "s": 4, "v": 0.18 }, + "A341": { "s": 2, "v": "2016M07" }, + "B341": { "s": 4, "v": -0.32 }, + "A342": { "s": 2, "v": "2016M08" }, + "B342": { "s": 4, "v": 0.34 }, + "A343": { "s": 2, "v": "2016M09" }, + "B343": { "s": 4, "v": 0.48 }, + "A344": { "s": 2, "v": "2016M10" }, + "B344": { "s": 4, "v": 0 }, + "A345": { "s": 2, "v": "2016M11" }, + "B345": { "s": 4, "v": -0.02 }, + "A346": { "s": 2, "v": "2016M12" }, + "B346": { "s": 4, "v": 0.14 }, + "A347": { "s": 2, "v": "2017M01" }, + "B347": { "s": 4, "v": -0.57 }, + "A348": { "s": 2, "v": "2017M02" }, + "B348": { "s": 4, "v": 0.71 }, + "A349": { "s": 2, "v": "2017M03" }, + "B349": { "s": 4, "v": 0.07 }, + "A350": { "s": 2, "v": "2017M04" }, + "B350": { "s": 4, "v": 0.5 }, + "A351": { "s": 2, "v": "2017M05" }, + "B351": { "s": 4, "v": 0.2 }, + "A352": { "s": 2, "v": "2017M06" }, + "B352": { "s": 4, "v": 0 }, + "A353": { "s": 2, "v": "2017M07" }, + "B353": { "s": 4, "v": -0.02 }, + "A354": { "s": 2, "v": "2017M08" }, + "B354": { "s": 4, "v": 0.25 }, + "A355": { "s": 2, "v": "2017M09" }, + "B355": { "s": 4, "v": 0.14 }, + "A356": { "s": 2, "v": "2017M10" }, + "B356": { "s": 4, "v": 0.47 }, + "A357": { "s": 2, "v": "2017M11" }, + "B357": { "s": 4, "v": -0.16 }, + "A358": { "s": 2, "v": "2017M12" }, + "B358": { "s": 4, "v": 0.27 }, + "A359": { "s": 2, "v": "2018M01" }, + "B359": { "s": 4, "v": -0.09 }, + "A360": { "s": 2, "v": "2018M02" }, + "B360": { "s": 4, "v": 0.6 }, + "A361": { "s": 2, "v": "2018M03" }, + "B361": { "s": 4, "v": 0.56 }, + "A362": { "s": 2, "v": "2018M04" }, + "B362": { "s": 4, "v": 0.04 }, + "A363": { "s": 2, "v": "2018M05" }, + "B363": { "s": 4, "v": -0.09 }, + "A364": { "s": 2, "v": "2018M06" }, + "B364": { "s": 4, "v": 0.62 }, + "A365": { "s": 2, "v": "2018M07" }, + "B365": { "s": 4, "v": 0.04 }, + "A366": { "s": 2, "v": "2018M08" }, + "B366": { "s": 4, "v": 0.2 }, + "A367": { "s": 2, "v": "2018M09" }, + "B367": { "s": 4, "v": 0.24 }, + "A368": { "s": 2, "v": "2018M10" }, + "B368": { "s": 4, "v": 0.57 }, + "A369": { "s": 2, "v": "2018M11" }, + "B369": { "s": 4, "v": 0.24 }, + "A370": { "s": 2, "v": "2018M12" }, + "B370": { "s": 4, "v": 0.74 }, + "A371": { "s": 2, "v": "2019M01" }, + "B371": { "s": 4, "v": -0.41 }, + "A372": { "s": 2, "v": "2019M02" }, + "B372": { "s": 4, "v": 0.19 }, + "A373": { "s": 2, "v": "2019M03" }, + "B373": { "s": 4, "v": 0.52 }, + "A374": { "s": 2, "v": "2019M04" }, + "B374": { "s": 4, "v": 0.37 }, + "A375": { "s": 2, "v": "2019M05" }, + "B375": { "s": 4, "v": 0.21 }, + "A376": { "s": 2, "v": "2019M06" }, + "B376": { "s": 4, "v": 0.38 }, + "A377": { "s": 2, "v": "2019M07" }, + "B377": { "s": 4, "v": -0.21 }, + "A378": { "s": 2, "v": "2019M08" }, + "B378": { "s": 4, "v": 0.28 }, + "A379": { "s": 2, "v": "2019M09" }, + "B379": { "s": 4, "v": 0.09 }, + "A380": { "s": 2, "v": "2019M10" }, + "B380": { "s": 4, "v": 0.36 }, + "A381": { "s": 2, "v": "2019M11" }, + "B381": { "s": 4, "v": 0.13 }, + "A382": { "s": 2, "v": "2019M12" }, + "B382": { "s": 4, "v": 0.11 }, + "A383": { "s": 2, "v": "2020M01" }, + "B383": { "s": 4, "v": -0.74 }, + "A384": { "s": 2, "v": "2020M02" }, + "B384": { "s": 4, "v": 0.92 }, + "A385": { "s": 2, "v": "2020M03" }, + "B385": { "s": 4, "v": 0.23 }, + "A386": { "s": 2, "v": "2020M04" }, + "B386": { "s": 4, "v": 0.48 }, + "A387": { "s": 2, "v": "2020M05" }, + "B387": { "s": 4, "v": 0.54 }, + "A388": { "s": 2, "v": "2020M06" }, + "B388": { "s": 4, "v": 0.44 }, + "A389": { "s": 2, "v": "2020M07" }, + "B389": { "s": 4, "v": 0.15 }, + "A390": { "s": 2, "v": "2020M08" }, + "B390": { "s": 4, "v": 0.46 }, + "A391": { "s": 2, "v": "2020M09" }, + "B391": { "s": 4, "v": 0.39 }, + "A392": { "s": 2, "v": "2020M10" }, + "B392": { "s": 4, "v": 0.43 }, + "A393": { "s": 2, "v": "2020M11" }, + "B393": { "s": 4, "v": 0.04 }, + "A394": { "s": 2, "v": "2020M12" }, + "B394": { "s": 4, "v": 0.2 }, + "A395": { "s": 2, "v": "2021M01" }, + "B395": { "s": 4, "v": -0.06 }, + "A396": { "s": 2, "v": "2021M02" }, + "B396": { "s": 4, "v": 0.69 }, + "A397": { "s": 2, "v": "2021M03" }, + "B397": { "s": 4, "v": 0.49 }, + "A398": { "s": 2, "v": "2021M04" }, + "B398": { "s": 4, "v": 0.71 }, + "A399": { "s": 2, "v": "2021M05" }, + "B399": { "s": 4, "v": 0.42 }, + "A400": { "s": 2, "v": "2021M06" }, + "B400": { "s": 4, "v": 0.26 }, + "A401": { "s": 2, "v": "2021M07" }, + "B401": { "s": 4, "v": 0.16 }, + "A402": { "s": 2, "v": "2021M08" }, + "B402": { "s": 4, "v": 0.46 }, + "A403": { "s": 2, "v": "2021M09" }, + "B403": { "s": 4, "v": 0.47 }, + "A404": { "s": 2, "v": "2021M10" }, + "B404": { "s": 4, "v": 0.59 }, + "A405": { "s": 2, "v": "2021M11" }, + "B405": { "s": 4, "v": 0.35 }, + "A406": { "s": 2, "v": "2021M12" }, + "B406": { "s": 4, "v": 0.45 }, + "A407": { "s": 2, "v": "2022M01" }, + "B407": { "s": 4, "v": 0.5 }, + "A408": { "s": 2, "v": "2022M02" }, + "B408": { "s": 4, "v": 1.16 }, + "A409": { "s": 2, "v": "2022M03" }, + "B409": { "s": 4, "v": 0.94 }, + "A410": { "s": 2, "v": "2022M04" }, + "B410": { "s": 4, "v": 1.25 }, + "A411": { "s": 2, "v": "2022M05" }, + "B411": { "s": 4, "v": 0.77 }, + "A412": { "s": 2, "v": "2022M06" }, + "B412": { "s": 4, "v": 1.41 }, + "A413": { "s": 2, "v": "2022M07" }, + "B413": { "s": 4, "v": 1.17 }, + "A414": { "s": 2, "v": "2022M08" }, + "B414": { "s": 4, "v": 0.29 }, + "A415": { "s": 2, "v": "2022M09" }, + "B415": { "s": 4, "v": 0.09 }, + "A416": { "s": 2, "v": "2022M10" }, + "B416": { "s": 4, "v": 0.67 }, + "A417": { "s": 2, "v": "2022M11" }, + "B417": { "s": 4, "v": 0.29 }, + "A418": { "s": 2, "v": "2022M12" }, + "B418": { "s": 4, "v": 0.66 }, + "A419": { "s": 2, "v": "2023M01" }, + "B419": { "s": 4, "v": 0.85 }, + "A420": { "s": 2, "v": "2023M02" }, + "B420": { "s": 4, "v": 1.39 }, + "A421": { "s": 2, "v": "2023M03" }, + "B421": { "s": 4, "v": 0.59 }, + "A422": { "s": 2, "v": "2023M04" }, + "B422": { "s": 4, "v": 1.31 }, + "A423": { "s": 2, "v": "2023M05" }, + "B423": { "s": 4, "v": 0.39 }, + "A424": { "s": 2, "v": "2023M06" }, + "B424": { "s": 4, "v": 0.85 }, + "A425": { "s": 2, "v": "2023M07" }, + "B425": { "s": 4, "v": 0.03 }, + "A426": { "s": 2, "v": "2023M08" }, + "B426": { "s": 4, "v": 0.34 }, + "A427": { "s": 2, "v": "2023M09" }, + "B427": { "s": 4, "v": 0.35 }, + "A428": { "s": 2, "v": "2023M10" }, + "B428": { "s": 4, "v": 0.6 }, + "A429": { "s": 2, "v": "2023M11" }, + "B429": { "s": 4, "v": 0.38 }, + "A430": { "s": 2, "v": "2023M12" }, + "B430": { "s": 4, "v": 0.41 }, + "A431": { "s": 2, "v": "2024M01" }, + "B431": { "s": 4, "v": -0.16 }, + "A432": { "s": 2, "v": "2024M02" }, + "B432": { "s": 4, "v": 1.33 }, + "A433": { "s": 2, "v": "2024M03" }, + "B433": { "s": 4, "v": 0.8 }, + "A434": { "s": 2, "v": "2024M04" }, + "B434": { "s": 4, "v": 0.55 }, + "A435": { "s": 2, "v": "2024M05" }, + "B435": { "s": 4, "v": 0.58 }, + "A436": { "s": 2, "v": "2024M06" }, + "B436": { "s": 4, "v": 0.48 }, + "A437": { "s": 2, "v": "2024M07" }, + "B437": { "s": 4, "v": 0.46 }, + "A438": { "s": 2, "v": "2024M08" }, + "B438": { "s": 4, "v": 0.09 }, + "A439": { "s": 2, "v": "2024M09" }, + "B439": { "s": 4, "v": -0.24 }, + "A440": { "s": 2, "v": "2024M10" }, + "B440": { "s": 4, "v": 0.28 }, + "A441": { "s": 2, "v": "2024M11" }, + "B441": { "s": 4, "v": 0.09 }, + "A442": { "s": 2, "v": "2024M12" }, + "B442": { "s": 4, "v": 0.39 }, + "A443": { "s": 2, "v": "2025M01" }, + "B443": { "s": 4, "v": -0.27 }, + "A444": { "s": 2, "v": "2025M02" }, + "B444": { "s": 4, "v": 0.91 }, + "A445": { "s": 2, "v": "2025M03" }, + "B445": { "s": 4, "v": 0.37 }, + "A446": { "s": 2, "v": "2025M04" }, + "B446": { "s": 4, "v": 0.93 }, + "A447": { "s": 2, "v": "2025M05" }, + "B447": { "s": 4, "v": 0.2 }, + "A448": { "s": 2, "v": "2025M06" }, + "B448": { "s": 4, "v": 0.84 }, + "A449": { "s": 2, "v": "2025M07" }, + "B449": { "s": 4, "v": 0.32 }, + "A450": { "s": 2, "v": "2025M08" }, + "B450": { "s": 4, "v": -0.15 }, + "A451": { "s": 2, "v": "2025M09" }, + "B451": { "s": 4, "v": 0.11 }, + "A452": { "s": 2, "v": "2025M10" }, + "B452": { "s": 4, "v": 0.47 }, + "A453": { "s": 2, "v": "2025M11" }, + "B453": { "s": 4, "v": -0.48 }, + "A454": { "s": 2, "v": "2025M12" }, + "B454": { "s": 4, "v": 1.15 }, + "A455": { "s": 2, "v": "2026M01" }, + "B455": { "s": 4, "v": 0.38 }, + "A456": { "s": 2, "v": "2026M02" }, + "B456": { "s": 4, "v": 0.94 }, + "A457": { "s": 2, "v": "2026M03" }, + "B457": { "s": 4, "v": 0.55 }, + "A458": { "s": 2, "v": "2026M04" }, + "B458": { "s": 4, "v": 0.81 }, + "A459": { "s": 2, "v": "2026M05" }, + "B459": { "s": 4, "v": 0.07 }, + "A460": { "s": 2, "v": "2026M06" }, + "B460": { "s": 4, "v": 0.94 }, + "A461": { "s": 2, "v": "2026M07" }, + "B461": { "s": 4, "v": 0.36 } + }, + "columns": [ + { "start": 1, "end": 1, "size": 69 }, + { "start": 2, "end": 2, "size": 95 }, + { "start": 3, "end": 4, "size": 55 } + ], + "rows": [ { "start": 1, "end": 1, "size": 19 } ], + "merges": [], + "defaults": { "colWidth": 53, "rowHeight": 15 }, + "hidden": 0, + "views": [ + { + "workbookView": 0, + "panes": { + "type": "frozen", + "columns": 1, + "rows": 2, + "firstVisibleCell": "B3", + "activePane": "bottomEnd" + }, + "activeCell": "D9" + } + ], + "pageMargins": { + "left": 0.75, + "right": 0.75, + "top": 0.75, + "bottom": 0.5, + "header": 0.5, + "footer": 0.75 + }, + "notes": [ + { + "ref": "A412", + "author": "IUSR", + "text": "The price change in passenger transport by air (07332) in June 2022 was underestimated but corrected in the compilation a month later.\n" + }, + { + "ref": "A413", + "author": "IUSR", + "text": "The price change in passenger transport by air (07332) in July 2022 is due to a price increase in airfares that month (0.43% effect) in addition to undervalued price levels in the compilation in June 2022 (0.29% effect)\n" + } + ] + } + ], + "names": [], + "calculationProperties": { + "iterate": false, + "iterateCount": 100, + "iterateDelta": 0.001, + "epoch": 1900 + }, + "styles": [ + { + "fontFamily": "Calibri", + "fontSize": 11, + "color": { "type": "srgb", "value": "000000" } + }, + { + "fontFamily": "Calibri", + "fontSize": 14, + "color": { "type": "srgb", "value": "000000" }, + "bold": true + }, + { + "fontFamily": "Calibri", + "fontSize": 11, + "color": { "type": "srgb", "value": "000000" }, + "bold": true + }, + { + "horizontalAlignment": "right", + "fontFamily": "Calibri", + "fontSize": 11, + "color": { "type": "srgb", "value": "000000" } + }, + { + "numberFormat": "0.00", + "fontFamily": "Calibri", + "fontSize": 11, + "color": { "type": "srgb", "value": "000000" } + } + ], + "tables": [], + "views": [ {} ], + "theme": { + "name": "Office Theme", + "colorScheme": { + "name": "Office", + "dk1": { "type": "system", "value": "windowText" }, + "lt1": { "type": "system", "value": "window" }, + "dk2": { "type": "srgb", "value": "1F497D" }, + "lt2": { "type": "srgb", "value": "EEECE1" }, + "accent1": { "type": "srgb", "value": "4F81BD" }, + "accent2": { "type": "srgb", "value": "C0504D" }, + "accent3": { "type": "srgb", "value": "9BBB59" }, + "accent4": { "type": "srgb", "value": "8064A2" }, + "accent5": { "type": "srgb", "value": "4BACC6" }, + "accent6": { "type": "srgb", "value": "F79646" }, + "hlink": { "type": "srgb", "value": "0000FF" }, + "folHlink": { "type": "srgb", "value": "800080" } + }, + "fontScheme": { + "name": "Office", + "major": { + "latin": { "typeface": "Cambria" } + }, + "minor": { + "latin": { "typeface": "Calibri" } + } + } + }, + "namedStyles": { + "Normal": { + "name": "Normal", + "fontFamily": "Calibri", + "fontSize": 11, + "color": { "type": "srgb", "value": "000000" }, + "builtinId": 0 + } + }, + "formulas": [], + "meta": { + "app": { + "name": "Microsoft Excel", + "variant": "Macintosh", + "version": "16.0300" + } + } +} \ No newline at end of file diff --git a/tests/index.ts b/tests/index.ts index b60e4a2..bf85b07 100644 --- a/tests/index.ts +++ b/tests/index.ts @@ -57,6 +57,7 @@ const tests = [ 'tests/excel/errors-gsheets.xlsx', 'tests/excel/external-refs.xlsx', 'tests/excel/fonts.xlsx', + 'tests/excel/freeze-panes.xlsx', 'tests/excel/grouped-grouped-charts.xlsx', 'tests/excel/gt-in-attr-value.xlsx', 'tests/excel/hidden-sheets.xlsx',