如何使用Office JS API在Excel中分组行或列

eimct9ow  于 2023-04-13  发布在  其他
关注(0)|答案(3)|浏览(134)

我正在将VSTO Excel加载项转换为Web Excel加载项(使用JavaScript API for Office)。在我的VSTO C#代码中,我有以下行:

worksheet.Rows[rowStart + ":" + rowEnd].Group()

列也有类似的行:

worksheet.Columns[colStart + ":" + colEnd].Group();

Office-JS的等效API调用是什么?在API文档中找不到相关条目

gwbalxhn

gwbalxhn1#

恐怕office.js中还不支持这种分组。请在Office Developer建议框中投票支持建议:Grouping and ungrouping rows and columns

gpfsuwkq

gpfsuwkq2#

参见--〉https://learn.microsoft.com/en-us/office/dev/add-ins/excel/excel-add-ins-ranges-group
https://learn.microsoft.com/en-us/javascript/API/excel/excel.range?view=excel-js-preview#excel-excel-range-group-member(1)
我是这样做的。我注意到的第一件事是,我希望某些组在默认情况下被折叠。我完成了这个w/hidden = true,它结合了w/ grouping,它更像是一个hide by default

const Rng_Group_Obj = {
    "group": {
        "groupOptionString": {
            "ByRows": "ByRows",
            "ByColumns": "ByColumns",
        },
    },
    "columnHidden": true,
    "rowHidden": true,
}
function Do_Group_Rng(rng, ByColumns, ByRows, Opt_Hidden_By_Default) {
    if (ByColumns == true) {
        rng.group(Rng_Group_Obj.group.groupOptionString.ByColumns)
        if (Opt_Hidden_By_Default == true) { rng.columnHidden = Rng_Group_Obj.columnHidden }
    }
    if (ByRows == true) {
        rng.group(Rng_Group_Obj.group.groupOptionString.ByRows)
        if (Opt_Hidden_By_Default == true) { rng.rowHidden = Rng_Group_Obj.rowHidden }
    }
    return true;
}
var ws = context.workbook.worksheets.getActiveWorksheet()

var rng = ws.getRange("G:K")
Do_Group_Rng(rng,true,false,true)

var rng = ws.getRange("4:7")
Do_Group_Rng(rng, false, true, true)
kupeojn6

kupeojn63#

Excel的JavaScript API现在支持对行和列进行分组和取消分组,折叠它们(隐藏它们的详细信息)和展开它们(显示它们的详细信息)。
您可以通过group方法分组行(或列),通过ungroup取消分组,通过hideGroupDetails隐藏组的详细信息(如使用分组行左侧的[-]按钮),并通过showGroupDetails显示组的详细信息(如单击分组行左侧的[+]按钮)。
假设rowStartrowEnd是单元格/范围引用字符串,则:

worksheet.getRange(`${rowStart}:${rowEnd}`).group(Excel.GroupOption.byRows);

相关问题