Lynn.Dou 发表于 2022-2-28 11:25:24

右键获取列头单元格的值

需求:在存在多行列头的前提下,通过右键操作,获取所选中的某列头单元格的值。

思路:
监听onOpenMenu获取打开右键菜单的单元格行列信息。
由于是多行列头,可能存在合并单元格的情况,所以要对合并单元格做出判断。

主要代码如下:
function MyContextMenu() {}
            MyContextMenu.prototype = new GC.Spread.Sheets.ContextMenu.ContextMenu(spread);
            MyContextMenu.prototype.onOpenMenu = function (menuData, itemsDataForShown, hitInfo, spread) {
                // 获取行列信息
                console.log(hitInfo);
                var worksheetHitInfo = hitInfo.worksheetHitInfo;
                // 表示选择的是列头右键菜单
                if(worksheetHitInfo.rowViewportIndex == -1) {
                  // 获取行列索引
                  var row = worksheetHitInfo.row;
                  var col = worksheetHitInfo.col;
                  // 判断是否为合并单元格,如果是则获取合并单元格左上角单元格的row、col,进一步获取合并单元格的实际value
                  var range = new GC.Spread.Sheets.Range(row,col,1,1);
                  var spanArr = sheet.getSpans(range, GC.Spread.Sheets.SheetArea.colHeader);
                  if(spanArr.length > 0) {
                        console.log(spanArr);
                        var relRow = spanArr.row;
                        var relCol = spanArr.col;
                        var relValue = sheet.getValue(relRow, relCol, GC.Spread.Sheets.SheetArea.colHeader);
                        alert("选择列头单元格的值为" + relValue);
                  } else {
                        var value = sheet.getValue(row, col, GC.Spread.Sheets.SheetArea.colHeader);
                        alert("选择列头单元格的值为" + value);
                  }

                }

            };
            var contextMenu = new MyContextMenu();
            spread.contextMenu = contextMenu;最终效果如下图:

完整代码请参考附件demo
页: [1]
查看完整版本: 右键获取列头单元格的值