@hewliyang/headless-spreadjs 0.0.1 → 0.0.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/README.md +6 -4
- package/dist/cli/a1.d.ts +28 -0
- package/dist/cli/a1.d.ts.map +1 -0
- package/dist/cli/a1.js +66 -0
- package/dist/cli/a1.js.map +1 -0
- package/dist/cli/commands/clear.d.ts +2 -0
- package/dist/cli/commands/clear.d.ts.map +1 -0
- package/dist/cli/commands/clear.js +24 -0
- package/dist/cli/commands/clear.js.map +1 -0
- package/dist/cli/commands/copy.d.ts +2 -0
- package/dist/cli/commands/copy.d.ts.map +1 -0
- package/dist/cli/commands/copy.js +51 -0
- package/dist/cli/commands/copy.js.map +1 -0
- package/dist/cli/commands/create.d.ts +2 -0
- package/dist/cli/commands/create.d.ts.map +1 -0
- package/dist/cli/commands/create.js +7 -0
- package/dist/cli/commands/create.js.map +1 -0
- package/dist/cli/commands/csv.d.ts +2 -0
- package/dist/cli/commands/csv.d.ts.map +1 -0
- package/dist/cli/commands/csv.js +33 -0
- package/dist/cli/commands/csv.js.map +1 -0
- package/dist/cli/commands/eval.d.ts +2 -0
- package/dist/cli/commands/eval.d.ts.map +1 -0
- package/dist/cli/commands/eval.js +45 -0
- package/dist/cli/commands/eval.js.map +1 -0
- package/dist/cli/commands/get.d.ts +4 -0
- package/dist/cli/commands/get.d.ts.map +1 -0
- package/dist/cli/commands/get.js +55 -0
- package/dist/cli/commands/get.js.map +1 -0
- package/dist/cli/commands/info.d.ts +2 -0
- package/dist/cli/commands/info.d.ts.map +1 -0
- package/dist/cli/commands/info.js +34 -0
- package/dist/cli/commands/info.js.map +1 -0
- package/dist/cli/commands/objects.d.ts +2 -0
- package/dist/cli/commands/objects.d.ts.map +1 -0
- package/dist/cli/commands/objects.js +71 -0
- package/dist/cli/commands/objects.js.map +1 -0
- package/dist/cli/commands/resize.d.ts +7 -0
- package/dist/cli/commands/resize.d.ts.map +1 -0
- package/dist/cli/commands/resize.js +51 -0
- package/dist/cli/commands/resize.js.map +1 -0
- package/dist/cli/commands/rows-cols.d.ts +8 -0
- package/dist/cli/commands/rows-cols.d.ts.map +1 -0
- package/dist/cli/commands/rows-cols.js +77 -0
- package/dist/cli/commands/rows-cols.js.map +1 -0
- package/dist/cli/commands/search.d.ts +7 -0
- package/dist/cli/commands/search.d.ts.map +1 -0
- package/dist/cli/commands/search.js +67 -0
- package/dist/cli/commands/search.js.map +1 -0
- package/dist/cli/commands/set.d.ts +2 -0
- package/dist/cli/commands/set.d.ts.map +1 -0
- package/dist/cli/commands/set.js +67 -0
- package/dist/cli/commands/set.js.map +1 -0
- package/dist/cli/commands/sheet.d.ts +3 -0
- package/dist/cli/commands/sheet.d.ts.map +1 -0
- package/dist/cli/commands/sheet.js +62 -0
- package/dist/cli/commands/sheet.js.map +1 -0
- package/dist/cli/context.d.ts +15 -0
- package/dist/cli/context.d.ts.map +1 -0
- package/dist/cli/context.js +34 -0
- package/dist/cli/context.js.map +1 -0
- package/dist/cli/index.d.ts +3 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +183 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/output.d.ts +10 -0
- package/dist/cli/output.d.ts.map +1 -0
- package/dist/cli/output.js +28 -0
- package/dist/cli/output.js.map +1 -0
- package/dist/cli/styles.d.ts +27 -0
- package/dist/cli/styles.d.ts.map +1 -0
- package/dist/cli/styles.js +105 -0
- package/dist/cli/styles.js.map +1 -0
- package/package.json +20 -10
- package/dist/workbook.d.ts +0 -19
- package/dist/workbook.d.ts.map +0 -1
- package/dist/workbook.js +0 -177
- package/dist/workbook.js.map +0 -1
package/README.md
CHANGED
|
@@ -10,18 +10,20 @@ Headless Excel workbook engine for Node.js — powered by [SpreadJS](https://dev
|
|
|
10
10
|
|
|
11
11
|
## System Dependencies
|
|
12
12
|
|
|
13
|
-
|
|
13
|
+
Cairo/Pango are required by the `canvas` npm package:
|
|
14
14
|
|
|
15
15
|
```bash
|
|
16
|
+
# macOS
|
|
17
|
+
brew install pkg-config cairo pango libpng jpeg giflib librsvg
|
|
18
|
+
|
|
19
|
+
# Linux (Debian/Ubuntu)
|
|
16
20
|
sudo apt-get install build-essential libcairo2-dev libpango1.0-dev libjpeg-dev libgif-dev librsvg2-dev
|
|
17
21
|
```
|
|
18
22
|
|
|
19
|
-
macOS: `brew install pkg-config cairo pango libpng jpeg giflib librsvg`
|
|
20
|
-
|
|
21
23
|
## Install
|
|
22
24
|
|
|
23
25
|
```bash
|
|
24
|
-
|
|
26
|
+
npm install headless-spreadjs
|
|
25
27
|
```
|
|
26
28
|
|
|
27
29
|
## Usage
|
package/dist/cli/a1.d.ts
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A1-notation ↔ 0-indexed (row, col) conversion utilities.
|
|
3
|
+
*/
|
|
4
|
+
export interface CellRef {
|
|
5
|
+
row: number;
|
|
6
|
+
col: number;
|
|
7
|
+
}
|
|
8
|
+
export interface RangeRef {
|
|
9
|
+
sheet?: string;
|
|
10
|
+
start: CellRef;
|
|
11
|
+
end: CellRef;
|
|
12
|
+
}
|
|
13
|
+
export declare function colToIndex(col: string): number;
|
|
14
|
+
export declare function indexToCol(index: number): string;
|
|
15
|
+
export declare function cellToA1(row: number, col: number): string;
|
|
16
|
+
export declare function parseCell(ref: string): CellRef;
|
|
17
|
+
/**
|
|
18
|
+
* Parse a reference like "Sheet1!A1:C10", "'My Sheet'!A1:C10", or "A1:C10".
|
|
19
|
+
*/
|
|
20
|
+
export declare function parseRef(ref: string): RangeRef;
|
|
21
|
+
/**
|
|
22
|
+
* Get the dimensions of a range: { rows, cols }.
|
|
23
|
+
*/
|
|
24
|
+
export declare function rangeDimensions(ref: RangeRef): {
|
|
25
|
+
rows: number;
|
|
26
|
+
cols: number;
|
|
27
|
+
};
|
|
28
|
+
//# sourceMappingURL=a1.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"a1.d.ts","sourceRoot":"","sources":["../../src/cli/a1.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,OAAO;IACtB,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,QAAQ;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,OAAO,CAAC;IACf,GAAG,EAAE,OAAO,CAAC;CACd;AAED,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAM9C;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAQhD;AAED,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAEzD;AAED,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAO9C;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,QAAQ,CAuB9C;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,QAAQ,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAK7E"}
|
package/dist/cli/a1.js
ADDED
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A1-notation ↔ 0-indexed (row, col) conversion utilities.
|
|
3
|
+
*/
|
|
4
|
+
export function colToIndex(col) {
|
|
5
|
+
let index = 0;
|
|
6
|
+
for (const c of col.toUpperCase()) {
|
|
7
|
+
index = index * 26 + (c.charCodeAt(0) - 64);
|
|
8
|
+
}
|
|
9
|
+
return index - 1;
|
|
10
|
+
}
|
|
11
|
+
export function indexToCol(index) {
|
|
12
|
+
let col = "";
|
|
13
|
+
let n = index;
|
|
14
|
+
while (n >= 0) {
|
|
15
|
+
col = String.fromCharCode((n % 26) + 65) + col;
|
|
16
|
+
n = Math.floor(n / 26) - 1;
|
|
17
|
+
}
|
|
18
|
+
return col;
|
|
19
|
+
}
|
|
20
|
+
export function cellToA1(row, col) {
|
|
21
|
+
return `${indexToCol(col)}${row + 1}`;
|
|
22
|
+
}
|
|
23
|
+
export function parseCell(ref) {
|
|
24
|
+
const match = ref.match(/^\$?([A-Z]+)\$?(\d+)$/i);
|
|
25
|
+
if (!match)
|
|
26
|
+
throw new Error(`Invalid cell reference: ${ref}`);
|
|
27
|
+
return {
|
|
28
|
+
row: parseInt(match[2], 10) - 1,
|
|
29
|
+
col: colToIndex(match[1]),
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Parse a reference like "Sheet1!A1:C10", "'My Sheet'!A1:C10", or "A1:C10".
|
|
34
|
+
*/
|
|
35
|
+
export function parseRef(ref) {
|
|
36
|
+
let sheet;
|
|
37
|
+
let rangeStr = ref;
|
|
38
|
+
// Handle quoted sheet names: 'My Sheet'!A1:C10
|
|
39
|
+
const quotedMatch = ref.match(/^'([^']+)'!(.+)$/);
|
|
40
|
+
if (quotedMatch) {
|
|
41
|
+
sheet = quotedMatch[1];
|
|
42
|
+
rangeStr = quotedMatch[2];
|
|
43
|
+
}
|
|
44
|
+
else {
|
|
45
|
+
// Handle unquoted: Sheet1!A1:C10
|
|
46
|
+
const bangIdx = ref.indexOf("!");
|
|
47
|
+
if (bangIdx !== -1) {
|
|
48
|
+
sheet = ref.slice(0, bangIdx);
|
|
49
|
+
rangeStr = ref.slice(bangIdx + 1);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
const parts = rangeStr.split(":");
|
|
53
|
+
const start = parseCell(parts[0]);
|
|
54
|
+
const end = parts.length > 1 ? parseCell(parts[1]) : { ...start };
|
|
55
|
+
return { sheet, start, end };
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Get the dimensions of a range: { rows, cols }.
|
|
59
|
+
*/
|
|
60
|
+
export function rangeDimensions(ref) {
|
|
61
|
+
return {
|
|
62
|
+
rows: ref.end.row - ref.start.row + 1,
|
|
63
|
+
cols: ref.end.col - ref.start.col + 1,
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
//# sourceMappingURL=a1.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"a1.js","sourceRoot":"","sources":["../../src/cli/a1.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"clear.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/clear.ts"],"names":[],"mappings":"AAIA,wBAAsB,KAAK,CACzB,QAAQ,EAAE,MAAM,EAChB,GAAG,EAAE,MAAM,EACX,SAAS,GAAE,QAAQ,GAAG,QAAQ,GAAG,KAAgB,GAChD,OAAO,CAAC,IAAI,CAAC,CA+Cf"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { parseRef, rangeDimensions } from "../a1.js";
|
|
2
|
+
import { withFile } from "../context.js";
|
|
3
|
+
import { fail, ok } from "../output.js";
|
|
4
|
+
export async function clear(filePath, ref, clearType = "values") {
|
|
5
|
+
const parsed = parseRef(ref);
|
|
6
|
+
await withFile(filePath, ({ workbook, GC }) => {
|
|
7
|
+
const sheet = parsed.sheet
|
|
8
|
+
? workbook.getSheetFromName(parsed.sheet)
|
|
9
|
+
: workbook.getActiveSheet();
|
|
10
|
+
if (!sheet) {
|
|
11
|
+
fail(`Sheet not found: ${parsed.sheet ?? "(active)"}`);
|
|
12
|
+
}
|
|
13
|
+
const { rows, cols } = rangeDimensions(parsed);
|
|
14
|
+
const range = new GC.Spread.Sheets.Range(parsed.start.row, parsed.start.col, rows, cols);
|
|
15
|
+
if (clearType === "values" || clearType === "all") {
|
|
16
|
+
sheet.clear(range.row, range.col, range.rowCount, range.colCount, GC.Spread.Sheets.SheetArea.viewport, GC.Spread.Sheets.StorageType.data);
|
|
17
|
+
}
|
|
18
|
+
if (clearType === "styles" || clearType === "all") {
|
|
19
|
+
sheet.clear(range.row, range.col, range.rowCount, range.colCount, GC.Spread.Sheets.SheetArea.viewport, GC.Spread.Sheets.StorageType.style);
|
|
20
|
+
}
|
|
21
|
+
ok({ cleared: ref, type: clearType });
|
|
22
|
+
}, { save: true });
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=clear.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"clear.js","sourceRoot":"","sources":["../../../src/cli/commands/clear.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAExC,MAAM,CAAC,KAAK,UAAU,KAAK,CACzB,QAAgB,EAChB,GAAW,EACX,YAAyC,QAAQ;IAEjD,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;IAE7B,MAAM,QAAQ,CACZ,QAAQ,EACR,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,EAAE,EAAE;QACnB,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK;YACxB,CAAC,CAAC,QAAQ,CAAC,gBAAgB,CAAC,MAAM,CAAC,KAAK,CAAC;YACzC,CAAC,CAAC,QAAQ,CAAC,cAAc,EAAE,CAAC;QAE9B,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,IAAI,CAAC,oBAAoB,MAAM,CAAC,KAAK,IAAI,UAAU,EAAE,CAAC,CAAC;QACzD,CAAC;QAED,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;QAC/C,MAAM,KAAK,GAAG,IAAI,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CACtC,MAAM,CAAC,KAAK,CAAC,GAAG,EAChB,MAAM,CAAC,KAAK,CAAC,GAAG,EAChB,IAAI,EACJ,IAAI,CACL,CAAC;QAEF,IAAI,SAAS,KAAK,QAAQ,IAAI,SAAS,KAAK,KAAK,EAAE,CAAC;YAClD,KAAK,CAAC,KAAK,CACT,KAAK,CAAC,GAAG,EACT,KAAK,CAAC,GAAG,EACT,KAAK,CAAC,QAAQ,EACd,KAAK,CAAC,QAAQ,EACd,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,EACnC,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAClC,CAAC;QACJ,CAAC;QACD,IAAI,SAAS,KAAK,QAAQ,IAAI,SAAS,KAAK,KAAK,EAAE,CAAC;YAClD,KAAK,CAAC,KAAK,CACT,KAAK,CAAC,GAAG,EACT,KAAK,CAAC,GAAG,EACT,KAAK,CAAC,QAAQ,EACd,KAAK,CAAC,QAAQ,EACd,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,EACnC,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,CACnC,CAAC;QACJ,CAAC;QAED,EAAE,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;IACxC,CAAC,EACD,EAAE,IAAI,EAAE,IAAI,EAAE,CACf,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"copy.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/copy.ts"],"names":[],"mappings":"AAIA,wBAAsB,IAAI,CACxB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,IAAI,CAAC,CAsDf"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { parseRef, rangeDimensions } from "../a1.js";
|
|
2
|
+
import { withFile } from "../context.js";
|
|
3
|
+
import { fail, ok } from "../output.js";
|
|
4
|
+
export async function copy(filePath, srcRef, dstRef) {
|
|
5
|
+
const src = parseRef(srcRef);
|
|
6
|
+
const dst = parseRef(dstRef);
|
|
7
|
+
await withFile(filePath, ({ file, workbook }) => {
|
|
8
|
+
const srcSheet = src.sheet
|
|
9
|
+
? workbook.getSheetFromName(src.sheet)
|
|
10
|
+
: workbook.getActiveSheet();
|
|
11
|
+
const dstSheet = dst.sheet
|
|
12
|
+
? workbook.getSheetFromName(dst.sheet)
|
|
13
|
+
: srcSheet;
|
|
14
|
+
if (!srcSheet)
|
|
15
|
+
fail(`Source sheet not found: ${src.sheet}`);
|
|
16
|
+
if (!dstSheet)
|
|
17
|
+
fail(`Destination sheet not found: ${dst.sheet}`);
|
|
18
|
+
const { rows: srcRows, cols: srcCols } = rangeDimensions(src);
|
|
19
|
+
const { rows: dstRows, cols: dstCols } = rangeDimensions(dst);
|
|
20
|
+
file.batch(() => {
|
|
21
|
+
for (let r = 0; r < dstRows; r++) {
|
|
22
|
+
for (let c = 0; c < dstCols; c++) {
|
|
23
|
+
const sr = src.start.row + (r % srcRows);
|
|
24
|
+
const sc = src.start.col + (c % srcCols);
|
|
25
|
+
const dr = dst.start.row + r;
|
|
26
|
+
const dc = dst.start.col + c;
|
|
27
|
+
const formula = srcSheet.getFormula(sr, sc);
|
|
28
|
+
if (formula) {
|
|
29
|
+
dstSheet.setFormula(dr, dc, formula);
|
|
30
|
+
}
|
|
31
|
+
else {
|
|
32
|
+
const value = srcSheet.getValue(sr, sc);
|
|
33
|
+
if (value !== null && value !== undefined) {
|
|
34
|
+
dstSheet.setValue(dr, dc, value);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
const style = srcSheet.getStyle(sr, sc);
|
|
38
|
+
if (style) {
|
|
39
|
+
dstSheet.setStyle(dr, dc, style);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
});
|
|
44
|
+
ok({
|
|
45
|
+
source: srcRef,
|
|
46
|
+
destination: dstRef,
|
|
47
|
+
cellsCopied: dstRows * dstCols,
|
|
48
|
+
});
|
|
49
|
+
}, { save: true });
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=copy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"copy.js","sourceRoot":"","sources":["../../../src/cli/commands/copy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAExC,MAAM,CAAC,KAAK,UAAU,IAAI,CACxB,QAAgB,EAChB,MAAc,EACd,MAAc;IAEd,MAAM,GAAG,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC7B,MAAM,GAAG,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;IAE7B,MAAM,QAAQ,CACZ,QAAQ,EACR,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE;QACrB,MAAM,QAAQ,GAAG,GAAG,CAAC,KAAK;YACxB,CAAC,CAAC,QAAQ,CAAC,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC;YACtC,CAAC,CAAC,QAAQ,CAAC,cAAc,EAAE,CAAC;QAC9B,MAAM,QAAQ,GAAG,GAAG,CAAC,KAAK;YACxB,CAAC,CAAC,QAAQ,CAAC,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC;YACtC,CAAC,CAAC,QAAQ,CAAC;QAEb,IAAI,CAAC,QAAQ;YAAE,IAAI,CAAC,2BAA2B,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC;QAC5D,IAAI,CAAC,QAAQ;YAAE,IAAI,CAAC,gCAAgC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC;QAEjE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC;QAC9D,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC;QAE9D,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE;YACd,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,EAAE,CAAC,EAAE,EAAE,CAAC;gBACjC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,EAAE,CAAC,EAAE,EAAE,CAAC;oBACjC,MAAM,EAAE,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC;oBACzC,MAAM,EAAE,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC;oBACzC,MAAM,EAAE,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC;oBAC7B,MAAM,EAAE,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC;oBAE7B,MAAM,OAAO,GAAG,QAAQ,CAAC,UAAU,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;oBAC5C,IAAI,OAAO,EAAE,CAAC;wBACZ,QAAQ,CAAC,UAAU,CAAC,EAAE,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC;oBACvC,CAAC;yBAAM,CAAC;wBACN,MAAM,KAAK,GAAG,QAAQ,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;wBACxC,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;4BAC1C,QAAQ,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC;wBACnC,CAAC;oBACH,CAAC;oBAED,MAAM,KAAK,GAAG,QAAQ,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;oBACxC,IAAI,KAAK,EAAE,CAAC;wBACV,QAAQ,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC;oBACnC,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC;YACD,MAAM,EAAE,MAAM;YACd,WAAW,EAAE,MAAM;YACnB,WAAW,EAAE,OAAO,GAAG,OAAO;SAC/B,CAAC,CAAC;IACL,CAAC,EACD,EAAE,IAAI,EAAE,IAAI,EAAE,CACf,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/create.ts"],"names":[],"mappings":"AAGA,wBAAsB,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAG5D"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create.js","sourceRoot":"","sources":["../../../src/cli/commands/create.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAElC,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,QAAgB;IAC3C,MAAM,WAAW,CAAC,QAAQ,CAAC,CAAC;IAC5B,EAAE,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC;AAC5B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"csv.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/csv.ts"],"names":[],"mappings":"AAIA,wBAAsB,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAmCtE"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { parseRef, rangeDimensions } from "../a1.js";
|
|
2
|
+
import { withFile } from "../context.js";
|
|
3
|
+
import { fail } from "../output.js";
|
|
4
|
+
export async function csv(filePath, ref) {
|
|
5
|
+
const parsed = parseRef(ref);
|
|
6
|
+
await withFile(filePath, ({ workbook }) => {
|
|
7
|
+
const sheet = parsed.sheet
|
|
8
|
+
? workbook.getSheetFromName(parsed.sheet)
|
|
9
|
+
: workbook.getActiveSheet();
|
|
10
|
+
if (!sheet) {
|
|
11
|
+
fail(`Sheet not found: ${parsed.sheet ?? "(active)"}`);
|
|
12
|
+
}
|
|
13
|
+
const { rows, cols } = rangeDimensions(parsed);
|
|
14
|
+
const lines = [];
|
|
15
|
+
for (let r = 0; r < rows; r++) {
|
|
16
|
+
const row = [];
|
|
17
|
+
for (let c = 0; c < cols; c++) {
|
|
18
|
+
const value = sheet.getValue(parsed.start.row + r, parsed.start.col + c);
|
|
19
|
+
const str = value === null || value === undefined ? "" : String(value);
|
|
20
|
+
if (str.includes(",") || str.includes('"') || str.includes("\n")) {
|
|
21
|
+
row.push(`"${str.replace(/"/g, '""')}"`);
|
|
22
|
+
}
|
|
23
|
+
else {
|
|
24
|
+
row.push(str);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
lines.push(row.join(","));
|
|
28
|
+
}
|
|
29
|
+
process.stdout.write(`${lines.join("\n")}\n`);
|
|
30
|
+
process.exit(0);
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=csv.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"csv.js","sourceRoot":"","sources":["../../../src/cli/commands/csv.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAEpC,MAAM,CAAC,KAAK,UAAU,GAAG,CAAC,QAAgB,EAAE,GAAW;IACrD,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;IAE7B,MAAM,QAAQ,CAAC,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE;QACxC,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK;YACxB,CAAC,CAAC,QAAQ,CAAC,gBAAgB,CAAC,MAAM,CAAC,KAAK,CAAC;YACzC,CAAC,CAAC,QAAQ,CAAC,cAAc,EAAE,CAAC;QAE9B,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,IAAI,CAAC,oBAAoB,MAAM,CAAC,KAAK,IAAI,UAAU,EAAE,CAAC,CAAC;QACzD,CAAC;QAED,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;QAC/C,MAAM,KAAK,GAAa,EAAE,CAAC;QAE3B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC;YAC9B,MAAM,GAAG,GAAa,EAAE,CAAC;YACzB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC9B,MAAM,KAAK,GAAG,KAAK,CAAC,QAAQ,CAC1B,MAAM,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,EACpB,MAAM,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CACrB,CAAC;gBACF,MAAM,GAAG,GAAG,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;gBACvE,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;oBACjE,GAAG,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;gBAC3C,CAAC;qBAAM,CAAC;oBACN,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBAChB,CAAC;YACH,CAAC;YACD,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QAC5B,CAAC;QAED,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC9C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"eval.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/eval.ts"],"names":[],"mappings":"AAGA,wBAAsB,QAAQ,CAC5B,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,GAAG,SAAS,GAC1B,OAAO,CAAC,IAAI,CAAC,CAkDf"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { withFile } from "../context.js";
|
|
2
|
+
import { fail, ok, readInput } from "../output.js";
|
|
3
|
+
export async function evalCode(filePath, codeArg) {
|
|
4
|
+
const code = await readInput(codeArg);
|
|
5
|
+
await withFile(filePath, async ({ file, workbook, GC }) => {
|
|
6
|
+
const sheet = workbook.getActiveSheet();
|
|
7
|
+
// Capture console.log output
|
|
8
|
+
const logs = [];
|
|
9
|
+
const origLog = console.log;
|
|
10
|
+
const origWarn = console.warn;
|
|
11
|
+
const origError = console.error;
|
|
12
|
+
console.log = (...args) => logs.push(args.map(String).join(" "));
|
|
13
|
+
console.warn = (...args) => logs.push(`[warn] ${args.map(String).join(" ")}`);
|
|
14
|
+
console.error = (...args) => logs.push(`[error] ${args.map(String).join(" ")}`);
|
|
15
|
+
try {
|
|
16
|
+
const AsyncFunction = Object.getPrototypeOf(async () => { }).constructor;
|
|
17
|
+
const fn = new AsyncFunction("workbook", "sheet", "GC", "file", code);
|
|
18
|
+
const result = await fn(workbook, sheet, GC, file);
|
|
19
|
+
const output = {};
|
|
20
|
+
if (result !== undefined) {
|
|
21
|
+
output.result = result;
|
|
22
|
+
}
|
|
23
|
+
if (logs.length > 0) {
|
|
24
|
+
output.logs = logs;
|
|
25
|
+
}
|
|
26
|
+
if (Object.keys(output).length === 0) {
|
|
27
|
+
output.result = null;
|
|
28
|
+
}
|
|
29
|
+
ok(output);
|
|
30
|
+
}
|
|
31
|
+
catch (err) {
|
|
32
|
+
// Restore console before failing
|
|
33
|
+
console.log = origLog;
|
|
34
|
+
console.warn = origWarn;
|
|
35
|
+
console.error = origError;
|
|
36
|
+
fail(err instanceof Error ? err.message : String(err));
|
|
37
|
+
}
|
|
38
|
+
finally {
|
|
39
|
+
console.log = origLog;
|
|
40
|
+
console.warn = origWarn;
|
|
41
|
+
console.error = origError;
|
|
42
|
+
}
|
|
43
|
+
}, { save: true });
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=eval.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"eval.js","sourceRoot":"","sources":["../../../src/cli/commands/eval.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/get.ts"],"names":[],"mappings":"AAKA,wBAAsB,GAAG,CACvB,QAAQ,EAAE,MAAM,EAChB,GAAG,EAAE,MAAM,EACX,OAAO,EAAE;IAAE,MAAM,CAAC,EAAE,OAAO,CAAA;CAAE,GAC5B,OAAO,CAAC,IAAI,CAAC,CAiEf"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { cellToA1, parseRef, rangeDimensions } from "../a1.js";
|
|
2
|
+
import { withFile } from "../context.js";
|
|
3
|
+
import { fail, ok } from "../output.js";
|
|
4
|
+
import { serializeStyle } from "../styles.js";
|
|
5
|
+
export async function get(filePath, ref, options) {
|
|
6
|
+
const parsed = parseRef(ref);
|
|
7
|
+
await withFile(filePath, ({ workbook }) => {
|
|
8
|
+
const sheet = parsed.sheet
|
|
9
|
+
? workbook.getSheetFromName(parsed.sheet)
|
|
10
|
+
: workbook.getActiveSheet();
|
|
11
|
+
if (!sheet) {
|
|
12
|
+
fail(`Sheet not found: ${parsed.sheet ?? "(active)"}`);
|
|
13
|
+
}
|
|
14
|
+
const { rows, cols } = rangeDimensions(parsed);
|
|
15
|
+
const cells = {};
|
|
16
|
+
let cellCount = 0;
|
|
17
|
+
for (let r = 0; r < rows; r++) {
|
|
18
|
+
for (let c = 0; c < cols; c++) {
|
|
19
|
+
const row = parsed.start.row + r;
|
|
20
|
+
const col = parsed.start.col + c;
|
|
21
|
+
const value = sheet.getValue(row, col);
|
|
22
|
+
const formula = sheet.getFormula(row, col);
|
|
23
|
+
const hasValue = value !== null && value !== undefined && value !== "";
|
|
24
|
+
const hasFormula = !!formula;
|
|
25
|
+
if (!hasValue && !hasFormula)
|
|
26
|
+
continue;
|
|
27
|
+
const a1 = cellToA1(row, col);
|
|
28
|
+
const cell = {
|
|
29
|
+
value: value ?? null,
|
|
30
|
+
};
|
|
31
|
+
if (hasFormula) {
|
|
32
|
+
cell.formula = formula;
|
|
33
|
+
}
|
|
34
|
+
if (options.styles !== false) {
|
|
35
|
+
const style = sheet.getStyle(row, col);
|
|
36
|
+
if (style) {
|
|
37
|
+
const serialized = serializeStyle(style);
|
|
38
|
+
if (serialized) {
|
|
39
|
+
cell.styles = serialized;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
cells[a1] = cell;
|
|
44
|
+
cellCount++;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
ok({
|
|
48
|
+
sheet: sheet.name(),
|
|
49
|
+
range: ref,
|
|
50
|
+
cellCount,
|
|
51
|
+
cells,
|
|
52
|
+
});
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
//# sourceMappingURL=get.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get.js","sourceRoot":"","sources":["../../../src/cli/commands/get.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"info.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/info.ts"],"names":[],"mappings":"AAIA,wBAAsB,IAAI,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA0C1D"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { cellToA1 } from "../a1.js";
|
|
2
|
+
import { withFile } from "../context.js";
|
|
3
|
+
import { ok } from "../output.js";
|
|
4
|
+
export async function info(filePath) {
|
|
5
|
+
await withFile(filePath, ({ workbook, GC }) => {
|
|
6
|
+
const sheetCount = workbook.getSheetCount();
|
|
7
|
+
const activeIndex = workbook.getActiveSheetIndex();
|
|
8
|
+
const sheets = [];
|
|
9
|
+
for (let i = 0; i < sheetCount; i++) {
|
|
10
|
+
const sheet = workbook.getSheet(i);
|
|
11
|
+
let usedRange = null;
|
|
12
|
+
try {
|
|
13
|
+
const range = sheet.getUsedRange(GC.Spread.Sheets.UsedRangeType.data |
|
|
14
|
+
GC.Spread.Sheets.UsedRangeType.formula);
|
|
15
|
+
if (range && range.rowCount > 0 && range.colCount > 0) {
|
|
16
|
+
const startA1 = cellToA1(range.row, range.col);
|
|
17
|
+
const endA1 = cellToA1(range.row + range.rowCount - 1, range.col + range.colCount - 1);
|
|
18
|
+
usedRange = `${startA1}:${endA1}`;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
catch {
|
|
22
|
+
// getUsedRange may fail on empty sheets
|
|
23
|
+
}
|
|
24
|
+
sheets.push({
|
|
25
|
+
index: i,
|
|
26
|
+
name: sheet.name(),
|
|
27
|
+
usedRange,
|
|
28
|
+
active: i === activeIndex,
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
ok({ sheets });
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=info.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"info.js","sourceRoot":"","sources":["../../../src/cli/commands/info.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AACpC,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAElC,MAAM,CAAC,KAAK,UAAU,IAAI,CAAC,QAAgB;IACzC,MAAM,QAAQ,CAAC,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,EAAE,EAAE;QAC5C,MAAM,UAAU,GAAG,QAAQ,CAAC,aAAa,EAAE,CAAC;QAC5C,MAAM,WAAW,GAAG,QAAQ,CAAC,mBAAmB,EAAE,CAAC;QACnD,MAAM,MAAM,GAKN,EAAE,CAAC;QAET,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,EAAE,CAAC,EAAE,EAAE,CAAC;YACpC,MAAM,KAAK,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;YACnC,IAAI,SAAS,GAAkB,IAAI,CAAC;YAEpC,IAAI,CAAC;gBACH,MAAM,KAAK,GAAG,KAAK,CAAC,YAAY,CAC9B,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI;oBACjC,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,OAAO,CACzC,CAAC;gBACF,IAAI,KAAK,IAAI,KAAK,CAAC,QAAQ,GAAG,CAAC,IAAI,KAAK,CAAC,QAAQ,GAAG,CAAC,EAAE,CAAC;oBACtD,MAAM,OAAO,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;oBAC/C,MAAM,KAAK,GAAG,QAAQ,CACpB,KAAK,CAAC,GAAG,GAAG,KAAK,CAAC,QAAQ,GAAG,CAAC,EAC9B,KAAK,CAAC,GAAG,GAAG,KAAK,CAAC,QAAQ,GAAG,CAAC,CAC/B,CAAC;oBACF,SAAS,GAAG,GAAG,OAAO,IAAI,KAAK,EAAE,CAAC;gBACpC,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,wCAAwC;YAC1C,CAAC;YAED,MAAM,CAAC,IAAI,CAAC;gBACV,KAAK,EAAE,CAAC;gBACR,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE;gBAClB,SAAS;gBACT,MAAM,EAAE,CAAC,KAAK,WAAW;aAC1B,CAAC,CAAC;QACL,CAAC;QAED,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;IACjB,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"objects.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/objects.ts"],"names":[],"mappings":"AASA,wBAAsB,OAAO,CAC3B,QAAQ,EAAE,MAAM,EAChB,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,IAAI,CAAC,CAqEf"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import { withFile } from "../context.js";
|
|
2
|
+
import { ok } from "../output.js";
|
|
3
|
+
export async function objects(filePath, sheetFilter) {
|
|
4
|
+
await withFile(filePath, ({ workbook }) => {
|
|
5
|
+
const result = [];
|
|
6
|
+
for (let i = 0; i < workbook.getSheetCount(); i++) {
|
|
7
|
+
const sheet = workbook.getSheet(i);
|
|
8
|
+
const sheetName = sheet.name();
|
|
9
|
+
if (sheetFilter && sheetName !== sheetFilter)
|
|
10
|
+
continue;
|
|
11
|
+
// Charts
|
|
12
|
+
try {
|
|
13
|
+
const charts = sheet.charts?.all?.() ?? [];
|
|
14
|
+
for (const chart of charts) {
|
|
15
|
+
result.push({
|
|
16
|
+
sheet: sheetName,
|
|
17
|
+
type: "chart",
|
|
18
|
+
name: chart.name(),
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
catch {
|
|
23
|
+
// charts extension may not be loaded
|
|
24
|
+
}
|
|
25
|
+
// Tables
|
|
26
|
+
try {
|
|
27
|
+
const tables = sheet.tables?.all?.() ?? [];
|
|
28
|
+
for (const table of tables) {
|
|
29
|
+
result.push({
|
|
30
|
+
sheet: sheetName,
|
|
31
|
+
type: "table",
|
|
32
|
+
name: String(table.name()),
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
catch {
|
|
37
|
+
// tables may not be available
|
|
38
|
+
}
|
|
39
|
+
// Pivot tables
|
|
40
|
+
try {
|
|
41
|
+
const pivots = sheet.pivotTables?.all?.() ?? [];
|
|
42
|
+
for (const pivot of pivots) {
|
|
43
|
+
result.push({
|
|
44
|
+
sheet: sheetName,
|
|
45
|
+
type: "pivotTable",
|
|
46
|
+
name: String(pivot.name()),
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
catch {
|
|
51
|
+
// pivot extension may not be loaded
|
|
52
|
+
}
|
|
53
|
+
// Slicers
|
|
54
|
+
try {
|
|
55
|
+
const slicers = sheet.slicers?.all?.() ?? [];
|
|
56
|
+
for (const slicer of slicers) {
|
|
57
|
+
result.push({
|
|
58
|
+
sheet: sheetName,
|
|
59
|
+
type: "slicer",
|
|
60
|
+
name: String(slicer.name()),
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
catch {
|
|
65
|
+
// slicers extension may not be loaded
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
ok({ objects: result });
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
//# sourceMappingURL=objects.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"objects.js","sourceRoot":"","sources":["../../../src/cli/commands/objects.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAQlC,MAAM,CAAC,KAAK,UAAU,OAAO,CAC3B,QAAgB,EAChB,WAAoB;IAEpB,MAAM,QAAQ,CAAC,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE;QACxC,MAAM,MAAM,GAAiB,EAAE,CAAC;QAEhC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,aAAa,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;YAClD,MAAM,KAAK,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;YACnC,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;YAE/B,IAAI,WAAW,IAAI,SAAS,KAAK,WAAW;gBAAE,SAAS;YAEvD,SAAS;YACT,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,CAAC;gBAC3C,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;oBAC3B,MAAM,CAAC,IAAI,CAAC;wBACV,KAAK,EAAE,SAAS;wBAChB,IAAI,EAAE,OAAO;wBACb,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE;qBACnB,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,qCAAqC;YACvC,CAAC;YAED,SAAS;YACT,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,CAAC;gBAC3C,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;oBAC3B,MAAM,CAAC,IAAI,CAAC;wBACV,KAAK,EAAE,SAAS;wBAChB,IAAI,EAAE,OAAO;wBACb,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;qBAC3B,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,8BAA8B;YAChC,CAAC;YAED,eAAe;YACf,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,KAAK,CAAC,WAAW,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,CAAC;gBAChD,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;oBAC3B,MAAM,CAAC,IAAI,CAAC;wBACV,KAAK,EAAE,SAAS;wBAChB,IAAI,EAAE,YAAY;wBAClB,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;qBAC3B,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,oCAAoC;YACtC,CAAC;YAED,UAAU;YACV,IAAI,CAAC;gBACH,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,CAAC;gBAC7C,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;oBAC7B,MAAM,CAAC,IAAI,CAAC;wBACV,KAAK,EAAE,SAAS;wBAChB,IAAI,EAAE,QAAQ;wBACd,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;qBAC5B,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,sCAAsC;YACxC,CAAC;QACH,CAAC;QAED,EAAE,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;IAC1B,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resize.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/resize.ts"],"names":[],"mappings":"AAIA,wBAAsB,MAAM,CAC1B,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,GAAG,SAAS,EAC7B,OAAO,EAAE;IACP,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,GACA,OAAO,CAAC,IAAI,CAAC,CAoDf"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { colToIndex } from "../a1.js";
|
|
2
|
+
import { withFile } from "../context.js";
|
|
3
|
+
import { fail, ok } from "../output.js";
|
|
4
|
+
export async function resize(filePath, sheetName, options) {
|
|
5
|
+
if (!options.width && !options.height) {
|
|
6
|
+
fail("Specify --width and/or --height.");
|
|
7
|
+
}
|
|
8
|
+
await withFile(filePath, ({ workbook }) => {
|
|
9
|
+
const sheet = sheetName
|
|
10
|
+
? workbook.getSheetFromName(sheetName)
|
|
11
|
+
: workbook.getActiveSheet();
|
|
12
|
+
if (!sheet)
|
|
13
|
+
fail(`Sheet not found: ${sheetName ?? "(active)"}`);
|
|
14
|
+
if (options.width !== undefined) {
|
|
15
|
+
if (options.columns) {
|
|
16
|
+
const [startStr, endStr] = options.columns.split(":");
|
|
17
|
+
const startCol = colToIndex(startStr);
|
|
18
|
+
const endCol = endStr ? colToIndex(endStr) : startCol;
|
|
19
|
+
for (let c = startCol; c <= endCol; c++) {
|
|
20
|
+
sheet.setColumnWidth(c, options.width);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
else {
|
|
24
|
+
// All columns
|
|
25
|
+
const colCount = sheet.getColumnCount();
|
|
26
|
+
for (let c = 0; c < colCount; c++) {
|
|
27
|
+
sheet.setColumnWidth(c, options.width);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
if (options.height !== undefined) {
|
|
32
|
+
if (options.rows) {
|
|
33
|
+
const [startStr, endStr] = options.rows.split(":");
|
|
34
|
+
const startRow = parseInt(startStr, 10) - 1;
|
|
35
|
+
const endRow = endStr ? parseInt(endStr, 10) - 1 : startRow;
|
|
36
|
+
for (let r = startRow; r <= endRow; r++) {
|
|
37
|
+
sheet.setRowHeight(r, options.height);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
else {
|
|
41
|
+
// All rows
|
|
42
|
+
const rowCount = sheet.getRowCount();
|
|
43
|
+
for (let r = 0; r < rowCount; r++) {
|
|
44
|
+
sheet.setRowHeight(r, options.height);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
ok({ resized: true });
|
|
49
|
+
}, { save: true });
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=resize.js.map
|