From 86ce38d8165f752f95ae99b873e97ccec29c928a Mon Sep 17 00:00:00 2001 From: Cody Zhang Date: Thu, 8 Oct 2020 17:38:22 +0800 Subject: [PATCH] update --- scripts/excelJS_helper.js | 47 ++++++++++++++++++++++++++++++++++++--- 1 file changed, 44 insertions(+), 3 deletions(-) diff --git a/scripts/excelJS_helper.js b/scripts/excelJS_helper.js index 892da1c..c02ad55 100644 --- a/scripts/excelJS_helper.js +++ b/scripts/excelJS_helper.js @@ -136,7 +136,7 @@ */ _self.parseCelltoCoordinate = function (tag) { - let re = /(\w+)(\d+)/; + let re = /([A-Za-z])(\d+)/; let match = tag.match(re); return new _self.CellCoordinate(_self.getIdxByAlphbet(match[1]), parseInt(match[2]) - 1); @@ -320,7 +320,6 @@ // 建立要合併的欄位 var merged = []; - // 每個合併的欄位向下一行 for(let cell in sheet._merges){ let model = sheet._merges[cell].model; @@ -343,6 +342,7 @@ }); }); + // 清空所有資料 sheet._rows = []; sheet._columns = []; @@ -356,7 +356,6 @@ let newCol = cellCoordinate.col + 1; let newRow = cellCoordinate.row + 1; - console.log(cell.value, newRow, pos); // row 依插入幾行而變 if(newRow >= pos){ newRow = newRow + cnt; @@ -403,6 +402,48 @@ titleCell.font = { bold: true }; } + /** + * 合併兩個 sheet + * @param {object} fromSheet + * @param {object} toSheet + * @param {Number} rowSeperate + */ + _self.mergeSheets = function(fromSheet, toSheet, rowSeperate){ + + // 兩個 table 之間的空行數 + let seperate = rowSeperate + 1; + + // fromSheet 新的開始行 + let startRow = toSheet.rowCount + 1 + rowSeperate; + + for (let r = 1; r <= fromSheet.rowCount; r++) { + for (let c = 1; c <= fromSheet.columnCount; c++) { + + let newRow = r + startRow; + + toSheet.getRow(newRow).getCell(c).value = fromSheet.getRow(r).getCell(c).value; + + } + } + + // 建立要合併的欄位 + var merged = []; + + for (let cell in fromSheet._merges) { + let model = fromSheet._merges[cell].model; + + let range = new _self.MergedRange(model.top, model.left, model.bottom, model.right); + + merged.push(range); + } + + for (let i = 0; i < merged.length; i++) { + let range = merged[i]; + toSheet.mergeCells(range.top + startRow, range.left, range.bottom + startRow, range.right); + } + + } + // reasign everything just incase _self = ns;