@ims-view/server 1.2.0 → 1.2.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 +20 -1
- package/lib/excel/excel-export.worker.cjs +70 -0
- package/lib/excel/excel-parse.worker.cjs +114 -0
- package/lib/server/src/app.module.js.map +1 -0
- package/lib/server/src/config/env.d.ts +31 -0
- package/lib/server/src/config/env.js +32 -0
- package/lib/server/src/config/env.js.map +1 -0
- package/lib/server/src/excel/dto/excel-task-id.dto.d.ts +19 -0
- package/lib/server/src/excel/dto/excel-task-id.dto.js +17 -0
- package/lib/server/src/excel/dto/excel-task-id.dto.js.map +1 -0
- package/lib/server/src/excel/dto/export-excel.dto.d.ts +67 -0
- package/lib/server/src/excel/dto/export-excel.dto.js +48 -0
- package/lib/server/src/excel/dto/export-excel.dto.js.map +1 -0
- package/lib/server/src/excel/excel-storage.service.d.ts +54 -0
- package/lib/server/src/excel/excel-storage.service.js +267 -0
- package/lib/server/src/excel/excel-storage.service.js.map +1 -0
- package/lib/server/src/excel/excel.controller.d.ts +17 -0
- package/lib/{excel → server/src/excel}/excel.controller.js +40 -11
- package/lib/server/src/excel/excel.controller.js.map +1 -0
- package/lib/server/src/excel/excel.converter.d.ts +15 -0
- package/lib/server/src/excel/excel.converter.js +53 -0
- package/lib/server/src/excel/excel.converter.js.map +1 -0
- package/lib/{excel → server/src/excel}/excel.module.js +3 -2
- package/lib/server/src/excel/excel.module.js.map +1 -0
- package/lib/server/src/excel/excel.service.d.ts +33 -0
- package/lib/server/src/excel/excel.service.js +390 -0
- package/lib/server/src/excel/excel.service.js.map +1 -0
- package/lib/server/src/excel/types.d.ts +6 -0
- package/lib/server/src/excel/types.js +44 -0
- package/lib/server/src/excel/types.js.map +1 -0
- package/lib/server/src/index.d.ts +12 -0
- package/lib/server/src/index.js +32 -0
- package/lib/server/src/index.js.map +1 -0
- package/lib/server/src/main.d.ts +1 -0
- package/lib/{main.js → server/src/main.js} +58 -2
- package/lib/server/src/main.js.map +1 -0
- package/lib/server/src/shared/create-zod-base-model.d.ts +29 -0
- package/lib/server/src/shared/create-zod-base-model.js +55 -0
- package/lib/server/src/shared/create-zod-base-model.js.map +1 -0
- package/lib/server/src/shared/index.d.ts +5 -0
- package/lib/server/src/shared/index.js +16 -0
- package/lib/server/src/shared/index.js.map +1 -0
- package/lib/server/src/shared/response-entity.d.ts +32 -0
- package/lib/server/src/shared/response-entity.js +74 -0
- package/lib/server/src/shared/response-entity.js.map +1 -0
- package/lib/server/src/shared/zod-exception.filter.d.ts +5 -0
- package/lib/server/src/shared/zod-exception.filter.js +25 -0
- package/lib/server/src/shared/zod-exception.filter.js.map +1 -0
- package/lib/server/src/shared/zod-validation.pipe.d.ts +4 -0
- package/lib/server/src/shared/zod-validation.pipe.js +25 -0
- package/lib/server/src/shared/zod-validation.pipe.js.map +1 -0
- package/lib/utils/src/excel/converter.d.ts +7 -0
- package/lib/utils/src/excel/converter.js +139 -0
- package/lib/utils/src/excel/converter.js.map +1 -0
- package/lib/utils/src/excel/exceljsChunked.d.ts +2 -0
- package/lib/utils/src/excel/exceljsChunked.js +16 -0
- package/lib/utils/src/excel/exceljsChunked.js.map +1 -0
- package/lib/utils/src/excel/exceljsDrawings.d.ts +2 -0
- package/lib/utils/src/excel/exceljsDrawings.js +8 -0
- package/lib/utils/src/excel/exceljsDrawings.js.map +1 -0
- package/lib/utils/src/excel/exceljsStyle.d.ts +2 -0
- package/lib/utils/src/excel/exceljsStyle.js +10 -0
- package/lib/utils/src/excel/exceljsStyle.js.map +1 -0
- package/lib/utils/src/excel/exportWorkerClient.d.ts +31 -0
- package/lib/utils/src/excel/exportWorkerClient.js +105 -0
- package/lib/utils/src/excel/exportWorkerClient.js.map +1 -0
- package/lib/utils/src/excel/index.d.ts +15 -0
- package/lib/utils/src/excel/index.js +57 -0
- package/lib/utils/src/excel/index.js.map +1 -0
- package/lib/utils/src/excel/luckyexcel.d.ts +13 -0
- package/lib/utils/src/excel/luckyexcel.js +211 -0
- package/lib/utils/src/excel/luckyexcel.js.map +1 -0
- package/lib/utils/src/excel/sheetjsConverter.d.ts +6 -0
- package/lib/utils/src/excel/sheetjsConverter.js +224 -0
- package/lib/utils/src/excel/sheetjsConverter.js.map +1 -0
- package/lib/utils/src/excel/types.d.ts +88 -0
- package/lib/utils/src/excel/types.js +11 -0
- package/lib/utils/src/excel/types.js.map +1 -0
- package/lib/utils/src/excel/workbookChunked.d.ts +13 -0
- package/lib/utils/src/excel/workbookChunked.js +152 -0
- package/lib/utils/src/excel/workbookChunked.js.map +1 -0
- package/package.json +12 -6
- package/lib/app.module.js.map +0 -1
- package/lib/excel/excel.controller.d.ts +0 -13
- package/lib/excel/excel.controller.js.map +0 -1
- package/lib/excel/excel.converter.d.ts +0 -2
- package/lib/excel/excel.converter.js +0 -11
- package/lib/excel/excel.converter.js.map +0 -1
- package/lib/excel/excel.module.js.map +0 -1
- package/lib/excel/excel.service.d.ts +0 -9
- package/lib/excel/excel.service.js +0 -33
- package/lib/excel/excel.service.js.map +0 -1
- package/lib/excel/types.d.ts +0 -6
- package/lib/excel/types.js +0 -6
- package/lib/excel/types.js.map +0 -1
- package/lib/index.d.ts +0 -7
- package/lib/index.js +0 -14
- package/lib/index.js.map +0 -1
- package/lib/main.d.ts +0 -1
- package/lib/main.js.map +0 -1
- /package/lib/{app.module.d.ts → server/src/app.module.d.ts} +0 -0
- /package/lib/{app.module.js → server/src/app.module.js} +0 -0
- /package/lib/{excel → server/src/excel}/excel.module.d.ts +0 -0
|
@@ -0,0 +1,224 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.excelBufferToWorkbookDataBySheetJs = exports.workbookHasCellValues = exports.workbookFromSheetJs = exports.readExcelWithSheetJs = void 0;
|
|
37
|
+
const XLSX = __importStar(require("xlsx"));
|
|
38
|
+
const types_1 = require("./types");
|
|
39
|
+
const toUint8Array = (input) => {
|
|
40
|
+
if (typeof Buffer !== 'undefined' && Buffer.isBuffer(input)) {
|
|
41
|
+
return new Uint8Array(input.buffer, input.byteOffset, input.byteLength);
|
|
42
|
+
}
|
|
43
|
+
if (input instanceof ArrayBuffer) {
|
|
44
|
+
return new Uint8Array(input);
|
|
45
|
+
}
|
|
46
|
+
return input;
|
|
47
|
+
};
|
|
48
|
+
const hasUsefulSheetJsData = (wb) => {
|
|
49
|
+
for (const name of wb.SheetNames) {
|
|
50
|
+
const sheet = wb.Sheets[name];
|
|
51
|
+
if (!sheet)
|
|
52
|
+
continue;
|
|
53
|
+
for (const key of Object.keys(sheet)) {
|
|
54
|
+
if (key.startsWith('!'))
|
|
55
|
+
continue;
|
|
56
|
+
const cell = sheet[key];
|
|
57
|
+
if (cell && (cell.v != null || cell.w != null || cell.f))
|
|
58
|
+
return true;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
return false;
|
|
62
|
+
};
|
|
63
|
+
const readExcelWithSheetJs = (input) => {
|
|
64
|
+
const bytes = toUint8Array(input);
|
|
65
|
+
const base = {
|
|
66
|
+
type: 'array',
|
|
67
|
+
cellDates: true,
|
|
68
|
+
cellNF: true,
|
|
69
|
+
cellText: true,
|
|
70
|
+
};
|
|
71
|
+
try {
|
|
72
|
+
const wb = XLSX.read(bytes, base);
|
|
73
|
+
if (hasUsefulSheetJsData(wb))
|
|
74
|
+
return wb;
|
|
75
|
+
}
|
|
76
|
+
catch {
|
|
77
|
+
}
|
|
78
|
+
return XLSX.read(bytes, { ...base, raw: false });
|
|
79
|
+
};
|
|
80
|
+
exports.readExcelWithSheetJs = readExcelWithSheetJs;
|
|
81
|
+
const cellFromSheetJs = (cell) => {
|
|
82
|
+
if (!cell || (cell.v == null && cell.w == null && !cell.f))
|
|
83
|
+
return null;
|
|
84
|
+
const display = cell.w != null ? String(cell.w) : null;
|
|
85
|
+
let value = cell.v;
|
|
86
|
+
let type = types_1.CellValueType.STRING;
|
|
87
|
+
if (cell.t === 'n' || typeof cell.v === 'number') {
|
|
88
|
+
type = types_1.CellValueType.NUMBER;
|
|
89
|
+
value = typeof cell.v === 'number' ? cell.v : Number(cell.v);
|
|
90
|
+
}
|
|
91
|
+
else if (cell.t === 'b' || typeof cell.v === 'boolean') {
|
|
92
|
+
type = types_1.CellValueType.BOOLEAN;
|
|
93
|
+
value = Boolean(cell.v);
|
|
94
|
+
}
|
|
95
|
+
else if (cell.v instanceof Date) {
|
|
96
|
+
type = types_1.CellValueType.STRING;
|
|
97
|
+
value = display || cell.v.toLocaleString();
|
|
98
|
+
}
|
|
99
|
+
else {
|
|
100
|
+
type = types_1.CellValueType.STRING;
|
|
101
|
+
value = display || String(cell.v ?? '');
|
|
102
|
+
}
|
|
103
|
+
if (cell.f) {
|
|
104
|
+
const formula = String(cell.f).startsWith('=') ? String(cell.f) : `=${cell.f}`;
|
|
105
|
+
return { f: formula, v: value, t: type };
|
|
106
|
+
}
|
|
107
|
+
if (value === '' && display == null)
|
|
108
|
+
return null;
|
|
109
|
+
return { v: value, t: type };
|
|
110
|
+
};
|
|
111
|
+
const workbookFromSheetJs = (wb, fileName = 'workbook.xlsx') => {
|
|
112
|
+
const sheets = {};
|
|
113
|
+
const sheetOrder = [];
|
|
114
|
+
wb.SheetNames.forEach((name, index) => {
|
|
115
|
+
const id = `sheet-${index}`;
|
|
116
|
+
const sheet = wb.Sheets[name] || {};
|
|
117
|
+
const cellData = {};
|
|
118
|
+
let maxRow = 0;
|
|
119
|
+
let maxCol = 0;
|
|
120
|
+
if (sheet['!ref']) {
|
|
121
|
+
const range = XLSX.utils.decode_range(sheet['!ref']);
|
|
122
|
+
for (let r = range.s.r; r <= range.e.r; r += 1) {
|
|
123
|
+
for (let c = range.s.c; c <= range.e.c; c += 1) {
|
|
124
|
+
const addr = XLSX.utils.encode_cell({ r, c });
|
|
125
|
+
const mapped = cellFromSheetJs(sheet[addr]);
|
|
126
|
+
if (!mapped)
|
|
127
|
+
continue;
|
|
128
|
+
if (!cellData[r])
|
|
129
|
+
cellData[r] = {};
|
|
130
|
+
cellData[r][c] = mapped;
|
|
131
|
+
maxRow = Math.max(maxRow, r);
|
|
132
|
+
maxCol = Math.max(maxCol, c);
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
const merges = (sheet['!merges'] || []).map((m) => ({
|
|
137
|
+
startRow: m.s.r,
|
|
138
|
+
startColumn: m.s.c,
|
|
139
|
+
endRow: m.e.r,
|
|
140
|
+
endColumn: m.e.c,
|
|
141
|
+
}));
|
|
142
|
+
for (const m of merges) {
|
|
143
|
+
const master = cellData[m.startRow]?.[m.startColumn];
|
|
144
|
+
for (let r = m.startRow; r <= m.endRow; r += 1) {
|
|
145
|
+
if (!cellData[r])
|
|
146
|
+
continue;
|
|
147
|
+
for (let c = m.startColumn; c <= m.endColumn; c += 1) {
|
|
148
|
+
if (r === m.startRow && c === m.startColumn)
|
|
149
|
+
continue;
|
|
150
|
+
delete cellData[r][c];
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
if (master) {
|
|
154
|
+
if (!cellData[m.startRow])
|
|
155
|
+
cellData[m.startRow] = {};
|
|
156
|
+
cellData[m.startRow][m.startColumn] = master;
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
const columnData = {};
|
|
160
|
+
if (sheet['!cols']) {
|
|
161
|
+
sheet['!cols'].forEach((col, i) => {
|
|
162
|
+
if (!col)
|
|
163
|
+
return;
|
|
164
|
+
if (col.wpx)
|
|
165
|
+
columnData[i] = { w: col.wpx };
|
|
166
|
+
else if (col.width)
|
|
167
|
+
columnData[i] = { w: Math.round(col.width * 8) };
|
|
168
|
+
});
|
|
169
|
+
}
|
|
170
|
+
sheetOrder.push(id);
|
|
171
|
+
sheets[id] = {
|
|
172
|
+
id,
|
|
173
|
+
name: name || `Sheet${index + 1}`,
|
|
174
|
+
rowCount: Math.max(maxRow + 50, 100),
|
|
175
|
+
columnCount: Math.max(maxCol + 10, 26),
|
|
176
|
+
cellData,
|
|
177
|
+
columnData,
|
|
178
|
+
mergeData: merges,
|
|
179
|
+
};
|
|
180
|
+
});
|
|
181
|
+
if (!sheetOrder.length) {
|
|
182
|
+
sheetOrder.push('sheet-0');
|
|
183
|
+
sheets['sheet-0'] = {
|
|
184
|
+
id: 'sheet-0',
|
|
185
|
+
name: 'Sheet1',
|
|
186
|
+
rowCount: 100,
|
|
187
|
+
columnCount: 26,
|
|
188
|
+
cellData: {},
|
|
189
|
+
mergeData: [],
|
|
190
|
+
};
|
|
191
|
+
}
|
|
192
|
+
return {
|
|
193
|
+
id: `wb-${Date.now()}`,
|
|
194
|
+
name: fileName,
|
|
195
|
+
appVersion: '0.25.1',
|
|
196
|
+
locale: 'zhCN',
|
|
197
|
+
styles: {},
|
|
198
|
+
sheetOrder,
|
|
199
|
+
sheets,
|
|
200
|
+
};
|
|
201
|
+
};
|
|
202
|
+
exports.workbookFromSheetJs = workbookFromSheetJs;
|
|
203
|
+
const workbookHasCellValues = (data) => {
|
|
204
|
+
const sheets = data.sheets || {};
|
|
205
|
+
for (const sheet of Object.values(sheets)) {
|
|
206
|
+
const cellData = sheet?.cellData || {};
|
|
207
|
+
for (const row of Object.values(cellData)) {
|
|
208
|
+
if (!row)
|
|
209
|
+
continue;
|
|
210
|
+
for (const cell of Object.values(row)) {
|
|
211
|
+
if (cell && (cell.v != null || cell.f))
|
|
212
|
+
return true;
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
return false;
|
|
217
|
+
};
|
|
218
|
+
exports.workbookHasCellValues = workbookHasCellValues;
|
|
219
|
+
const excelBufferToWorkbookDataBySheetJs = (input, fileName = 'workbook.xlsx') => {
|
|
220
|
+
const wb = (0, exports.readExcelWithSheetJs)(input);
|
|
221
|
+
return (0, exports.workbookFromSheetJs)(wb, fileName);
|
|
222
|
+
};
|
|
223
|
+
exports.excelBufferToWorkbookDataBySheetJs = excelBufferToWorkbookDataBySheetJs;
|
|
224
|
+
//# sourceMappingURL=sheetjsConverter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sheetjsConverter.js","sourceRoot":"","sources":["../../../../../utils/src/excel/sheetjsConverter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
export declare enum CellValueType {
|
|
2
|
+
STRING = 1,
|
|
3
|
+
NUMBER = 2,
|
|
4
|
+
BOOLEAN = 3,
|
|
5
|
+
FORCE_STRING = 4
|
|
6
|
+
}
|
|
7
|
+
export interface ICellData {
|
|
8
|
+
v?: string | number | boolean;
|
|
9
|
+
t?: CellValueType;
|
|
10
|
+
f?: string;
|
|
11
|
+
si?: string;
|
|
12
|
+
s?: string | Record<string, unknown>;
|
|
13
|
+
p?: unknown;
|
|
14
|
+
custom?: Record<string, unknown>;
|
|
15
|
+
}
|
|
16
|
+
export interface IRange {
|
|
17
|
+
startRow: number;
|
|
18
|
+
startColumn: number;
|
|
19
|
+
endRow: number;
|
|
20
|
+
endColumn: number;
|
|
21
|
+
}
|
|
22
|
+
export interface IWorksheetData {
|
|
23
|
+
id: string;
|
|
24
|
+
name: string;
|
|
25
|
+
cellData?: Record<number, Record<number, ICellData>>;
|
|
26
|
+
mergeData?: IRange[];
|
|
27
|
+
rowCount?: number;
|
|
28
|
+
columnCount?: number;
|
|
29
|
+
columnData?: Record<number, {
|
|
30
|
+
w?: number;
|
|
31
|
+
hd?: number;
|
|
32
|
+
}>;
|
|
33
|
+
rowData?: Record<number, {
|
|
34
|
+
h?: number;
|
|
35
|
+
hd?: number;
|
|
36
|
+
}>;
|
|
37
|
+
freeze?: {
|
|
38
|
+
xSplit: number;
|
|
39
|
+
ySplit: number;
|
|
40
|
+
startRow: number;
|
|
41
|
+
startColumn: number;
|
|
42
|
+
};
|
|
43
|
+
defaultColumnWidth?: number;
|
|
44
|
+
defaultRowHeight?: number;
|
|
45
|
+
tabColor?: string;
|
|
46
|
+
hidden?: number;
|
|
47
|
+
zoomRatio?: number;
|
|
48
|
+
scrollTop?: number;
|
|
49
|
+
scrollLeft?: number;
|
|
50
|
+
rowHeader?: {
|
|
51
|
+
width: number;
|
|
52
|
+
hidden?: number;
|
|
53
|
+
};
|
|
54
|
+
columnHeader?: {
|
|
55
|
+
height: number;
|
|
56
|
+
hidden?: number;
|
|
57
|
+
};
|
|
58
|
+
showGridlines?: number;
|
|
59
|
+
rightToLeft?: number;
|
|
60
|
+
}
|
|
61
|
+
export interface IWorkbookData {
|
|
62
|
+
id?: string;
|
|
63
|
+
name?: string;
|
|
64
|
+
appVersion?: string;
|
|
65
|
+
locale?: string;
|
|
66
|
+
styles?: Record<string, unknown>;
|
|
67
|
+
sheetOrder?: string[];
|
|
68
|
+
sheets?: Record<string, Partial<IWorksheetData>>;
|
|
69
|
+
resources?: Array<{
|
|
70
|
+
name: string;
|
|
71
|
+
data: string;
|
|
72
|
+
}>;
|
|
73
|
+
}
|
|
74
|
+
export type ExcelSheetImage = {
|
|
75
|
+
sheetId: string;
|
|
76
|
+
dataUrl: string;
|
|
77
|
+
col: number;
|
|
78
|
+
row: number;
|
|
79
|
+
width?: number;
|
|
80
|
+
height?: number;
|
|
81
|
+
offsetX?: number;
|
|
82
|
+
offsetY?: number;
|
|
83
|
+
};
|
|
84
|
+
export type ExcelImportResult = {
|
|
85
|
+
workbookData: Partial<IWorkbookData>;
|
|
86
|
+
images: ExcelSheetImage[];
|
|
87
|
+
};
|
|
88
|
+
export type ExcelBinary = ArrayBuffer | Uint8Array;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CellValueType = void 0;
|
|
4
|
+
var CellValueType;
|
|
5
|
+
(function (CellValueType) {
|
|
6
|
+
CellValueType[CellValueType["STRING"] = 1] = "STRING";
|
|
7
|
+
CellValueType[CellValueType["NUMBER"] = 2] = "NUMBER";
|
|
8
|
+
CellValueType[CellValueType["BOOLEAN"] = 3] = "BOOLEAN";
|
|
9
|
+
CellValueType[CellValueType["FORCE_STRING"] = 4] = "FORCE_STRING";
|
|
10
|
+
})(CellValueType || (exports.CellValueType = CellValueType = {}));
|
|
11
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../../utils/src/excel/types.ts"],"names":[],"mappings":";;;AAEA,IAAY,aASX;AATD,WAAY,aAAa;IAEvB,qDAAU,CAAA;IAEV,qDAAU,CAAA;IAEV,uDAAW,CAAA;IAEX,iEAAgB,CAAA;AAClB,CAAC,EATW,aAAa,6BAAb,aAAa,QASxB"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { type ChunkedBlock, type ChunkedProgress, type ChunkedWorkbookMeta } from './exceljsChunked';
|
|
2
|
+
import type { IWorkbookData } from './types';
|
|
3
|
+
export type SplitWorkbookOptions = {
|
|
4
|
+
fileName?: string;
|
|
5
|
+
blockRowSize?: number;
|
|
6
|
+
maxRows?: number;
|
|
7
|
+
onProgress?: (progress: ChunkedProgress) => void;
|
|
8
|
+
onBlock?: (block: ChunkedBlock) => void | Promise<void>;
|
|
9
|
+
};
|
|
10
|
+
export declare const splitWorkbookDataToChunks: (workbookData: Partial<IWorkbookData>, options?: SplitWorkbookOptions) => Promise<{
|
|
11
|
+
meta: ChunkedWorkbookMeta;
|
|
12
|
+
blocks: ChunkedBlock[];
|
|
13
|
+
}>;
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.splitWorkbookDataToChunks = void 0;
|
|
4
|
+
const exceljsChunked_1 = require("./exceljsChunked");
|
|
5
|
+
const sheetMaxRow = (cellData) => {
|
|
6
|
+
if (!cellData)
|
|
7
|
+
return 0;
|
|
8
|
+
let max = -1;
|
|
9
|
+
Object.keys(cellData).forEach((key) => {
|
|
10
|
+
const row = Number(key);
|
|
11
|
+
if (Number.isFinite(row))
|
|
12
|
+
max = Math.max(max, row);
|
|
13
|
+
});
|
|
14
|
+
return max + 1;
|
|
15
|
+
};
|
|
16
|
+
const sheetMaxCol = (cellData) => {
|
|
17
|
+
if (!cellData)
|
|
18
|
+
return 0;
|
|
19
|
+
let max = -1;
|
|
20
|
+
Object.values(cellData).forEach((row) => {
|
|
21
|
+
Object.keys(row || {}).forEach((key) => {
|
|
22
|
+
const col = Number(key);
|
|
23
|
+
if (Number.isFinite(col))
|
|
24
|
+
max = Math.max(max, col);
|
|
25
|
+
});
|
|
26
|
+
});
|
|
27
|
+
return max + 1;
|
|
28
|
+
};
|
|
29
|
+
const clipMerges = (merges, maxRowExclusive) => {
|
|
30
|
+
if (!merges?.length)
|
|
31
|
+
return undefined;
|
|
32
|
+
const next = merges
|
|
33
|
+
.filter((m) => m.startRow < maxRowExclusive)
|
|
34
|
+
.map((m) => ({
|
|
35
|
+
...m,
|
|
36
|
+
endRow: Math.min(m.endRow, maxRowExclusive - 1),
|
|
37
|
+
}));
|
|
38
|
+
return next.length ? next : undefined;
|
|
39
|
+
};
|
|
40
|
+
const clipRowData = (rowData, maxRowExclusive) => {
|
|
41
|
+
if (!rowData)
|
|
42
|
+
return undefined;
|
|
43
|
+
const next = {};
|
|
44
|
+
Object.keys(rowData).forEach((key) => {
|
|
45
|
+
const row = Number(key);
|
|
46
|
+
if (!Number.isFinite(row) || row < 0 || row >= maxRowExclusive)
|
|
47
|
+
return;
|
|
48
|
+
next[row] = rowData[row];
|
|
49
|
+
});
|
|
50
|
+
return Object.keys(next).length ? next : undefined;
|
|
51
|
+
};
|
|
52
|
+
const sliceCellData = (cellData, startRow, endRow) => {
|
|
53
|
+
const out = {};
|
|
54
|
+
if (!cellData)
|
|
55
|
+
return out;
|
|
56
|
+
for (let r = startRow; r <= endRow; r += 1) {
|
|
57
|
+
const row = cellData[r];
|
|
58
|
+
if (!row)
|
|
59
|
+
continue;
|
|
60
|
+
out[r] = row;
|
|
61
|
+
}
|
|
62
|
+
return out;
|
|
63
|
+
};
|
|
64
|
+
const splitWorkbookDataToChunks = async (workbookData, options = {}) => {
|
|
65
|
+
const fileName = options.fileName || workbookData.name || 'workbook.xlsx';
|
|
66
|
+
const blockRowSize = Math.max(100, options.blockRowSize || exceljsChunked_1.DEFAULT_BLOCK_ROW_SIZE);
|
|
67
|
+
const requestedMaxRows = options.maxRows ?? exceljsChunked_1.DEFAULT_MAX_ROWS;
|
|
68
|
+
const maxRows = requestedMaxRows === 0 ? Number.POSITIVE_INFINITY : requestedMaxRows;
|
|
69
|
+
options.onProgress?.({ percent: 35, parsedBlocks: 0, totalBlocks: 0, phase: 'convert' });
|
|
70
|
+
const sheetOrder = workbookData.sheetOrder?.length
|
|
71
|
+
? [...workbookData.sheetOrder]
|
|
72
|
+
: Object.keys(workbookData.sheets || {});
|
|
73
|
+
const sheetsMeta = [];
|
|
74
|
+
const blocks = [];
|
|
75
|
+
let truncated = false;
|
|
76
|
+
let emittedBlocks = 0;
|
|
77
|
+
const planned = sheetOrder.map((sheetId, sheetIndex) => {
|
|
78
|
+
const sheet = (workbookData.sheets?.[sheetId] || {});
|
|
79
|
+
const dataRows = Math.max(sheetMaxRow(sheet.cellData), sheet.rowCount || 0);
|
|
80
|
+
const cappedRows = Math.min(dataRows, maxRows);
|
|
81
|
+
if (dataRows > maxRows)
|
|
82
|
+
truncated = true;
|
|
83
|
+
const blockCount = Math.max(1, Math.ceil(Math.max(cappedRows, 1) / blockRowSize));
|
|
84
|
+
return { sheetId, sheetIndex, sheet, cappedRows, blockCount };
|
|
85
|
+
});
|
|
86
|
+
const totalBlocks = planned.reduce((sum, item) => sum + item.blockCount, 0) || 1;
|
|
87
|
+
for (const item of planned) {
|
|
88
|
+
const { sheetId, sheetIndex, sheet, cappedRows, blockCount } = item;
|
|
89
|
+
const columnCount = Math.max(sheetMaxCol(sheet.cellData), sheet.columnCount || 0, 1);
|
|
90
|
+
for (let blockIndex = 0; blockIndex < blockCount; blockIndex += 1) {
|
|
91
|
+
const startRow = blockIndex * blockRowSize;
|
|
92
|
+
const endRow = Math.min(cappedRows, startRow + blockRowSize) - 1;
|
|
93
|
+
const cellData = cappedRows > 0 && endRow >= startRow
|
|
94
|
+
? sliceCellData(sheet.cellData, startRow, endRow)
|
|
95
|
+
: {};
|
|
96
|
+
const block = {
|
|
97
|
+
sheetId,
|
|
98
|
+
sheetIndex,
|
|
99
|
+
blockIndex,
|
|
100
|
+
startRow: Math.max(0, startRow),
|
|
101
|
+
endRow: Math.max(0, endRow),
|
|
102
|
+
cellData,
|
|
103
|
+
};
|
|
104
|
+
blocks.push(block);
|
|
105
|
+
emittedBlocks += 1;
|
|
106
|
+
await options.onBlock?.(block);
|
|
107
|
+
options.onProgress?.({
|
|
108
|
+
percent: Math.min(95, 35 + Math.round((emittedBlocks / totalBlocks) * 60)),
|
|
109
|
+
parsedBlocks: emittedBlocks,
|
|
110
|
+
totalBlocks,
|
|
111
|
+
phase: 'convert',
|
|
112
|
+
});
|
|
113
|
+
}
|
|
114
|
+
sheetsMeta.push({
|
|
115
|
+
id: sheetId,
|
|
116
|
+
name: sheet.name || `Sheet${sheetIndex + 1}`,
|
|
117
|
+
rowCount: Math.max(cappedRows, 1),
|
|
118
|
+
columnCount,
|
|
119
|
+
blockCount,
|
|
120
|
+
mergeData: clipMerges(sheet.mergeData, cappedRows),
|
|
121
|
+
columnData: sheet.columnData,
|
|
122
|
+
rowData: clipRowData(sheet.rowData, cappedRows),
|
|
123
|
+
freeze: sheet.freeze,
|
|
124
|
+
defaultColumnWidth: sheet.defaultColumnWidth,
|
|
125
|
+
defaultRowHeight: sheet.defaultRowHeight,
|
|
126
|
+
});
|
|
127
|
+
}
|
|
128
|
+
const meta = {
|
|
129
|
+
parseEngine: 'luckyexcel',
|
|
130
|
+
fileName,
|
|
131
|
+
name: workbookData.name || fileName.replace(/\.xlsx$/i, '') || 'workbook',
|
|
132
|
+
sheetOrder,
|
|
133
|
+
sheets: sheetsMeta,
|
|
134
|
+
blockRowSize,
|
|
135
|
+
truncated: truncated || undefined,
|
|
136
|
+
maxRows: requestedMaxRows === 0 ? 0 : Number.isFinite(maxRows) ? maxRows : 0,
|
|
137
|
+
styles: workbookData.styles,
|
|
138
|
+
resources: workbookData.resources,
|
|
139
|
+
appVersion: workbookData.appVersion,
|
|
140
|
+
locale: workbookData.locale,
|
|
141
|
+
workbookId: workbookData.id,
|
|
142
|
+
};
|
|
143
|
+
options.onProgress?.({
|
|
144
|
+
percent: 100,
|
|
145
|
+
parsedBlocks: emittedBlocks,
|
|
146
|
+
totalBlocks,
|
|
147
|
+
phase: 'done',
|
|
148
|
+
});
|
|
149
|
+
return { meta, blocks };
|
|
150
|
+
};
|
|
151
|
+
exports.splitWorkbookDataToChunks = splitWorkbookDataToChunks;
|
|
152
|
+
//# sourceMappingURL=workbookChunked.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workbookChunked.js","sourceRoot":"","sources":["../../../../../utils/src/excel/workbookChunked.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ims-view/server",
|
|
3
|
-
"version": "1.2.
|
|
3
|
+
"version": "1.2.2",
|
|
4
4
|
"description": "NestJS Excel import/export service for ExcelEditor (xlsx ↔ IWorkbookData)",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "eternallycyf(969475322@qq.com)",
|
|
@@ -24,26 +24,32 @@
|
|
|
24
24
|
"README.md"
|
|
25
25
|
],
|
|
26
26
|
"scripts": {
|
|
27
|
-
"start": "
|
|
28
|
-
"start:dev": "
|
|
29
|
-
"start:
|
|
27
|
+
"start": "node scripts/dev.cjs",
|
|
28
|
+
"start:dev": "node scripts/dev.cjs",
|
|
29
|
+
"start:once": "node scripts/dev.cjs --once",
|
|
30
|
+
"start:debug": "node scripts/dev.cjs --inspect-brk",
|
|
30
31
|
"build": "nest build",
|
|
31
32
|
"clean": "rm -rf lib dist",
|
|
32
33
|
"doctor": "node -e \"require('fs').accessSync('src/index.ts'); console.log('[@ims-view/server] doctor ok')\"",
|
|
33
34
|
"prepublishOnly": "npm run build"
|
|
34
35
|
},
|
|
35
36
|
"dependencies": {
|
|
36
|
-
"@ims-view/
|
|
37
|
+
"@ims-view/univer-import-excel": "1.0.0",
|
|
38
|
+
"@ims-view/utils": "1.22.2",
|
|
37
39
|
"@nestjs/common": "^11.0.0",
|
|
38
40
|
"@nestjs/core": "^11.0.0",
|
|
39
41
|
"@nestjs/platform-express": "^11.0.0",
|
|
42
|
+
"compression": "^1.8.1",
|
|
43
|
+
"exceljs": "^4.4.0",
|
|
40
44
|
"multer": "^1.4.5-lts.2",
|
|
41
45
|
"reflect-metadata": "^0.2.2",
|
|
42
|
-
"rxjs": "^7.8.2"
|
|
46
|
+
"rxjs": "^7.8.2",
|
|
47
|
+
"zod": "^3.25.76"
|
|
43
48
|
},
|
|
44
49
|
"devDependencies": {
|
|
45
50
|
"@nestjs/cli": "^11.0.0",
|
|
46
51
|
"@nestjs/schematics": "^11.0.0",
|
|
52
|
+
"@types/compression": "^1.8.1",
|
|
47
53
|
"@types/express": "^5.0.0",
|
|
48
54
|
"@types/multer": "^1.4.12",
|
|
49
55
|
"@types/node": "^22.0.0",
|
package/lib/app.module.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"app.module.js","sourceRoot":"","sources":["../src/app.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAwC;AACxC,uDAAmD;AAK5C,IAAM,SAAS,GAAf,MAAM,SAAS;CAAG,CAAA;AAAZ,8BAAS;oBAAT,SAAS;IAHrB,IAAA,eAAM,EAAC;QACN,OAAO,EAAE,CAAC,0BAAW,CAAC;KACvB,CAAC;GACW,SAAS,CAAG"}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import type { Response } from 'express';
|
|
2
|
-
import { ExcelService } from './excel.service';
|
|
3
|
-
import type { ExportExcelDto } from './types';
|
|
4
|
-
export declare class ExcelController {
|
|
5
|
-
private readonly excelService;
|
|
6
|
-
constructor(excelService: ExcelService);
|
|
7
|
-
health(): {
|
|
8
|
-
ok: boolean;
|
|
9
|
-
service: string;
|
|
10
|
-
};
|
|
11
|
-
importExcel(file: Express.Multer.File): Promise<import("@ims-view/utils").ExcelImportResult>;
|
|
12
|
-
exportExcel(body: ExportExcelDto, res: Response): Promise<void>;
|
|
13
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"excel.controller.js","sourceRoot":"","sources":["../../src/excel/excel.controller.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAQwB;AACxB,+DAA2D;AAE3D,mCAAuC;AACvC,mDAA+C;AAKxC,IAAM,eAAe,GAArB,MAAM,eAAe;IAC1B,YAA6B,YAA0B;QAA1B,iBAAY,GAAZ,YAAY,CAAc;IAAG,CAAC;IAG3D,MAAM;QACJ,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,gBAAgB,EAAE,CAAC;IACjD,CAAC;IASK,AAAN,KAAK,CAAC,WAAW,CAAiB,IAAyB;QACzD,OAAO,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IAC5C,CAAC;IAGK,AAAN,KAAK,CAAC,WAAW,CAAS,IAAoB,EAAS,GAAa;QAClE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QAEtE,GAAG,CAAC,SAAS,CACX,cAAc,EACd,mEAAmE,CACpE,CAAC;QACF,GAAG,CAAC,SAAS,CACX,qBAAqB,EACrB,gCAAgC,kBAAkB,CAAC,QAAQ,CAAC,EAAE,CAC/D,CAAC;QACF,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACnB,CAAC;CACF,CAAA;AAjCY,0CAAe;AAI1B;IADC,IAAA,YAAG,EAAC,QAAQ,CAAC;;;;6CAGb;AASK;IAPL,IAAA,aAAI,EAAC,QAAQ,CAAC;IACd,IAAA,wBAAe,EACd,IAAA,kCAAe,EAAC,MAAM,EAAE;QACtB,OAAO,EAAE,IAAA,sBAAa,GAAE;QACxB,MAAM,EAAE,EAAE,QAAQ,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI,EAAE;KACvC,CAAC,CACH;IACkB,WAAA,IAAA,qBAAY,GAAE,CAAA;;;;kDAEhC;AAGK;IADL,IAAA,aAAI,EAAC,QAAQ,CAAC;IACI,WAAA,IAAA,aAAI,GAAE,CAAA;IAAwB,WAAA,IAAA,YAAG,GAAE,CAAA;;;;kDAYrD;0BAhCU,eAAe;IAD3B,IAAA,mBAAU,EAAC,OAAO,CAAC;qCAEyB,4BAAY;GAD5C,eAAe,CAiC3B"}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
export type { ExcelImportResult, ExcelSheetImage, ICellData, IRange, IWorkbookData, IWorksheetData, } from '@ims-view/utils';
|
|
2
|
-
export { CellValueType, ensureXlsxBytes, excelBufferToImportResult, excelBufferToWorkbookData, workbookDataToExcelBuffer, workbookDataToExcelBytes, } from '@ims-view/utils';
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.workbookDataToExcelBytes = exports.workbookDataToExcelBuffer = exports.excelBufferToWorkbookData = exports.excelBufferToImportResult = exports.ensureXlsxBytes = exports.CellValueType = void 0;
|
|
4
|
-
var utils_1 = require("@ims-view/utils");
|
|
5
|
-
Object.defineProperty(exports, "CellValueType", { enumerable: true, get: function () { return utils_1.CellValueType; } });
|
|
6
|
-
Object.defineProperty(exports, "ensureXlsxBytes", { enumerable: true, get: function () { return utils_1.ensureXlsxBytes; } });
|
|
7
|
-
Object.defineProperty(exports, "excelBufferToImportResult", { enumerable: true, get: function () { return utils_1.excelBufferToImportResult; } });
|
|
8
|
-
Object.defineProperty(exports, "excelBufferToWorkbookData", { enumerable: true, get: function () { return utils_1.excelBufferToWorkbookData; } });
|
|
9
|
-
Object.defineProperty(exports, "workbookDataToExcelBuffer", { enumerable: true, get: function () { return utils_1.workbookDataToExcelBuffer; } });
|
|
10
|
-
Object.defineProperty(exports, "workbookDataToExcelBytes", { enumerable: true, get: function () { return utils_1.workbookDataToExcelBytes; } });
|
|
11
|
-
//# sourceMappingURL=excel.converter.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"excel.converter.js","sourceRoot":"","sources":["../../src/excel/excel.converter.ts"],"names":[],"mappings":";;;AAWA,yCAOyB;AANvB,sGAAA,aAAa,OAAA;AACb,wGAAA,eAAe,OAAA;AACf,kHAAA,yBAAyB,OAAA;AACzB,kHAAA,yBAAyB,OAAA;AACzB,kHAAA,yBAAyB,OAAA;AACzB,iHAAA,wBAAwB,OAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"excel.module.js","sourceRoot":"","sources":["../../src/excel/excel.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAwC;AACxC,yDAAqD;AACrD,mDAA+C;AAOxC,IAAM,WAAW,GAAjB,MAAM,WAAW;CAAG,CAAA;AAAd,kCAAW;sBAAX,WAAW;IALvB,IAAA,eAAM,EAAC;QACN,WAAW,EAAE,CAAC,kCAAe,CAAC;QAC9B,SAAS,EAAE,CAAC,4BAAY,CAAC;QACzB,OAAO,EAAE,CAAC,4BAAY,CAAC;KACxB,CAAC;GACW,WAAW,CAAG"}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import type { ExcelImportResult } from './excel.converter';
|
|
2
|
-
import type { ExportExcelDto } from './types';
|
|
3
|
-
export declare class ExcelService {
|
|
4
|
-
importFile(file?: Express.Multer.File): Promise<ExcelImportResult>;
|
|
5
|
-
exportFile(body: ExportExcelDto): Promise<{
|
|
6
|
-
buffer: Buffer;
|
|
7
|
-
fileName: string;
|
|
8
|
-
}>;
|
|
9
|
-
}
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
-
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
-
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
-
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
-
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
-
};
|
|
8
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
-
exports.ExcelService = void 0;
|
|
10
|
-
const common_1 = require("@nestjs/common");
|
|
11
|
-
const excel_converter_1 = require("./excel.converter");
|
|
12
|
-
let ExcelService = class ExcelService {
|
|
13
|
-
async importFile(file) {
|
|
14
|
-
if (!file?.buffer?.length) {
|
|
15
|
-
throw new common_1.BadRequestException('请上传 Excel 文件(.xlsx / .xls)');
|
|
16
|
-
}
|
|
17
|
-
return (0, excel_converter_1.excelBufferToImportResult)(file.buffer, file.originalname);
|
|
18
|
-
}
|
|
19
|
-
async exportFile(body) {
|
|
20
|
-
if (!body?.data) {
|
|
21
|
-
throw new common_1.BadRequestException('缺少工作簿数据 data');
|
|
22
|
-
}
|
|
23
|
-
const buffer = await (0, excel_converter_1.workbookDataToExcelBuffer)(body.data);
|
|
24
|
-
const rawName = body.fileName?.trim() || body.data.name || 'workbook';
|
|
25
|
-
const fileName = rawName.endsWith('.xlsx') ? rawName : `${rawName}.xlsx`;
|
|
26
|
-
return { buffer, fileName };
|
|
27
|
-
}
|
|
28
|
-
};
|
|
29
|
-
exports.ExcelService = ExcelService;
|
|
30
|
-
exports.ExcelService = ExcelService = __decorate([
|
|
31
|
-
(0, common_1.Injectable)()
|
|
32
|
-
], ExcelService);
|
|
33
|
-
//# sourceMappingURL=excel.service.js.map
|