@cj-tech-master/excelts 5.1.0 → 5.1.1
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/browser/modules/excel/worksheet.d.ts +4 -0
- package/dist/browser/modules/excel/worksheet.js +155 -7
- package/dist/cjs/modules/excel/worksheet.js +155 -7
- package/dist/esm/modules/excel/worksheet.js +155 -7
- package/dist/iife/excelts.iife.js +72 -7
- package/dist/iife/excelts.iife.js.map +1 -1
- package/dist/iife/excelts.iife.min.js +2 -2
- package/dist/types/modules/excel/worksheet.d.ts +4 -0
- package/package.json +1 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* @cj-tech-master/excelts v5.1.
|
|
2
|
+
* @cj-tech-master/excelts v5.1.1
|
|
3
3
|
* TypeScript Excel Workbook Manager - Read and Write xlsx and csv Files.
|
|
4
4
|
* (c) 2026 cjnoname
|
|
5
5
|
* Released under the MIT License
|
|
@@ -5918,6 +5918,10 @@ var ExcelTS = (function(exports) {
|
|
|
5918
5918
|
* the rows will still be shifted as if the values existed
|
|
5919
5919
|
*/
|
|
5920
5920
|
spliceColumns(start, count, ...inserts) {
|
|
5921
|
+
for (const merge of Object.values(this._merges)) for (let r = merge.top; r <= merge.bottom; r++) for (let c = merge.left; c <= merge.right; c++) {
|
|
5922
|
+
const cell = this.findCell(r, c);
|
|
5923
|
+
if (cell && cell.type === Enums.ValueType.Merge) cell.unmerge();
|
|
5924
|
+
}
|
|
5921
5925
|
const nRows = this._rows.length;
|
|
5922
5926
|
if (inserts.length > 0) for (let i = 0; i < nRows; i++) {
|
|
5923
5927
|
const insertValues = inserts.map((insert) => insert[i] ?? null);
|
|
@@ -5940,6 +5944,7 @@ var ExcelTS = (function(exports) {
|
|
|
5940
5944
|
if (br && br.nativeCol >= start - 1) br.nativeCol = Math.max(0, br.nativeCol + nExpand);
|
|
5941
5945
|
}
|
|
5942
5946
|
}
|
|
5947
|
+
this._spliceMerges("col", start, count, inserts.length);
|
|
5943
5948
|
}
|
|
5944
5949
|
/**
|
|
5945
5950
|
* Get the last column in a worksheet
|
|
@@ -6079,6 +6084,8 @@ var ExcelTS = (function(exports) {
|
|
|
6079
6084
|
duplicateRow(rowNum, count, insert = false) {
|
|
6080
6085
|
const rSrc = this._rows[rowNum - 1];
|
|
6081
6086
|
const inserts = Array.from({ length: count }).fill(rSrc.values);
|
|
6087
|
+
const srcMerges = [];
|
|
6088
|
+
for (const merge of Object.values(this._merges)) if (merge.top === rowNum && merge.bottom === rowNum) srcMerges.push(merge);
|
|
6082
6089
|
this.spliceRows(rowNum + 1, insert ? 0 : count, ...inserts);
|
|
6083
6090
|
for (let i = 0; i < count; i++) {
|
|
6084
6091
|
const rDst = this._rows[rowNum + i];
|
|
@@ -6088,6 +6095,15 @@ var ExcelTS = (function(exports) {
|
|
|
6088
6095
|
rDst.getCell(colNumber).style = cell.style;
|
|
6089
6096
|
});
|
|
6090
6097
|
}
|
|
6098
|
+
if (srcMerges.length > 0) for (let i = 0; i < count; i++) {
|
|
6099
|
+
const dstRow = rowNum + 1 + i;
|
|
6100
|
+
if (!insert) {
|
|
6101
|
+
const toRemove = [];
|
|
6102
|
+
for (const [key, merge] of Object.entries(this._merges)) if (merge.top <= dstRow && merge.bottom >= dstRow) toRemove.push(key);
|
|
6103
|
+
for (const key of toRemove) this._unMergeMaster(this.getCell(key));
|
|
6104
|
+
}
|
|
6105
|
+
for (const srcMerge of srcMerges) this.mergeCellsWithoutStyle(dstRow, srcMerge.left, dstRow, srcMerge.right);
|
|
6106
|
+
}
|
|
6091
6107
|
}
|
|
6092
6108
|
/**
|
|
6093
6109
|
* Cut one or more rows (rows below are shifted up)
|
|
@@ -6096,6 +6112,10 @@ var ExcelTS = (function(exports) {
|
|
|
6096
6112
|
* Known limitation: If a splice causes any merged cells to move, the results may be unpredictable
|
|
6097
6113
|
*/
|
|
6098
6114
|
spliceRows(start, count, ...inserts) {
|
|
6115
|
+
for (const merge of Object.values(this._merges)) for (let r = merge.top; r <= merge.bottom; r++) for (let c = merge.left; c <= merge.right; c++) {
|
|
6116
|
+
const cell = this.findCell(r, c);
|
|
6117
|
+
if (cell && cell.type === Enums.ValueType.Merge) cell.unmerge();
|
|
6118
|
+
}
|
|
6099
6119
|
const nKeep = start + count;
|
|
6100
6120
|
const nInserts = inserts.length;
|
|
6101
6121
|
const nExpand = nInserts - count;
|
|
@@ -6126,12 +6146,6 @@ var ExcelTS = (function(exports) {
|
|
|
6126
6146
|
rDst.height = rSrc.height;
|
|
6127
6147
|
rSrc.eachCell({ includeEmpty: true }, (cell, colNumber) => {
|
|
6128
6148
|
rDst.getCell(colNumber).style = cell.style;
|
|
6129
|
-
if (cell.type === Enums.ValueType.Merge) {
|
|
6130
|
-
const cellToBeMerged = this.getRow(cell.row + nInserts).getCell(colNumber);
|
|
6131
|
-
const prevMaster = cell.master;
|
|
6132
|
-
const newMaster = this.getRow(prevMaster.row + nInserts).getCell(prevMaster.col);
|
|
6133
|
-
cellToBeMerged.merge(newMaster);
|
|
6134
|
-
}
|
|
6135
6149
|
});
|
|
6136
6150
|
} else this._rows[i + nExpand - 1] = void 0;
|
|
6137
6151
|
}
|
|
@@ -6148,6 +6162,7 @@ var ExcelTS = (function(exports) {
|
|
|
6148
6162
|
if (br && br.nativeRow >= start - 1) br.nativeRow = Math.max(0, br.nativeRow + nExpand);
|
|
6149
6163
|
}
|
|
6150
6164
|
}
|
|
6165
|
+
this._spliceMerges("row", start, count, nInserts);
|
|
6151
6166
|
}
|
|
6152
6167
|
eachRow(optOrCallback, maybeCallback) {
|
|
6153
6168
|
let options;
|
|
@@ -6221,6 +6236,56 @@ var ExcelTS = (function(exports) {
|
|
|
6221
6236
|
delete this._merges[master.address];
|
|
6222
6237
|
}
|
|
6223
6238
|
}
|
|
6239
|
+
/**
|
|
6240
|
+
* Update _merges dictionary and cell-level merge references after a row or column splice.
|
|
6241
|
+
*/
|
|
6242
|
+
_spliceMerges(axis, start, count, nInserts) {
|
|
6243
|
+
const nExpand = nInserts - count;
|
|
6244
|
+
if (nExpand === 0 && count === 0) return;
|
|
6245
|
+
const nKeep = start + count;
|
|
6246
|
+
const isRow = axis === "row";
|
|
6247
|
+
const newMerges = {};
|
|
6248
|
+
for (const merge of Object.values(this._merges)) {
|
|
6249
|
+
const { top, left, bottom, right } = merge.model;
|
|
6250
|
+
const lo = isRow ? top : left;
|
|
6251
|
+
const hi = isRow ? bottom : right;
|
|
6252
|
+
if (nExpand <= 0 && count > 0) {
|
|
6253
|
+
const deleteEnd = nKeep - 1;
|
|
6254
|
+
if (lo > deleteEnd) {
|
|
6255
|
+
const newRange = isRow ? new Range(top + nExpand, left, bottom + nExpand, right) : new Range(top, left + nExpand, bottom, right + nExpand);
|
|
6256
|
+
newMerges[colCache.encodeAddress(newRange.top, newRange.left)] = newRange;
|
|
6257
|
+
} else if (hi < start) newMerges[colCache.encodeAddress(top, left)] = merge;
|
|
6258
|
+
else if (lo >= start && hi <= deleteEnd) {} else {
|
|
6259
|
+
let newTop = top;
|
|
6260
|
+
let newLeft = left;
|
|
6261
|
+
let newBottom = bottom;
|
|
6262
|
+
let newRight = right;
|
|
6263
|
+
if (isRow) {
|
|
6264
|
+
newTop = top < start ? top : start;
|
|
6265
|
+
newBottom = Math.max(newTop, bottom + nExpand);
|
|
6266
|
+
} else {
|
|
6267
|
+
newLeft = left < start ? left : start;
|
|
6268
|
+
newRight = Math.max(newLeft, right + nExpand);
|
|
6269
|
+
}
|
|
6270
|
+
const newRange = new Range(newTop, newLeft, newBottom, newRight);
|
|
6271
|
+
if (newTop === newBottom && newLeft === newRight) {} else newMerges[colCache.encodeAddress(newRange.top, newRange.left)] = newRange;
|
|
6272
|
+
}
|
|
6273
|
+
} else if (lo >= nKeep) {
|
|
6274
|
+
const newRange = isRow ? new Range(top + nExpand, left, bottom + nExpand, right) : new Range(top, left + nExpand, bottom, right + nExpand);
|
|
6275
|
+
newMerges[colCache.encodeAddress(newRange.top, newRange.left)] = newRange;
|
|
6276
|
+
} else if (hi < nKeep) newMerges[colCache.encodeAddress(top, left)] = merge;
|
|
6277
|
+
else {
|
|
6278
|
+
if (isRow) merge.model.bottom = bottom + nExpand;
|
|
6279
|
+
else merge.model.right = right + nExpand;
|
|
6280
|
+
newMerges[colCache.encodeAddress(top, left)] = merge;
|
|
6281
|
+
}
|
|
6282
|
+
}
|
|
6283
|
+
this._merges = newMerges;
|
|
6284
|
+
for (const m of Object.values(newMerges)) {
|
|
6285
|
+
const master = this.getCell(m.top, m.left);
|
|
6286
|
+
for (let r = m.top; r <= m.bottom; r++) for (let c = m.left; c <= m.right; c++) if (r > m.top || c > m.left) this.getCell(r, c).merge(master, true);
|
|
6287
|
+
}
|
|
6288
|
+
}
|
|
6224
6289
|
get hasMerges() {
|
|
6225
6290
|
return Object.values(this._merges).some(Boolean);
|
|
6226
6291
|
}
|