@rowsncolumns/toolkit 24.4.3 → 24.4.5
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/cjs/excel-parser/interface.d.ts +5 -1
- package/dist/cjs/excel-parser/interface.d.ts.map +1 -1
- package/dist/cjs/excel-parser/plugins/base/index.d.ts +2 -0
- package/dist/cjs/excel-parser/plugins/base/index.d.ts.map +1 -1
- package/dist/cjs/excel-parser/plugins/base/index.js +3 -0
- package/dist/cjs/excel-parser/plugins/xls/index.d.ts +55 -9
- package/dist/cjs/excel-parser/plugins/xls/index.d.ts.map +1 -1
- package/dist/cjs/excel-parser/plugins/xls/index.js +487 -24
- package/dist/cjs/excel-parser/plugins/xlsb/index.d.ts.map +1 -1
- package/dist/cjs/excel-parser/plugins/xlsb/index.js +12 -5
- package/dist/cjs/excel-parser/plugins/xlsx/chartex.d.ts +37 -0
- package/dist/cjs/excel-parser/plugins/xlsx/chartex.d.ts.map +1 -0
- package/dist/cjs/excel-parser/plugins/xlsx/chartex.js +244 -0
- package/dist/cjs/excel-parser/plugins/xlsx/form-controls.d.ts +70 -0
- package/dist/cjs/excel-parser/plugins/xlsx/form-controls.d.ts.map +1 -0
- package/dist/cjs/excel-parser/plugins/xlsx/form-controls.js +295 -0
- package/dist/cjs/excel-parser/plugins/xlsx/index.d.ts +9 -1
- package/dist/cjs/excel-parser/plugins/xlsx/index.d.ts.map +1 -1
- package/dist/cjs/excel-parser/plugins/xlsx/index.js +251 -104
- package/dist/cjs/excel-parser/plugins/xlsx/styles.d.ts +15 -1
- package/dist/cjs/excel-parser/plugins/xlsx/styles.d.ts.map +1 -1
- package/dist/cjs/excel-parser/plugins/xlsx/styles.js +90 -4
- package/dist/cjs/excel-parser/registry.d.ts +7 -0
- package/dist/cjs/excel-parser/registry.d.ts.map +1 -1
- package/dist/cjs/excel-parser/registry.js +28 -1
- package/dist/cjs/excel-parser/types.d.ts +10 -1
- package/dist/cjs/excel-parser/types.d.ts.map +1 -1
- package/dist/cjs/excel-parser/workbook.d.ts +2 -0
- package/dist/cjs/excel-parser/workbook.d.ts.map +1 -1
- package/dist/cjs/excel-parser/workbook.js +20 -14
- package/dist/cjs/excel-parser/worker.js +128 -130
- package/dist/cjs/exporter/xlsx/chart-builder.d.ts.map +1 -1
- package/dist/cjs/exporter/xlsx/chart-builder.js +5 -33
- package/dist/cjs/exporter/xlsx/chartex-builder.d.ts +36 -0
- package/dist/cjs/exporter/xlsx/chartex-builder.d.ts.map +1 -0
- package/dist/cjs/exporter/xlsx/chartex-builder.js +109 -0
- package/dist/cjs/exporter/xlsx/form-controls-builder.d.ts +61 -0
- package/dist/cjs/exporter/xlsx/form-controls-builder.d.ts.map +1 -0
- package/dist/cjs/exporter/xlsx/form-controls-builder.js +197 -0
- package/dist/cjs/exporter/xlsx/xlsx-export.d.ts.map +1 -1
- package/dist/cjs/exporter/xlsx/xlsx-export.js +431 -193
- package/dist/cjs/tsconfig.cjs.tsbuildinfo +1 -1
- package/dist/esm/excel-parser/interface.d.ts +5 -1
- package/dist/esm/excel-parser/interface.d.ts.map +1 -1
- package/dist/esm/excel-parser/plugins/base/index.d.ts +2 -0
- package/dist/esm/excel-parser/plugins/base/index.d.ts.map +1 -1
- package/dist/esm/excel-parser/plugins/base/index.js +3 -0
- package/dist/esm/excel-parser/plugins/xls/index.d.ts +55 -9
- package/dist/esm/excel-parser/plugins/xls/index.d.ts.map +1 -1
- package/dist/esm/excel-parser/plugins/xls/index.js +429 -23
- package/dist/esm/excel-parser/plugins/xlsb/index.d.ts.map +1 -1
- package/dist/esm/excel-parser/plugins/xlsb/index.js +10 -3
- package/dist/esm/excel-parser/plugins/xlsx/chartex.d.ts +37 -0
- package/dist/esm/excel-parser/plugins/xlsx/chartex.d.ts.map +1 -0
- package/dist/esm/excel-parser/plugins/xlsx/chartex.js +199 -0
- package/dist/esm/excel-parser/plugins/xlsx/form-controls.d.ts +70 -0
- package/dist/esm/excel-parser/plugins/xlsx/form-controls.d.ts.map +1 -0
- package/dist/esm/excel-parser/plugins/xlsx/form-controls.js +246 -0
- package/dist/esm/excel-parser/plugins/xlsx/index.d.ts +9 -1
- package/dist/esm/excel-parser/plugins/xlsx/index.d.ts.map +1 -1
- package/dist/esm/excel-parser/plugins/xlsx/index.js +92 -6
- package/dist/esm/excel-parser/plugins/xlsx/styles.d.ts +15 -1
- package/dist/esm/excel-parser/plugins/xlsx/styles.d.ts.map +1 -1
- package/dist/esm/excel-parser/plugins/xlsx/styles.js +80 -0
- package/dist/esm/excel-parser/registry.d.ts +7 -0
- package/dist/esm/excel-parser/registry.d.ts.map +1 -1
- package/dist/esm/excel-parser/registry.js +18 -1
- package/dist/esm/excel-parser/types.d.ts +10 -1
- package/dist/esm/excel-parser/types.d.ts.map +1 -1
- package/dist/esm/excel-parser/workbook.d.ts +2 -0
- package/dist/esm/excel-parser/workbook.d.ts.map +1 -1
- package/dist/esm/excel-parser/workbook.js +16 -10
- package/dist/esm/excel-parser/worker.js +10 -18
- package/dist/esm/exporter/xlsx/chart-builder.d.ts.map +1 -1
- package/dist/esm/exporter/xlsx/chart-builder.js +0 -28
- package/dist/esm/exporter/xlsx/chartex-builder.d.ts +36 -0
- package/dist/esm/exporter/xlsx/chartex-builder.d.ts.map +1 -0
- package/dist/esm/exporter/xlsx/chartex-builder.js +97 -0
- package/dist/esm/exporter/xlsx/form-controls-builder.d.ts +61 -0
- package/dist/esm/exporter/xlsx/form-controls-builder.d.ts.map +1 -0
- package/dist/esm/exporter/xlsx/form-controls-builder.js +173 -0
- package/dist/esm/exporter/xlsx/xlsx-export.d.ts.map +1 -1
- package/dist/esm/exporter/xlsx/xlsx-export.js +228 -19
- package/dist/esm/tsconfig.esm.tsbuildinfo +1 -1
- package/package.json +5 -3
- package/xlsx.d.ts +14 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../excel-parser/plugins/xlsx/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAGV,UAAU,EAEV,qBAAqB,EACrB,wBAAwB,EAExB,aAAa,EACb,cAAc,EAGd,UAAU,EAMV,cAAc,EACd,KAAK,EAEL,MAAM,EACN,gBAAgB,EAEhB,SAAS,EACV,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,EACV,aAAa,EAIb,UAAU,EACV,aAAa,EACd,MAAM,4BAA4B,CAAC;AAepC,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAW5C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAEvD,OAAO,KAAK,EACV,YAAY,EACZ,+BAA+B,EAC/B,sBAAsB,EACtB,iBAAiB,EACjB,kBAAkB,EACnB,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,4BAA4B,CAAC;AAU9E,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAEhE,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAgB,KAAK,eAAe,EAAE,MAAM,UAAU,CAAC;AAQ9D,OAAO,EAEL,KAAK,0BAA0B,EAEhC,MAAM,WAAW,CAAC;AACnB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAEpD,OAAO,EAGL,KAAK,eAAe,EAGrB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAKL,KAAK,qBAAqB,EAC3B,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../excel-parser/plugins/xlsx/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -18,7 +18,9 @@ import { getRelationsById } from "./relationships";
|
|
|
18
18
|
import { hasPowerQueryParts, } from "../../../power-query";
|
|
19
19
|
import { extractSheetViewProperties } from "./sheet-views";
|
|
20
20
|
import { EMPTY_SHEET_THREADED_COMMENTS, parsePersons, parseThreadedComments, } from "./threaded-comments";
|
|
21
|
-
import {
|
|
21
|
+
import { getChartExReferenceFromAnchor, processChartEx } from "./chartex";
|
|
22
|
+
import { buildFormControlEmbeds, parseFormControlPr, parseVmlControlCaptions, readLegacyDrawingRelId, readWorksheetControls, } from "./form-controls";
|
|
23
|
+
import { extractColor, fontNodeToTextFormat, getCellDataForStyleIndex, getCellValueAndFormat, resolveNamedCellStyles, } from "./styles";
|
|
22
24
|
import { extractThemeColors, extractThemeFonts, generateDarkThemeColors, } from "./theme";
|
|
23
25
|
export const XMLTagProcessor = (name, value) => Unescape(value);
|
|
24
26
|
function getWithFallback(source, paths) {
|
|
@@ -1410,6 +1412,7 @@ export class XlsxPlugin extends BaseWorkbookPlugin {
|
|
|
1410
1412
|
conditionalFormatting: false,
|
|
1411
1413
|
dataValidations: false,
|
|
1412
1414
|
drawing: false,
|
|
1415
|
+
controls: false,
|
|
1413
1416
|
};
|
|
1414
1417
|
const sheetPath = this.resolveSheetPath(relation.target);
|
|
1415
1418
|
const sheetRelPath = sheetPath.replace("worksheets", "worksheets/_rels") + ".rels";
|
|
@@ -1463,6 +1466,9 @@ export class XlsxPlugin extends BaseWorkbookPlugin {
|
|
|
1463
1466
|
case "drawing":
|
|
1464
1467
|
features.drawing = true;
|
|
1465
1468
|
break;
|
|
1469
|
+
case "controls":
|
|
1470
|
+
features.controls = true;
|
|
1471
|
+
break;
|
|
1466
1472
|
}
|
|
1467
1473
|
if (name !== "hyperlink") {
|
|
1468
1474
|
return;
|
|
@@ -2921,6 +2927,19 @@ export class XlsxPlugin extends BaseWorkbookPlugin {
|
|
|
2921
2927
|
for (const anchor of anchors) {
|
|
2922
2928
|
const chartRef = getChartReferenceFromAnchor(anchor);
|
|
2923
2929
|
if (!chartRef) {
|
|
2930
|
+
// Excel 2016+ chartex (treemap / sunburst / histogram …) anchors
|
|
2931
|
+
// carry `<cx:chart r:id>` inside an mc:AlternateContent choice.
|
|
2932
|
+
const chartExRef = getChartExReferenceFromAnchor(anchor);
|
|
2933
|
+
const chartExRId = get(chartExRef, "a$.r:id") || get(chartExRef, "a$.id");
|
|
2934
|
+
const chartExRel = chartExRId
|
|
2935
|
+
? drawingRelsArray.find((rel) => get(rel, "a$.Id") === chartExRId ||
|
|
2936
|
+
get(rel, "a$.id") === chartExRId)
|
|
2937
|
+
: undefined;
|
|
2938
|
+
if (chartExRel) {
|
|
2939
|
+
const chartEx = await processChartEx(chartExRel.a$.Target, drawingPath, anchor, sheetId, this.zipParser, this.xmlParser, sheetDimensions, resolveSheetId);
|
|
2940
|
+
if (chartEx)
|
|
2941
|
+
charts.push(chartEx);
|
|
2942
|
+
}
|
|
2924
2943
|
continue;
|
|
2925
2944
|
}
|
|
2926
2945
|
const chartRId = get(chartRef, "a$.r:id") ||
|
|
@@ -3036,6 +3055,10 @@ export class XlsxPlugin extends BaseWorkbookPlugin {
|
|
|
3036
3055
|
getTheme() {
|
|
3037
3056
|
return this.theme ?? defaultSpreadsheetTheme;
|
|
3038
3057
|
}
|
|
3058
|
+
/** `<cellStyles>` resolved to cell formats (toolbar "Workbook styles" gallery). */
|
|
3059
|
+
getNamedCellStyles() {
|
|
3060
|
+
return resolveNamedCellStyles(this.workbookStyles);
|
|
3061
|
+
}
|
|
3039
3062
|
/**
|
|
3040
3063
|
* The workbook default font — styles.xml fonts[0], the font every cell
|
|
3041
3064
|
* without an explicit font inherits. Exporters pass this through so the
|
|
@@ -4005,18 +4028,81 @@ export class XlsxPlugin extends BaseWorkbookPlugin {
|
|
|
4005
4028
|
for (const element of workSheets) {
|
|
4006
4029
|
const sheetId = Number(element.a$.sheetId);
|
|
4007
4030
|
const rid = element.a$["r:id"];
|
|
4008
|
-
// Drawings are referenced from a worksheet-level <drawing> element
|
|
4009
|
-
// skip the full-DOM parse when the SAX
|
|
4031
|
+
// Drawings are referenced from a worksheet-level <drawing> element and
|
|
4032
|
+
// form controls from <controls>; skip the full-DOM parse when the SAX
|
|
4033
|
+
// pass saw neither.
|
|
4010
4034
|
const features = this.sheetFeatures.get(rid);
|
|
4011
|
-
if (features && !features.drawing) {
|
|
4035
|
+
if (features && !features.drawing && !features.controls) {
|
|
4012
4036
|
continue;
|
|
4013
4037
|
}
|
|
4014
4038
|
const sheet_data = await this.getSheetData(rid);
|
|
4015
|
-
|
|
4016
|
-
|
|
4039
|
+
if (!features || features.drawing) {
|
|
4040
|
+
const drawings = await this._getDrawings(rid, sheetId, sheet_data);
|
|
4041
|
+
allDrawings.push(...drawings);
|
|
4042
|
+
}
|
|
4043
|
+
if (!features || features.controls) {
|
|
4044
|
+
allDrawings.push(...(await this._getFormControls(rid, sheetId, sheet_data)));
|
|
4045
|
+
}
|
|
4017
4046
|
}
|
|
4018
4047
|
return allDrawings;
|
|
4019
4048
|
}
|
|
4049
|
+
/**
|
|
4050
|
+
* Form controls: `<controls><control r:id>` → `xl/ctrlProps/ctrlPropN.xml`
|
|
4051
|
+
* (+ the caption from the sheet's legacy VML part), as `formControl`
|
|
4052
|
+
* embeds. Nothing is rendered interactively — they round-trip.
|
|
4053
|
+
*/
|
|
4054
|
+
async _getFormControls(rid, sheetId, sheetData) {
|
|
4055
|
+
const controls = readWorksheetControls(sheetData);
|
|
4056
|
+
if (!controls.length)
|
|
4057
|
+
return [];
|
|
4058
|
+
const target = this.relations[rid].target;
|
|
4059
|
+
const sheetPath = target.startsWith("/xl")
|
|
4060
|
+
? target.replace(/^\//gi, "")
|
|
4061
|
+
: `xl/${target}`;
|
|
4062
|
+
const sheetRelPath = sheetPath.replace("worksheets", "worksheets/_rels") + ".rels";
|
|
4063
|
+
const relTargets = new Map();
|
|
4064
|
+
try {
|
|
4065
|
+
const sheetRels = this.xmlParser.parse(await this.zipParser.getText(sheetRelPath));
|
|
4066
|
+
const list = get(sheetRels, "Relationships.Relationship");
|
|
4067
|
+
for (const rel of Array.isArray(list) ? list : list ? [list] : []) {
|
|
4068
|
+
const id = rel?.a$?.Id;
|
|
4069
|
+
const relTarget = rel?.a$?.Target;
|
|
4070
|
+
if (typeof id === "string" && typeof relTarget === "string") {
|
|
4071
|
+
relTargets.set(id, relTarget);
|
|
4072
|
+
}
|
|
4073
|
+
}
|
|
4074
|
+
}
|
|
4075
|
+
catch {
|
|
4076
|
+
return [];
|
|
4077
|
+
}
|
|
4078
|
+
const ctrlProps = new Map();
|
|
4079
|
+
for (const control of controls) {
|
|
4080
|
+
if (!control.relId || ctrlProps.has(control.relId))
|
|
4081
|
+
continue;
|
|
4082
|
+
const relTarget = relTargets.get(control.relId);
|
|
4083
|
+
if (!relTarget)
|
|
4084
|
+
continue;
|
|
4085
|
+
try {
|
|
4086
|
+
const xml = await this.zipParser.getText(this.resolveRelationshipTarget(sheetPath, relTarget));
|
|
4087
|
+
ctrlProps.set(control.relId, parseFormControlPr(this.xmlPreserveValueParser.parse(xml)));
|
|
4088
|
+
}
|
|
4089
|
+
catch {
|
|
4090
|
+
// Missing ctrlProp part — the control is skipped below.
|
|
4091
|
+
}
|
|
4092
|
+
}
|
|
4093
|
+
let captions = new Map();
|
|
4094
|
+
const legacyRelId = readLegacyDrawingRelId(sheetData);
|
|
4095
|
+
const vmlTarget = legacyRelId ? relTargets.get(legacyRelId) : undefined;
|
|
4096
|
+
if (vmlTarget) {
|
|
4097
|
+
try {
|
|
4098
|
+
captions = parseVmlControlCaptions(await this.zipParser.getText(this.resolveRelationshipTarget(sheetPath, vmlTarget)));
|
|
4099
|
+
}
|
|
4100
|
+
catch {
|
|
4101
|
+
// No VML part — controls import without captions.
|
|
4102
|
+
}
|
|
4103
|
+
}
|
|
4104
|
+
return buildFormControlEmbeds({ controls, sheetId, ctrlProps, captions });
|
|
4105
|
+
}
|
|
4020
4106
|
async getCharts() {
|
|
4021
4107
|
const allCharts = [];
|
|
4022
4108
|
const workSheets = this._getSheets();
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { GridRange } from "@rowsncolumns/common-types";
|
|
1
|
+
import type { GridRange, NamedCellStyle } from "@rowsncolumns/common-types";
|
|
2
2
|
import type { CellData, Color, ExtendedValue, TextFormat } from "@rowsncolumns/spreadsheet";
|
|
3
3
|
import type { WorkBook } from "../../workbook";
|
|
4
4
|
import type { WorkbookStyles } from "./index";
|
|
@@ -12,6 +12,13 @@ type MergeCellContext = {
|
|
|
12
12
|
* @param {WorkBook} workbook - The workbook object containing shared strings
|
|
13
13
|
* @returns {Object} Object containing value and cellFormat properties
|
|
14
14
|
*/
|
|
15
|
+
/** Days between the 1900 and 1904 date systems' serial 0. */
|
|
16
|
+
export declare const DATE_1904_OFFSET_DAYS = 1462;
|
|
17
|
+
/**
|
|
18
|
+
* Number formats whose serials move with the workbook's date system. Pure
|
|
19
|
+
* time-of-day values (`TIME`) are the same fraction in both systems.
|
|
20
|
+
*/
|
|
21
|
+
export declare const isEpochShiftedFormat: (type: string | undefined) => boolean;
|
|
15
22
|
export declare function getCellValueAndFormat(cell: any, workbook: WorkBook, enableCellXfsRegistry?: boolean, enableSharedStrings?: boolean, activeSheetName?: string, mergeContext?: MergeCellContext): CellData | null;
|
|
16
23
|
/**
|
|
17
24
|
* Build a format-only CellData for a style index that a cell inherits from
|
|
@@ -31,6 +38,13 @@ export declare function extractCellProtection(cell: any, workbookStyles: Workboo
|
|
|
31
38
|
locked?: boolean;
|
|
32
39
|
hidden?: boolean;
|
|
33
40
|
} | undefined;
|
|
41
|
+
/**
|
|
42
|
+
* Resolve the workbook's named cell styles (`<cellStyles>`) to cell formats
|
|
43
|
+
* by reading each entry's `cellStyleXfs[xfId]` — the same extraction a cell
|
|
44
|
+
* xf goes through, minus merge-anchor border merging. Powers the toolbar's
|
|
45
|
+
* "Workbook styles" gallery; entries whose xf is missing keep no `format`.
|
|
46
|
+
*/
|
|
47
|
+
export declare function resolveNamedCellStyles(workbookStyles: WorkbookStyles | undefined | null): NamedCellStyle[];
|
|
34
48
|
/**
|
|
35
49
|
* Parse a raw styles.xml `<font>` node into a TextFormat. Also used for the
|
|
36
50
|
* workbook default font (fonts[0]) so the exporter can round-trip it.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"styles.d.ts","sourceRoot":"","sources":["../../../../../excel-parser/plugins/xlsx/styles.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"styles.d.ts","sourceRoot":"","sources":["../../../../../excel-parser/plugins/xlsx/styles.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,SAAS,EAET,cAAc,EACf,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,EAGV,QAAQ,EAER,KAAK,EAEL,aAAa,EAIb,UAAU,EACX,MAAM,2BAA2B,CAAC;AAMnC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAuD9C,KAAK,gBAAgB,GAAG;IACtB,KAAK,EAAE,SAAS,CAAC;IACjB,qBAAqB,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CACzC,CAAC;AAEF;;;;;GAKG;AAEH,6DAA6D;AAC7D,eAAO,MAAM,qBAAqB,OAAO,CAAC;AAE1C;;;GAGG;AACH,eAAO,MAAM,oBAAoB,GAAI,MAAM,MAAM,GAAG,SAAS,KAAG,OACvB,CAAC;AAE1C,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,GAAG,EACT,QAAQ,EAAE,QAAQ,EAClB,qBAAqB,UAAQ,EAC7B,mBAAmB,UAAQ,EAC3B,eAAe,CAAC,EAAE,MAAM,EACxB,YAAY,CAAC,EAAE,gBAAgB,GAC9B,QAAQ,GAAG,IAAI,CAqKjB;AAED;;;;;;;GAOG;AACH,wBAAgB,wBAAwB,CACtC,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,QAAQ,EAClB,qBAAqB,UAAQ,GAC5B,QAAQ,GAAG,IAAI,CAoBjB;AAED,eAAO,MAAM,gBAAgB,GAAI,UAAU,GAAG,KAAG,aAAa,GAAG,SAShE,CAAC;AA2TF;;;GAGG;AACH,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,GAAG,EACT,cAAc,EAAE,cAAc,GAC7B;IAAE,MAAM,CAAC,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,SAAS,CAUpD;AAgCD;;;;;GAKG;AACH,wBAAgB,sBAAsB,CACpC,cAAc,EAAE,cAAc,GAAG,SAAS,GAAG,IAAI,GAChD,cAAc,EAAE,CAuBlB;AA4ND;;;GAGG;AACH,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,GAAG,EACT,cAAc,EAAE,cAAc,GAC7B,UAAU,GAAG,IAAI,CAwFnB;AAED;;GAEG;AACH,wBAAgB,YAAY,CAC1B,QAAQ,EAAE,GAAG,EACb,aAAa,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,SAAS,CAAC,GACxC,KAAK,GAAG,SAAS,GAAG,IAAI,CA8C1B"}
|
|
@@ -60,6 +60,13 @@ const getInlineStringValue = (cell) => {
|
|
|
60
60
|
* @param {WorkBook} workbook - The workbook object containing shared strings
|
|
61
61
|
* @returns {Object} Object containing value and cellFormat properties
|
|
62
62
|
*/
|
|
63
|
+
/** Days between the 1900 and 1904 date systems' serial 0. */
|
|
64
|
+
export const DATE_1904_OFFSET_DAYS = 1462;
|
|
65
|
+
/**
|
|
66
|
+
* Number formats whose serials move with the workbook's date system. Pure
|
|
67
|
+
* time-of-day values (`TIME`) are the same fraction in both systems.
|
|
68
|
+
*/
|
|
69
|
+
export const isEpochShiftedFormat = (type) => type === "DATE" || type === "DATE_TIME";
|
|
63
70
|
export function getCellValueAndFormat(cell, workbook, enableCellXfsRegistry = false, enableSharedStrings = false, activeSheetName, mergeContext) {
|
|
64
71
|
if (!cell) {
|
|
65
72
|
return null;
|
|
@@ -116,6 +123,16 @@ export function getCellValueAndFormat(cell, workbook, enableCellXfsRegistry = fa
|
|
|
116
123
|
const styleId = workbook.registerFormat(cellFormat);
|
|
117
124
|
ef = { sid: styleId };
|
|
118
125
|
}
|
|
126
|
+
// A 1904-system workbook stores its date serials 1462 days below the 1900
|
|
127
|
+
// system the calculation engine, the formatter and the exporter run on.
|
|
128
|
+
// Date / datetime-formatted numbers (literals and cached formula results)
|
|
129
|
+
// are converted here, as `rnc-import` does, so they display and compute as
|
|
130
|
+
// the same calendar dates; time-of-day serials are epoch-independent.
|
|
131
|
+
if (typeof rawValue === "number" &&
|
|
132
|
+
isEpochShiftedFormat(cellFormat.numberFormat?.type) &&
|
|
133
|
+
workbook.getUse1904Epoch()) {
|
|
134
|
+
rawValue += DATE_1904_OFFSET_DAYS;
|
|
135
|
+
}
|
|
119
136
|
// User entered value
|
|
120
137
|
let ue;
|
|
121
138
|
let ev;
|
|
@@ -523,6 +540,69 @@ function extractCellFormat(cell, workbookStyles, mergeContext) {
|
|
|
523
540
|
const xfId = xfIdStr !== undefined ? parseInt(xfIdStr) : 0;
|
|
524
541
|
const parentXf = xfId > 0 ? workbookStyles.getCellStyleXf(xfId) : null;
|
|
525
542
|
const xf = buildEffectiveXf(cellXf, parentXf);
|
|
543
|
+
return extractCellFormatFromXf(xf, workbookStyles, cell, mergeContext);
|
|
544
|
+
}
|
|
545
|
+
/**
|
|
546
|
+
* Resolve the workbook's named cell styles (`<cellStyles>`) to cell formats
|
|
547
|
+
* by reading each entry's `cellStyleXfs[xfId]` — the same extraction a cell
|
|
548
|
+
* xf goes through, minus merge-anchor border merging. Powers the toolbar's
|
|
549
|
+
* "Workbook styles" gallery; entries whose xf is missing keep no `format`.
|
|
550
|
+
*/
|
|
551
|
+
export function resolveNamedCellStyles(workbookStyles) {
|
|
552
|
+
if (!workbookStyles)
|
|
553
|
+
return [];
|
|
554
|
+
return workbookStyles.namedCellStyles.map((entry) => {
|
|
555
|
+
const xf = workbookStyles.getCellStyleXf(entry.xfId);
|
|
556
|
+
if (!xf)
|
|
557
|
+
return { ...entry };
|
|
558
|
+
// Drop empty slots and the default General number format — a style that
|
|
559
|
+
// carries nothing else is format-less as far as the gallery is concerned.
|
|
560
|
+
const format = Object.fromEntries(Object.entries(extractCellFormatFromXf(maskCellStyleXf(xf), workbookStyles)).filter(([key, value]) => value != null &&
|
|
561
|
+
!(key === "numberFormat" &&
|
|
562
|
+
value.type === "GENERAL" &&
|
|
563
|
+
(!value.pattern ||
|
|
564
|
+
value.pattern === "General"))));
|
|
565
|
+
return Object.keys(format).length ? { ...entry, format } : { ...entry };
|
|
566
|
+
});
|
|
567
|
+
}
|
|
568
|
+
const isApplyFlagOff = (value) => value === "0" || value === "false";
|
|
569
|
+
/**
|
|
570
|
+
* A `cellStyleXfs` entry only *includes* an attribute when its `applyX` flag
|
|
571
|
+
* is not off (OOXML §18.8.45): Excel writes `applyFont="0" applyFill="0"
|
|
572
|
+
* applyBorder="0" applyAlignment="0"` on `Percent` / `Comma` / `Currency`,
|
|
573
|
+
* whose Style dialog has only "Number" ticked, so applying them must change
|
|
574
|
+
* the number format alone — extracting their `fontId="0"` as a real font
|
|
575
|
+
* would reset the cell's font family / size and un-bold it. Strip the
|
|
576
|
+
* excluded attributes before extraction. (Cell `cellXfs` entries follow the
|
|
577
|
+
* inverse rule and go through `buildEffectiveXf` instead.)
|
|
578
|
+
*/
|
|
579
|
+
function maskCellStyleXf(xf) {
|
|
580
|
+
const attrs = xf?.a$ ?? {};
|
|
581
|
+
const masked = { ...xf, a$: { ...attrs } };
|
|
582
|
+
if (isApplyFlagOff(attrs.applyNumberFormat))
|
|
583
|
+
delete masked.a$.numFmtId;
|
|
584
|
+
if (isApplyFlagOff(attrs.applyFont))
|
|
585
|
+
delete masked.a$.fontId;
|
|
586
|
+
if (isApplyFlagOff(attrs.applyFill))
|
|
587
|
+
delete masked.a$.fillId;
|
|
588
|
+
if (isApplyFlagOff(attrs.applyBorder))
|
|
589
|
+
delete masked.a$.borderId;
|
|
590
|
+
if (isApplyFlagOff(attrs.applyAlignment)) {
|
|
591
|
+
delete masked.alignment;
|
|
592
|
+
delete masked["x:alignment"];
|
|
593
|
+
}
|
|
594
|
+
if (isApplyFlagOff(attrs.applyProtection)) {
|
|
595
|
+
delete masked.protection;
|
|
596
|
+
delete masked["x:protection"];
|
|
597
|
+
}
|
|
598
|
+
return masked;
|
|
599
|
+
}
|
|
600
|
+
/**
|
|
601
|
+
* Extract a cell format from a resolved `<xf>` node. `cell` / `mergeContext`
|
|
602
|
+
* only matter for merge-anchor border merging and may be omitted.
|
|
603
|
+
*/
|
|
604
|
+
function extractCellFormatFromXf(xf, workbookStyles, cell, mergeContext) {
|
|
605
|
+
const cellFormat = {};
|
|
526
606
|
// Extract number format
|
|
527
607
|
const numberFormat = extractNumberFormat(xf, workbookStyles);
|
|
528
608
|
if (!(numberFormat?.type === "GENERAL" && !numberFormat.pattern)) {
|
|
@@ -2,4 +2,11 @@ import type { IWorkbookPlugin } from "./interface";
|
|
|
2
2
|
export type PluginFactory = () => IWorkbookPlugin;
|
|
3
3
|
export declare const PARSER_REGISTRY: Record<string, PluginFactory>;
|
|
4
4
|
export declare function getPluginForFile(file: File | string): IWorkbookPlugin;
|
|
5
|
+
/**
|
|
6
|
+
* Content-aware plugin resolution. The extension picks the parser, except:
|
|
7
|
+
* an OOXML zip saved with a `.xls` name opens through the xlsx parser (Excel
|
|
8
|
+
* opens those too), and a BIFF (CFB) container opens through the `.xls`
|
|
9
|
+
* reader whatever its name says.
|
|
10
|
+
*/
|
|
11
|
+
export declare function resolvePluginForBuffer(file: File | string, buffer: ArrayBuffer | File): Promise<IWorkbookPlugin>;
|
|
5
12
|
//# sourceMappingURL=registry.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../excel-parser/registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../excel-parser/registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAanD,MAAM,MAAM,aAAa,GAAG,MAAM,eAAe,CAAC;AAElD,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAMzD,CAAC;AAEF,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM,GAAG,eAAe,CAWrE;AAED;;;;;GAKG;AACH,wBAAsB,sBAAsB,CAC1C,IAAI,EAAE,IAAI,GAAG,MAAM,EACnB,MAAM,EAAE,WAAW,GAAG,IAAI,GACzB,OAAO,CAAC,eAAe,CAAC,CAU1B"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { OdsPlugin } from "./plugins/ods/index";
|
|
2
|
-
import { XlsPlugin } from "./plugins/xls/index";
|
|
2
|
+
import { CFB_SIGNATURE, readHeader, startsWith, XlsPlugin, ZIP_SIGNATURE, } from "./plugins/xls/index";
|
|
3
3
|
import { XlsbPlugin } from "./plugins/xlsb/index";
|
|
4
4
|
import { XlsmPlugin } from "./plugins/xlsm/index";
|
|
5
5
|
import { XlsxPlugin } from "./plugins/xlsx/index";
|
|
@@ -20,3 +20,20 @@ export function getPluginForFile(file) {
|
|
|
20
20
|
// Current behavior assumes everything is xlsx-like
|
|
21
21
|
return new XlsxPlugin();
|
|
22
22
|
}
|
|
23
|
+
/**
|
|
24
|
+
* Content-aware plugin resolution. The extension picks the parser, except:
|
|
25
|
+
* an OOXML zip saved with a `.xls` name opens through the xlsx parser (Excel
|
|
26
|
+
* opens those too), and a BIFF (CFB) container opens through the `.xls`
|
|
27
|
+
* reader whatever its name says.
|
|
28
|
+
*/
|
|
29
|
+
export async function resolvePluginForBuffer(file, buffer) {
|
|
30
|
+
const header = await readHeader(buffer, CFB_SIGNATURE.length);
|
|
31
|
+
if (startsWith(header, CFB_SIGNATURE)) {
|
|
32
|
+
return new XlsPlugin();
|
|
33
|
+
}
|
|
34
|
+
const plugin = getPluginForFile(file);
|
|
35
|
+
if (plugin instanceof XlsPlugin && startsWith(header, ZIP_SIGNATURE)) {
|
|
36
|
+
return new XlsxPlugin();
|
|
37
|
+
}
|
|
38
|
+
return plugin;
|
|
39
|
+
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { CellData, ConditionalFormatRule, DataValidationRuleRecord, EmbeddedChart, NamedRange, ProtectedRange, Slicer, SpreadsheetTheme, TableView } from "@rowsncolumns/spreadsheet";
|
|
2
|
-
import type { CommentThread, IterativeCalculationOptions } from "@rowsncolumns/common-types";
|
|
2
|
+
import type { CommentThread, IterativeCalculationOptions, NamedCellStyle } from "@rowsncolumns/common-types";
|
|
3
3
|
import type { EmbeddedObject } from "@rowsncolumns/spreadsheet";
|
|
4
4
|
import { type Sheet } from "@rowsncolumns/spreadsheet";
|
|
5
5
|
import type { RowData, RowDataWithValue } from "@rowsncolumns/common-types";
|
|
@@ -211,6 +211,12 @@ export type WorkerResponse = {
|
|
|
211
211
|
error?: string;
|
|
212
212
|
requiresRecalc?: boolean;
|
|
213
213
|
iterativeCalculationOptions?: IterativeCalculationOptions;
|
|
214
|
+
/**
|
|
215
|
+
* The source workbook declared the 1904 date system. The emitted cell
|
|
216
|
+
* data is already converted to the 1900 system (date-formatted
|
|
217
|
+
* serials shifted by 1462 days) — do not feed this into
|
|
218
|
+
* `SheetCell.setUse1904` or `createExcelFile({ use1904 })`.
|
|
219
|
+
*/
|
|
214
220
|
use1904?: boolean;
|
|
215
221
|
} | {
|
|
216
222
|
responseType: ResponseType.GET_SHEETS_SUCCESS;
|
|
@@ -266,6 +272,8 @@ export type WorkerResponse = {
|
|
|
266
272
|
} | {
|
|
267
273
|
responseType: ResponseType.GET_THEME_SUCCESS;
|
|
268
274
|
theme?: SpreadsheetTheme;
|
|
275
|
+
/** `<cellStyles>` resolved to formats — the "Workbook styles" gallery. */
|
|
276
|
+
namedCellStyles?: NamedCellStyle[];
|
|
269
277
|
} | {
|
|
270
278
|
responseType: ResponseType.PARSE_EXCEL_COMPLETE;
|
|
271
279
|
} | {
|
|
@@ -333,6 +341,7 @@ export type WorkerResponse = {
|
|
|
333
341
|
namedRanges: NamedRange[];
|
|
334
342
|
requiresRecalc?: boolean;
|
|
335
343
|
iterativeCalculationOptions?: IterativeCalculationOptions;
|
|
344
|
+
/** Source workbook was 1904-system; chunk data is 1900-system (see `PARSE_EXCEL_SUCCESS`). */
|
|
336
345
|
use1904?: boolean;
|
|
337
346
|
} | ({
|
|
338
347
|
responseType: ResponseType.SHEET_CHUNK;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../excel-parser/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,QAAQ,EACR,qBAAqB,EACrB,wBAAwB,EACxB,aAAa,EACb,UAAU,EACV,cAAc,EACd,MAAM,EACN,gBAAgB,EAChB,SAAS,EACV,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,EACV,aAAa,EACb,2BAA2B,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../excel-parser/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -17,6 +17,8 @@ export declare class WorkBook implements IWorkbookPlugin {
|
|
|
17
17
|
getSheetCatalog(): Promise<SheetCatalogEntry[]>;
|
|
18
18
|
getSheet(sheetId: number, minRowCount?: number, minColumnCount?: number): Promise<[Sheet, TableView[]]>;
|
|
19
19
|
getTheme(): import("@rowsncolumns/spreadsheet").SpreadsheetTheme;
|
|
20
|
+
/** Named cell styles resolved to formats; empty for formats without them. */
|
|
21
|
+
getNamedCellStyles(): import("@rowsncolumns/common-types").NamedCellStyle[];
|
|
20
22
|
/** Workbook default font (styles.xml fonts[0]); null when unavailable. */
|
|
21
23
|
getDefaultFont(): import("@rowsncolumns/common-types").TextFormat | null;
|
|
22
24
|
getFonts(): string[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workbook.d.ts","sourceRoot":"","sources":["../../../excel-parser/workbook.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"workbook.d.ts","sourceRoot":"","sources":["../../../excel-parser/workbook.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAGlE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EACL,2BAA2B,IAAI,4BAA4B,EAC3D,cAAc,EACf,MAAM,sBAAsB,CAAC;AAE9B,OAAO,KAAK,EACV,+BAA+B,EAC/B,iBAAiB,EAClB,MAAM,SAAS,CAAC;AAsBjB,qBAAa,QAAS,YAAW,eAAe;IAC9C,OAAO,CAAC,MAAM,CAAmB;;IAI3B,IAAI,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM;IAqB3E,OAAO;IAIP,aAAa;IAIb,SAAS,CAAC,WAAW,CAAC,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,MAAM;IAIvD;;;;OAIG;IACG,eAAe,IAAI,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAc/C,QAAQ,CACZ,OAAO,EAAE,MAAM,EACf,WAAW,CAAC,EAAE,MAAM,EACpB,cAAc,CAAC,EAAE,MAAM,GACtB,OAAO,CAAC,CAAC,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;IAehC,QAAQ;IAIR,6EAA6E;IAC7E,kBAAkB;IAIlB,0EAA0E;IAC1E,cAAc;IAId,QAAQ;IAIR,UAAU;IAIV,SAAS;IAIT,IAAI,cAAc,QAEjB;IAED,IAAI,aAAa,yBAEhB;IAED,IAAI,oBAAoB,kFAEvB;IAED,IAAI,gBAAgB,8CAEnB;IAED,cAAc;IAId,8BAA8B;IAI9B,eAAe;IAIf,gBAAgB;IAIhB,gBAAgB,CACd,SAAS,CAAC,EAAE,MAAM,EAClB,qBAAqB,CAAC,EAAE,OAAO,EAC/B,mBAAmB,CAAC,EAAE,OAAO,EAC7B,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,KAAK,IAAI;IAUxD,wBAAwB,CAAC,OAAO,EAAE,+BAA+B;IAmBjE,kBAAkB,CAAC,OAAO,EAAE,MAAM;IAIlC,WAAW;IAIX,SAAS;IAIT,wBAAwB,CAAC,OAAO,CAAC,EAAE,MAAM;IAgBzC,kBAAkB,CAAC,OAAO,CAAC,EAAE,MAAM;IAgBnC,cAAc;IAId,kBAAkB,CAAC,OAAO,CAAC,EAAE,MAAM;IAInC,iBAAiB,CAAC,OAAO,CAAC,EAAE,MAAM;IAIlC,UAAU;IAIV,cAAc;IAId,aAAa;IAIb,gBAAgB;IAIV,aAAa;IAInB,cAAc,CAAC,MAAM,EAAE,GAAG;CAM3B;AAED,eAAO,MAAM,2BAA2B,qCAA+B,CAAC;AACxE,OAAO,EAAE,cAAc,EAAE,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { CFBDecryptor, detectCfbContainerKind
|
|
1
|
+
import { CFBDecryptor, detectCfbContainerKind } from "./cfb-decryptor";
|
|
2
2
|
import { getChartReferenceFromAnchor as _getChartReferenceFromAnchor, WorkbookStyles, } from "./plugins/xlsx/index";
|
|
3
|
-
import {
|
|
3
|
+
import { resolvePluginForBuffer } from "./registry";
|
|
4
4
|
const CFB_SIGNATURE = [0xd0, 0xcf, 0x11, 0xe0, 0xa1, 0xb1, 0x1a, 0xe1];
|
|
5
5
|
const isCFBFile = async (source) => {
|
|
6
6
|
let header;
|
|
@@ -23,16 +23,18 @@ export class WorkBook {
|
|
|
23
23
|
constructor() { }
|
|
24
24
|
async load(buffer, fileName, password) {
|
|
25
25
|
if (await isCFBFile(buffer)) {
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
if (
|
|
30
|
-
|
|
26
|
+
// A CFB container is either an Office-encrypted OOXML package (decrypt,
|
|
27
|
+
// then parse the zip) or a legacy BIFF `.xls` workbook (the `.xls`
|
|
28
|
+
// reader takes the container as-is — no password prompt).
|
|
29
|
+
if ((await detectCfbContainerKind(buffer)) !== "legacy-xls") {
|
|
30
|
+
if (!password) {
|
|
31
|
+
throw new Error("PASSWORD_REQUIRED");
|
|
32
|
+
}
|
|
33
|
+
const decryptedBuffer = await CFBDecryptor.decrypt(buffer, password);
|
|
34
|
+
buffer = decryptedBuffer;
|
|
31
35
|
}
|
|
32
|
-
const decryptedBuffer = await CFBDecryptor.decrypt(buffer, password);
|
|
33
|
-
buffer = decryptedBuffer;
|
|
34
36
|
}
|
|
35
|
-
this.plugin =
|
|
37
|
+
this.plugin = await resolvePluginForBuffer(fileName || "unknown.xlsx", buffer);
|
|
36
38
|
await this.plugin.load(buffer, password);
|
|
37
39
|
}
|
|
38
40
|
dispose() {
|
|
@@ -76,6 +78,10 @@ export class WorkBook {
|
|
|
76
78
|
getTheme() {
|
|
77
79
|
return this.plugin.getTheme();
|
|
78
80
|
}
|
|
81
|
+
/** Named cell styles resolved to formats; empty for formats without them. */
|
|
82
|
+
getNamedCellStyles() {
|
|
83
|
+
return this.plugin.getNamedCellStyles?.() ?? [];
|
|
84
|
+
}
|
|
79
85
|
/** Workbook default font (styles.xml fonts[0]); null when unavailable. */
|
|
80
86
|
getDefaultFont() {
|
|
81
87
|
return this.plugin.getDefaultFont?.() ?? null;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { canonicalizeRichSharedString, contentHash } from "@rowsncolumns/utils";
|
|
2
|
-
import { CFBDecryptor, detectCfbContainerKind,
|
|
2
|
+
import { CFBDecryptor, detectCfbContainerKind, } from "./cfb-decryptor";
|
|
3
3
|
import { readExcelFile } from "./helpers";
|
|
4
4
|
import { RequestType, ResponseType } from "./types";
|
|
5
5
|
import { delay } from "./utils";
|
|
@@ -318,15 +318,11 @@ const runLoadSheet = async (s, msg) => {
|
|
|
318
318
|
};
|
|
319
319
|
const openSessionWorkbook = async (s, password) => {
|
|
320
320
|
const buffer = s.file instanceof File ? s.file : await readExcelFile(s.file);
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
error: LEGACY_XLS_UNSUPPORTED_MESSAGE,
|
|
327
|
-
});
|
|
328
|
-
return;
|
|
329
|
-
}
|
|
321
|
+
// A legacy BIFF `.xls` is a CFB container too, but an unencrypted one —
|
|
322
|
+
// `WorkBook.load` routes it to the `.xls` reader; only Office-encrypted
|
|
323
|
+
// packages go through the password / decrypt path below.
|
|
324
|
+
if ((await isCFBFile(buffer)) &&
|
|
325
|
+
(await detectCfbContainerKind(buffer)) !== "legacy-xls") {
|
|
330
326
|
if (!password) {
|
|
331
327
|
s.pendingPassword = true;
|
|
332
328
|
self.postMessage({
|
|
@@ -483,14 +479,8 @@ self.onmessage = async (e) => {
|
|
|
483
479
|
currentFileName =
|
|
484
480
|
e.data.file instanceof File ? e.data.file.name : "unknown.xlsx";
|
|
485
481
|
// Check if file uses Office encryption (CFB format)
|
|
486
|
-
if (await isCFBFile(buffer))
|
|
487
|
-
|
|
488
|
-
self.postMessage({
|
|
489
|
-
responseType: ResponseType.ERROR,
|
|
490
|
-
error: LEGACY_XLS_UNSUPPORTED_MESSAGE,
|
|
491
|
-
});
|
|
492
|
-
return;
|
|
493
|
-
}
|
|
482
|
+
if ((await isCFBFile(buffer)) &&
|
|
483
|
+
(await detectCfbContainerKind(buffer)) !== "legacy-xls") {
|
|
494
484
|
self.postMessage({
|
|
495
485
|
responseType: ResponseType.PASSWORD_REQUIRED,
|
|
496
486
|
message: "This file uses Office encryption and requires a password.",
|
|
@@ -532,6 +522,7 @@ self.onmessage = async (e) => {
|
|
|
532
522
|
self.postMessage({
|
|
533
523
|
responseType: ResponseType.GET_THEME_SUCCESS,
|
|
534
524
|
theme: workbook.getTheme(),
|
|
525
|
+
namedCellStyles: workbook.getNamedCellStyles(),
|
|
535
526
|
});
|
|
536
527
|
try {
|
|
537
528
|
self.postMessage({
|
|
@@ -816,6 +807,7 @@ self.onmessage = async (e) => {
|
|
|
816
807
|
self.postMessage({
|
|
817
808
|
responseType: ResponseType.GET_THEME_SUCCESS,
|
|
818
809
|
theme: workbook.getTheme(),
|
|
810
|
+
namedCellStyles: workbook.getNamedCellStyles(),
|
|
819
811
|
});
|
|
820
812
|
try {
|
|
821
813
|
self.postMessage({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chart-builder.d.ts","sourceRoot":"","sources":["../../../../exporter/xlsx/chart-builder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAGV,aAAa,EAEd,MAAM,2BAA2B,CAAC;AAovCnC,eAAO,MAAM,aAAa,GACxB,OAAO,aAAa,EACpB,eAAe,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,KACjC,MAAM,GAAG,
|
|
1
|
+
{"version":3,"file":"chart-builder.d.ts","sourceRoot":"","sources":["../../../../exporter/xlsx/chart-builder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAGV,aAAa,EAEd,MAAM,2BAA2B,CAAC;AAovCnC,eAAO,MAAM,aAAa,GACxB,OAAO,aAAa,EACpB,eAAe,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,KACjC,MAAM,GAAG,SA+lBX,CAAC"}
|
|
@@ -1456,34 +1456,6 @@ export const buildChartXml = (chart, sheetNameById) => {
|
|
|
1456
1456
|
targetChart["c:ser"] = seriesContainer;
|
|
1457
1457
|
chartSpace["c:chartSpace"]["c:chart"] = chartDoc;
|
|
1458
1458
|
}
|
|
1459
|
-
else if (chartType === "treemap" || chartType === "sunburst") {
|
|
1460
|
-
const treeSpec = chart.spec;
|
|
1461
|
-
const labelRef = formatRangeRef(getPrimarySource(treeSpec.labels?.[0]), sheetNameById);
|
|
1462
|
-
const sizeRef = formatRangeRef(getPrimarySource(treeSpec.sizeData?.[0]), sheetNameById);
|
|
1463
|
-
if (!labelRef || !sizeRef)
|
|
1464
|
-
return undefined;
|
|
1465
|
-
if (chartType === "sunburst") {
|
|
1466
|
-
const pieChart = buildPieChart(labelRef, sizeRef, chartTitle, chartSubtitle);
|
|
1467
|
-
chartSpace["c:chartSpace"]["c:chart"] = pieChart;
|
|
1468
|
-
}
|
|
1469
|
-
else {
|
|
1470
|
-
const columnChart = cloneTemplate(column_json);
|
|
1471
|
-
applyChartTitle(columnChart, chartTitle, chartTitleFmt, chartSubtitle);
|
|
1472
|
-
const bar = columnChart["c:plotArea"]["c:barChart"];
|
|
1473
|
-
const seriesContainer = bar["c:ser"];
|
|
1474
|
-
const seriesNode = cloneTemplate(column_series);
|
|
1475
|
-
seriesNode["c:idx"] = { a$: { val: "0" } };
|
|
1476
|
-
seriesNode["c:order"] = { a$: { val: "0" } };
|
|
1477
|
-
seriesNode["c:cat"] = {
|
|
1478
|
-
"c:strRef": {
|
|
1479
|
-
"c:f": labelRef,
|
|
1480
|
-
},
|
|
1481
|
-
};
|
|
1482
|
-
seriesNode["c:val"]["c:numRef"]["c:f"] = sizeRef;
|
|
1483
|
-
seriesContainer.push(seriesNode);
|
|
1484
|
-
chartSpace["c:chartSpace"]["c:chart"] = columnChart;
|
|
1485
|
-
}
|
|
1486
|
-
}
|
|
1487
1459
|
else {
|
|
1488
1460
|
return undefined;
|
|
1489
1461
|
}
|