基于Luckysheet表格开发的一些功能
1.针对当前sheet页面单元格一键N/A
setNA(type) { this.setTestIsNullCell() // 获取当前激活的工作表信息 const currentSheet = luckysheet.getSheet(); const currentOrder = Number(currentSheet.order); // 一键N/A for (let key in this.testIsNullCell) { for (let i = 0; i < this.testIsNullCell[key].length; i++) { let cellValue = '1' try { if( type === 'sheet' && currentOrder === this.testIsNullCell[key][i].order) { cellValue = luckysheet.getCellValue(this.testIsNullCell[key][i].r, this.testIsNullCell[key][i].c, { order: this.testIsNullCell[key][i].order }) } else if( type === 'allSheet' ) { cellValue = luckysheet.getCellValue(this.testIsNullCell[key][i].r, this.testIsNullCell[key][i].c, { order: this.testIsNullCell[key][i].order }) } } catch (error) { // console.log(error) } if (this.testIsNullCell[key][i].isNA && cellValue!==0 && !cellValue) { luckysheet.setCellValue(this.testIsNullCell[key][i].r, this.testIsNullCell[key][i].c, "N/A", { order: this.testIsNullCell[key][i].order }) } } } }
2、单元格必填校验
if (testIsNullCell[key][i].isRequired && !value && value !== 0 && this.cellIsExist(testIsNullCell[key][i].order,testIsNullCell[key][i].r,testIsNullCell[key] [i].c)) { luckysheet.setCellFormat(testIsNullCell[key][i].r, testIsNullCell[key][i].c, "bg", "#ff0000", { order: testIsNullCell[key][i].order }) existArray.push({ sheetName: excelData[Number(key.slice(5))].name, position: this.getCellAddress(testIsNullCell[key][i].r, testIsNullCell[key][i].c), }) existData = false } else { value && luckysheet.setCellFormat(testIsNullCell[key][i].r, testIsNullCell[key][i].c, "bg", "#ffffff", { order: testIsNullCell[key][i].order }) }
3、验证单元格是否存在
cellIsExist(order,row,col) { try { const sheet = luckysheet.getSheet({ order }); // 检查基础条件 if (!sheet || !sheet.data) { return false; } // 检查行列索引是否在有效范围内 if (row < 0 || row >= sheet.data.length || col < 0 || col >= sheet.data[0].length) { return false; } // 检查单元格是否存在 if (!sheet.data[row] || !sheet.data[row][col]) { return false; } // 如果是合并单元格,检查是否为合并区域的起始单元格 if (sheet.data[row][col].mc) { return sheet.data[row][col].mc.r === row && sheet.data[row][col].mc.c === col; } // 非合并单元格直接返回true return true; } catch (error) { console.error('检查单元格存在性时出错:', error); return false; } }
4、全屏模式(伪全屏)
requestFullScreen() { this.$modal .confirm('全屏模式会获取最新数据,请确认当前页面数据是否已保存?') .then(()=> { const tagsView = document.getElementById('tags-view-container') const wrap = document.getElementById('wrap') const fixedHeader = document.getElementsByClassName('fixed-header')[0] const appMain = document.getElementsByClassName('app-main ')[0] const sidebarContainer = document.getElementsByClassName('sidebar-container')[0] const mainContainer = document.getElementsByClassName('main-container')[0] this.sidebarContainerWidth = sidebarContainer.offsetWidth + 'px' tagsView.style.display = 'none' fixedHeader.style.display = 'none' sidebarContainer.style.display = 'none' appMain.style.paddingTop = '0' mainContainer.style.marginLeft = '0' wrap.style.height = 'calc(100vh - 10px)' if (document.documentElement.requestFullscreen) { document.documentElement.requestFullscreen(); } else if (document.documentElement.mozRequestFullScreen) { /* Firefox */ document.documentElement.mozRequestFullScreen(); } else if (document.documentElement.webkitRequestFullscreen) { /* Chrome, Safari & Opera */ document.documentElement.webkitRequestFullscreen(); } else if (document.documentElement.msRequestFullscreen) { /* IE/Edge */ document.documentElement.msRequestFullscreen(); } this.getData() document.addEventListener('fullscreenchange', this.handleFullScreenChange); document.addEventListener('mozfullscreenchange', this.handleFullScreenChange); // Firefox document.addEventListener('webkitfullscreenchange', this.handleFullScreenChange); // Chrome, Safari and Opera document.addEventListener('MSFullscreenChange', this.handleFullScreenChange); // IE/Edge }) .catch((error)=> { console.log(error) }); }
5、重新设置单元格数据验证
setTestIsNullCell() { let sheets = luckysheet.getAllSheets(); const currentOrder = sheets.map(s => s.index); if (JSON.stringify(this.previousSheetOrder) !== JSON.stringify(currentOrder)) { // console.log('Sheet顺序发生变化'); this.previousSheetOrder = currentOrder; this.testIsNullCell = {} for (let i = 0; i < sheets.length; i++) { if (sheets[i].config.extraCustomCellConfigs) { for(let l = 0; l < sheets[i].config.extraCustomCellConfigs.testIsNullCell.length; l++ ) { sheets[i].config.extraCustomCellConfigs.testIsNullCell[l].order = i } this.testIsNullCell['order' + i] = sheets[i].config.extraCustomCellConfigs.testIsNullCell } } } sheets = null }

浙公网安备 33010602011771号