ooxml.js 2.9.0 → 2.9.2
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/typed/xlsx/build.cjs +4 -4
- package/dist/typed/xlsx/build.js +1 -1
- package/dist/typed/xlsx/content.cjs +2 -3
- package/dist/typed/xlsx/content.js +1 -2
- package/dist/typed/xlsx/defined-names.cjs +6 -6
- package/dist/typed/xlsx/defined-names.js +1 -1
- package/package.json +2 -2
- package/dist/typed/xlsx/a1.cjs +0 -64
- package/dist/typed/xlsx/a1.d.cts +0 -19
- package/dist/typed/xlsx/a1.d.ts +0 -19
- package/dist/typed/xlsx/a1.js +0 -58
|
@@ -3,7 +3,6 @@ const require_xml_fragment = require("../../xml/fragment.cjs");
|
|
|
3
3
|
const require_xml_entities = require("../../xml/entities.cjs");
|
|
4
4
|
require("../shared/units.cjs");
|
|
5
5
|
const require_typed_xlsx_shared_strings = require("./shared-strings.cjs");
|
|
6
|
-
const require_typed_xlsx_a1 = require("./a1.cjs");
|
|
7
6
|
const require_typed_xlsx_defined_names = require("./defined-names.cjs");
|
|
8
7
|
const require_typed_xlsx_number_format = require("./number-format.cjs");
|
|
9
8
|
const require_typed_xlsx_util = require("./util.cjs");
|
|
@@ -11,6 +10,7 @@ const require_typed_xlsx_print_settings = require("./print-settings.cjs");
|
|
|
11
10
|
const require_typed_xlsx_serial = require("./serial.cjs");
|
|
12
11
|
const require_typed_xlsx_styles = require("./styles.cjs");
|
|
13
12
|
const require_typed_xlsx_units = require("./units.cjs");
|
|
13
|
+
let document_schema_js = require("document-schema.js");
|
|
14
14
|
//#region src/typed/xlsx/build.ts
|
|
15
15
|
const SML_NS = "http://schemas.openxmlformats.org/spreadsheetml/2006/main";
|
|
16
16
|
const REL_NS = "http://schemas.openxmlformats.org/officeDocument/2006/relationships";
|
|
@@ -289,7 +289,7 @@ function computeDimension(sheet) {
|
|
|
289
289
|
hasAny = true;
|
|
290
290
|
maxRow = Math.max(maxRow, row.index);
|
|
291
291
|
}
|
|
292
|
-
return hasAny ?
|
|
292
|
+
return hasAny ? (0, document_schema_js.rangeReference)({
|
|
293
293
|
startRow: 0,
|
|
294
294
|
startColumn: 0,
|
|
295
295
|
endRow: maxRow,
|
|
@@ -371,7 +371,7 @@ function buildCellElement(cell, sharedStrings, cellFormats) {
|
|
|
371
371
|
id: 0
|
|
372
372
|
}, decoration);
|
|
373
373
|
const attrs = {
|
|
374
|
-
r:
|
|
374
|
+
r: (0, document_schema_js.cellReference)(cell.row, cell.column),
|
|
375
375
|
s: String(styleIndex)
|
|
376
376
|
};
|
|
377
377
|
if (cell.formula !== void 0) children.push(require_xml_fragment.el("f", {}, [require_xml_fragment.txt(require_xml_entities.encodeXmlText(cell.formula))]));
|
|
@@ -411,7 +411,7 @@ function buildMergeCellsElement(cells) {
|
|
|
411
411
|
const mergeCellElements = merges.map((cell) => {
|
|
412
412
|
const endRow = cell.row + (cell.rowSpan ?? 1) - 1;
|
|
413
413
|
const endColumn = cell.column + (cell.colSpan ?? 1) - 1;
|
|
414
|
-
return require_xml_fragment.el("mergeCell", { ref:
|
|
414
|
+
return require_xml_fragment.el("mergeCell", { ref: (0, document_schema_js.rangeReference)({
|
|
415
415
|
startRow: cell.row,
|
|
416
416
|
startColumn: cell.column,
|
|
417
417
|
endRow,
|
package/dist/typed/xlsx/build.js
CHANGED
|
@@ -2,7 +2,6 @@ import { el, txt } from "../../xml/fragment.js";
|
|
|
2
2
|
import { encodeXmlText } from "../../xml/entities.js";
|
|
3
3
|
import "../shared/units.js";
|
|
4
4
|
import { SharedStringTable } from "./shared-strings.js";
|
|
5
|
-
import { cellReference, rangeReference } from "./a1.js";
|
|
6
5
|
import { XLNM_PRINT_AREA, XLNM_PRINT_TITLES, buildPrintAreaValue, buildPrintTitlesValue } from "./defined-names.js";
|
|
7
6
|
import { BOOLEAN_NUMBER_FORMAT, DATE_NUMBER_FORMAT, DATE_TIME_NUMBER_FORMAT, PERCENTAGE_NUMBER_FORMAT, TIME_NUMBER_FORMAT, currencyNumberFormat } from "./number-format.js";
|
|
8
7
|
import { pageSizeToPaperSizeCode, ptToUniversalMeasure, writeXmlBool } from "./util.js";
|
|
@@ -10,6 +9,7 @@ import { DEFAULT_HEADER_FOOTER_MARGIN_PT } from "./print-settings.js";
|
|
|
10
9
|
import { isoDateTimeToSerial, isoDateToSerial, isoTimeToSerial } from "./serial.js";
|
|
11
10
|
import { CellFormatTable, RESERVED_BORDER_INDICES, RESERVED_FILL_INDICES } from "./styles.js";
|
|
12
11
|
import { ptToColumnWidthChars } from "./units.js";
|
|
12
|
+
import { cellReference, rangeReference } from "document-schema.js";
|
|
13
13
|
//#region src/typed/xlsx/build.ts
|
|
14
14
|
const SML_NS = "http://schemas.openxmlformats.org/spreadsheetml/2006/main";
|
|
15
15
|
const REL_NS = "http://schemas.openxmlformats.org/officeDocument/2006/relationships";
|
|
@@ -2,7 +2,6 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
|
2
2
|
const require_typed_util = require("../util.cjs");
|
|
3
3
|
const require_typed_shared_metadata = require("../shared/metadata.cjs");
|
|
4
4
|
const require_typed_xlsx_shared_strings = require("./shared-strings.cjs");
|
|
5
|
-
const require_typed_xlsx_a1 = require("./a1.cjs");
|
|
6
5
|
const require_typed_xlsx_defined_names = require("./defined-names.cjs");
|
|
7
6
|
const require_typed_xlsx_number_format = require("./number-format.cjs");
|
|
8
7
|
const require_typed_xlsx_util = require("./util.cjs");
|
|
@@ -238,7 +237,7 @@ function readCellValue(cell, sharedStrings, numericFormats) {
|
|
|
238
237
|
}
|
|
239
238
|
function readCell(cell, sharedStrings, context) {
|
|
240
239
|
const reference = require_typed_util.attr(cell, "r");
|
|
241
|
-
const position = reference === void 0 ? void 0 :
|
|
240
|
+
const position = reference === void 0 ? void 0 : (0, document_schema_js.parseCellReference)(reference);
|
|
242
241
|
if (position === void 0) return;
|
|
243
242
|
const formulaEl = require_typed_util.childrenWithTag(cell, "f")[0];
|
|
244
243
|
const formula = formulaEl === void 0 ? void 0 : require_typed_util.textContent(formulaEl);
|
|
@@ -276,7 +275,7 @@ function applyMergedRanges(worksheet, cells) {
|
|
|
276
275
|
for (const cell of cells) byPosition.set(`${cell.row}:${cell.column}`, cell);
|
|
277
276
|
for (const mergeCell of require_typed_util.childrenWithTag(mergeCellsEl, "mergeCell")) {
|
|
278
277
|
const ref = require_typed_util.attr(mergeCell, "ref");
|
|
279
|
-
const range = ref === void 0 ? void 0 :
|
|
278
|
+
const range = ref === void 0 ? void 0 : (0, document_schema_js.parseRangeReference)(ref);
|
|
280
279
|
if (range === void 0) continue;
|
|
281
280
|
const anchor = byPosition.get(`${range.startRow}:${range.startColumn}`);
|
|
282
281
|
if (anchor === void 0) continue;
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { attr, childrenWithTag, elementsWithTag, resolveRelationships, rootElement, textContent } from "../util.js";
|
|
2
2
|
import { readCoreProperties } from "../shared/metadata.js";
|
|
3
3
|
import { loadSharedStrings } from "./shared-strings.js";
|
|
4
|
-
import { parseCellReference, parseRangeReference } from "./a1.js";
|
|
5
4
|
import { readDefinedNamesBySheet } from "./defined-names.js";
|
|
6
5
|
import { classifyNumberFormat } from "./number-format.js";
|
|
7
6
|
import { readXmlBool } from "./util.js";
|
|
@@ -9,7 +8,7 @@ import { readPrintSettings } from "./print-settings.js";
|
|
|
9
8
|
import { readDate1904, serialToIsoDate, serialToIsoDateTime, serialToIsoTime } from "./serial.js";
|
|
10
9
|
import { readCellStyles } from "./styles.js";
|
|
11
10
|
import { columnWidthCharsToPt } from "./units.js";
|
|
12
|
-
import { CONTENT_FORMAT_VERSION } from "document-schema.js";
|
|
11
|
+
import { CONTENT_FORMAT_VERSION, parseCellReference, parseRangeReference } from "document-schema.js";
|
|
13
12
|
//#region src/typed/xlsx/content.ts
|
|
14
13
|
const WORKBOOK_PATH = "xl/workbook.xml";
|
|
15
14
|
function resolveSheetEntries(pkg) {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
2
|
const require_typed_util = require("../util.cjs");
|
|
3
|
-
|
|
3
|
+
let document_schema_js = require("document-schema.js");
|
|
4
4
|
//#region src/typed/xlsx/defined-names.ts
|
|
5
5
|
const XLNM_PRINT_AREA = "_xlnm.Print_Area";
|
|
6
6
|
const XLNM_PRINT_TITLES = "_xlnm.Print_Titles";
|
|
@@ -32,7 +32,7 @@ function stripSheetPrefix(segment) {
|
|
|
32
32
|
function parsePrintAreaValue(value) {
|
|
33
33
|
const first = value.split(",")[0]?.trim();
|
|
34
34
|
if (first === void 0 || first.length === 0) return;
|
|
35
|
-
return
|
|
35
|
+
return (0, document_schema_js.parseRangeReference)(stripSheetPrefix(first).replace(/\$/g, ""));
|
|
36
36
|
}
|
|
37
37
|
function parsePrintTitlesValue(value) {
|
|
38
38
|
const result = {};
|
|
@@ -43,8 +43,8 @@ function parsePrintTitlesValue(value) {
|
|
|
43
43
|
const startSpec = segment.slice(0, separatorIndex);
|
|
44
44
|
const endSpec = segment.slice(separatorIndex + 1);
|
|
45
45
|
if (/^[A-Za-z]+$/.test(startSpec) && /^[A-Za-z]+$/.test(endSpec)) {
|
|
46
|
-
const start =
|
|
47
|
-
const end =
|
|
46
|
+
const start = (0, document_schema_js.columnLettersToIndex)(startSpec);
|
|
47
|
+
const end = (0, document_schema_js.columnLettersToIndex)(endSpec);
|
|
48
48
|
if (start !== void 0 && end !== void 0) result.repeatColumns = {
|
|
49
49
|
start: Math.min(start, end),
|
|
50
50
|
end: Math.max(start, end)
|
|
@@ -65,7 +65,7 @@ function quoteSheetNameIfNeeded(sheetName) {
|
|
|
65
65
|
return `'${sheetName.replace(/'/g, "''")}'`;
|
|
66
66
|
}
|
|
67
67
|
function buildPrintAreaValue(sheetName, range) {
|
|
68
|
-
const dollared =
|
|
68
|
+
const dollared = (0, document_schema_js.rangeReference)({
|
|
69
69
|
startRow: range.startRow,
|
|
70
70
|
startColumn: range.startColumn,
|
|
71
71
|
endRow: range.endRow,
|
|
@@ -76,7 +76,7 @@ function buildPrintAreaValue(sheetName, range) {
|
|
|
76
76
|
function buildPrintTitlesValue(sheetName, repeatRows, repeatColumns) {
|
|
77
77
|
const quotedName = quoteSheetNameIfNeeded(sheetName);
|
|
78
78
|
const segments = [];
|
|
79
|
-
if (repeatColumns !== void 0) segments.push(`${quotedName}!$${
|
|
79
|
+
if (repeatColumns !== void 0) segments.push(`${quotedName}!$${(0, document_schema_js.columnIndexToLetters)(repeatColumns.start)}:$${(0, document_schema_js.columnIndexToLetters)(repeatColumns.end)}`);
|
|
80
80
|
if (repeatRows !== void 0) segments.push(`${quotedName}!$${repeatRows.start + 1}:$${repeatRows.end + 1}`);
|
|
81
81
|
return segments.length > 0 ? segments.join(",") : void 0;
|
|
82
82
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { attr, childrenWithTag, rootElement, textContent } from "../util.js";
|
|
2
|
-
import { columnIndexToLetters, columnLettersToIndex, parseRangeReference, rangeReference } from "
|
|
2
|
+
import { columnIndexToLetters, columnLettersToIndex, parseRangeReference, rangeReference } from "document-schema.js";
|
|
3
3
|
//#region src/typed/xlsx/defined-names.ts
|
|
4
4
|
const XLNM_PRINT_AREA = "_xlnm.Print_Area";
|
|
5
5
|
const XLNM_PRINT_TITLES = "_xlnm.Print_Titles";
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ooxml.js",
|
|
3
|
-
"version": "2.9.
|
|
3
|
+
"version": "2.9.2",
|
|
4
4
|
"description": "Type-safe, lossless round-trip conversion between OOXML packages (docx, pptx, xlsx) and JSON, built on Zod 4 codecs.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"repository": {
|
|
@@ -78,7 +78,7 @@
|
|
|
78
78
|
"license": "MIT",
|
|
79
79
|
"packageManager": "pnpm@11.6.0",
|
|
80
80
|
"dependencies": {
|
|
81
|
-
"document-schema.js": "^2.5.
|
|
81
|
+
"document-schema.js": "^2.5.1",
|
|
82
82
|
"fast-xml-parser": "^5.10.1",
|
|
83
83
|
"fflate": "^0.8.3",
|
|
84
84
|
"zod": "^4.4.3"
|
package/dist/typed/xlsx/a1.cjs
DELETED
|
@@ -1,64 +0,0 @@
|
|
|
1
|
-
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
-
//#region src/typed/xlsx/a1.ts
|
|
3
|
-
const CELL_REFERENCE_RE = /^([A-Za-z]+)(\d+)$/;
|
|
4
|
-
function columnLettersToIndex(letters) {
|
|
5
|
-
if (letters.length === 0) return;
|
|
6
|
-
let index = 0;
|
|
7
|
-
for (const ch of letters.toUpperCase()) {
|
|
8
|
-
const code = ch.charCodeAt(0);
|
|
9
|
-
if (code < 65 || code > 90) return;
|
|
10
|
-
index = index * 26 + (code - 64);
|
|
11
|
-
}
|
|
12
|
-
return index - 1;
|
|
13
|
-
}
|
|
14
|
-
function columnIndexToLetters(index) {
|
|
15
|
-
let remaining = index + 1;
|
|
16
|
-
let letters = "";
|
|
17
|
-
while (remaining > 0) {
|
|
18
|
-
const digit = (remaining - 1) % 26;
|
|
19
|
-
letters = String.fromCharCode(65 + digit) + letters;
|
|
20
|
-
remaining = Math.trunc((remaining - 1) / 26);
|
|
21
|
-
}
|
|
22
|
-
return letters;
|
|
23
|
-
}
|
|
24
|
-
function parseCellReference(ref) {
|
|
25
|
-
const match = CELL_REFERENCE_RE.exec(ref);
|
|
26
|
-
if (match === null) return;
|
|
27
|
-
const letters = match[1];
|
|
28
|
-
const digits = match[2];
|
|
29
|
-
if (letters === void 0 || digits === void 0) return;
|
|
30
|
-
const column = columnLettersToIndex(letters);
|
|
31
|
-
const rowNumber = Number.parseInt(digits, 10);
|
|
32
|
-
if (column === void 0 || !Number.isInteger(rowNumber) || rowNumber < 1) return;
|
|
33
|
-
return {
|
|
34
|
-
row: rowNumber - 1,
|
|
35
|
-
column
|
|
36
|
-
};
|
|
37
|
-
}
|
|
38
|
-
function cellReference(row, column) {
|
|
39
|
-
return `${columnIndexToLetters(column)}${row + 1}`;
|
|
40
|
-
}
|
|
41
|
-
function parseRangeReference(ref) {
|
|
42
|
-
const separatorIndex = ref.indexOf(":");
|
|
43
|
-
const startRaw = separatorIndex === -1 ? ref : ref.slice(0, separatorIndex);
|
|
44
|
-
const endRaw = separatorIndex === -1 ? ref : ref.slice(separatorIndex + 1);
|
|
45
|
-
const start = parseCellReference(startRaw);
|
|
46
|
-
const end = parseCellReference(endRaw);
|
|
47
|
-
if (start === void 0 || end === void 0) return;
|
|
48
|
-
return {
|
|
49
|
-
startRow: Math.min(start.row, end.row),
|
|
50
|
-
startColumn: Math.min(start.column, end.column),
|
|
51
|
-
endRow: Math.max(start.row, end.row),
|
|
52
|
-
endColumn: Math.max(start.column, end.column)
|
|
53
|
-
};
|
|
54
|
-
}
|
|
55
|
-
function rangeReference(range) {
|
|
56
|
-
return `${cellReference(range.startRow, range.startColumn)}:${cellReference(range.endRow, range.endColumn)}`;
|
|
57
|
-
}
|
|
58
|
-
//#endregion
|
|
59
|
-
exports.cellReference = cellReference;
|
|
60
|
-
exports.columnIndexToLetters = columnIndexToLetters;
|
|
61
|
-
exports.columnLettersToIndex = columnLettersToIndex;
|
|
62
|
-
exports.parseCellReference = parseCellReference;
|
|
63
|
-
exports.parseRangeReference = parseRangeReference;
|
|
64
|
-
exports.rangeReference = rangeReference;
|
package/dist/typed/xlsx/a1.d.cts
DELETED
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
//#region src/typed/xlsx/a1.d.ts
|
|
2
|
-
declare function columnLettersToIndex(letters: string): number | undefined;
|
|
3
|
-
declare function columnIndexToLetters(index: number): string;
|
|
4
|
-
interface CellPosition {
|
|
5
|
-
row: number;
|
|
6
|
-
column: number;
|
|
7
|
-
}
|
|
8
|
-
declare function parseCellReference(ref: string): CellPosition | undefined;
|
|
9
|
-
declare function cellReference(row: number, column: number): string;
|
|
10
|
-
interface CellRange {
|
|
11
|
-
startRow: number;
|
|
12
|
-
startColumn: number;
|
|
13
|
-
endRow: number;
|
|
14
|
-
endColumn: number;
|
|
15
|
-
}
|
|
16
|
-
declare function parseRangeReference(ref: string): CellRange | undefined;
|
|
17
|
-
declare function rangeReference(range: CellRange): string;
|
|
18
|
-
//#endregion
|
|
19
|
-
export { CellPosition, CellRange, cellReference, columnIndexToLetters, columnLettersToIndex, parseCellReference, parseRangeReference, rangeReference };
|
package/dist/typed/xlsx/a1.d.ts
DELETED
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
//#region src/typed/xlsx/a1.d.ts
|
|
2
|
-
declare function columnLettersToIndex(letters: string): number | undefined;
|
|
3
|
-
declare function columnIndexToLetters(index: number): string;
|
|
4
|
-
interface CellPosition {
|
|
5
|
-
row: number;
|
|
6
|
-
column: number;
|
|
7
|
-
}
|
|
8
|
-
declare function parseCellReference(ref: string): CellPosition | undefined;
|
|
9
|
-
declare function cellReference(row: number, column: number): string;
|
|
10
|
-
interface CellRange {
|
|
11
|
-
startRow: number;
|
|
12
|
-
startColumn: number;
|
|
13
|
-
endRow: number;
|
|
14
|
-
endColumn: number;
|
|
15
|
-
}
|
|
16
|
-
declare function parseRangeReference(ref: string): CellRange | undefined;
|
|
17
|
-
declare function rangeReference(range: CellRange): string;
|
|
18
|
-
//#endregion
|
|
19
|
-
export { CellPosition, CellRange, cellReference, columnIndexToLetters, columnLettersToIndex, parseCellReference, parseRangeReference, rangeReference };
|
package/dist/typed/xlsx/a1.js
DELETED
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
//#region src/typed/xlsx/a1.ts
|
|
2
|
-
const CELL_REFERENCE_RE = /^([A-Za-z]+)(\d+)$/;
|
|
3
|
-
function columnLettersToIndex(letters) {
|
|
4
|
-
if (letters.length === 0) return;
|
|
5
|
-
let index = 0;
|
|
6
|
-
for (const ch of letters.toUpperCase()) {
|
|
7
|
-
const code = ch.charCodeAt(0);
|
|
8
|
-
if (code < 65 || code > 90) return;
|
|
9
|
-
index = index * 26 + (code - 64);
|
|
10
|
-
}
|
|
11
|
-
return index - 1;
|
|
12
|
-
}
|
|
13
|
-
function columnIndexToLetters(index) {
|
|
14
|
-
let remaining = index + 1;
|
|
15
|
-
let letters = "";
|
|
16
|
-
while (remaining > 0) {
|
|
17
|
-
const digit = (remaining - 1) % 26;
|
|
18
|
-
letters = String.fromCharCode(65 + digit) + letters;
|
|
19
|
-
remaining = Math.trunc((remaining - 1) / 26);
|
|
20
|
-
}
|
|
21
|
-
return letters;
|
|
22
|
-
}
|
|
23
|
-
function parseCellReference(ref) {
|
|
24
|
-
const match = CELL_REFERENCE_RE.exec(ref);
|
|
25
|
-
if (match === null) return;
|
|
26
|
-
const letters = match[1];
|
|
27
|
-
const digits = match[2];
|
|
28
|
-
if (letters === void 0 || digits === void 0) return;
|
|
29
|
-
const column = columnLettersToIndex(letters);
|
|
30
|
-
const rowNumber = Number.parseInt(digits, 10);
|
|
31
|
-
if (column === void 0 || !Number.isInteger(rowNumber) || rowNumber < 1) return;
|
|
32
|
-
return {
|
|
33
|
-
row: rowNumber - 1,
|
|
34
|
-
column
|
|
35
|
-
};
|
|
36
|
-
}
|
|
37
|
-
function cellReference(row, column) {
|
|
38
|
-
return `${columnIndexToLetters(column)}${row + 1}`;
|
|
39
|
-
}
|
|
40
|
-
function parseRangeReference(ref) {
|
|
41
|
-
const separatorIndex = ref.indexOf(":");
|
|
42
|
-
const startRaw = separatorIndex === -1 ? ref : ref.slice(0, separatorIndex);
|
|
43
|
-
const endRaw = separatorIndex === -1 ? ref : ref.slice(separatorIndex + 1);
|
|
44
|
-
const start = parseCellReference(startRaw);
|
|
45
|
-
const end = parseCellReference(endRaw);
|
|
46
|
-
if (start === void 0 || end === void 0) return;
|
|
47
|
-
return {
|
|
48
|
-
startRow: Math.min(start.row, end.row),
|
|
49
|
-
startColumn: Math.min(start.column, end.column),
|
|
50
|
-
endRow: Math.max(start.row, end.row),
|
|
51
|
-
endColumn: Math.max(start.column, end.column)
|
|
52
|
-
};
|
|
53
|
-
}
|
|
54
|
-
function rangeReference(range) {
|
|
55
|
-
return `${cellReference(range.startRow, range.startColumn)}:${cellReference(range.endRow, range.endColumn)}`;
|
|
56
|
-
}
|
|
57
|
-
//#endregion
|
|
58
|
-
export { cellReference, columnIndexToLetters, columnLettersToIndex, parseCellReference, parseRangeReference, rangeReference };
|