カスタマイズメニュー

このデモでは、自分のニーズに合わせて不要なタブを非表示に設定し、必要な項目をピックアップしてカスタマイズリボンコンテナを作成する方法を示しています。

このサンプルでは、次の処理を実装しています。 コンテキストメニューにある項目を一部非表示にして、必要な項目だけを表示させます。 ホームタブの挿入と削除ボタン、書式設定ダイアログの確定とキャンセルボタンのテキストを変更しています。 インデントと方向ドロップダウンリストを無効に設定しています。
var designer, spread; window.onload = function () { // リボンコンテナ初期化 initRibbon(); }; function initRibbon() { // 初期化 var config = GC.Spread.Sheets.Designer.DefaultConfig; // タブ「挿入」、「ページレイアウト」、「数式」、「設定」を非表示 config.ribbon = config.ribbon.filter( (rb) => rb.id !== 'insert' && rb.id !== 'pageLayout' && rb.id !== 'formulas' && rb.id !== 'settings' ); // ホームタブのボタングループ「数値」、「スタイル」、「編集」を非表示 let homeTab = config.ribbon.find((r) => r.id === 'home'); homeTab.buttonGroups = homeTab.buttonGroups.filter( (bg) => bg.label !== '数値' && bg.label !== 'スタイル' && bg.label !== '編集' ); // データタブのボタングループ「データバインディング」、「クエリと接続」、「アウトライン」を非表示 let dataTab = config.ribbon.find((r) => r.id === 'data'); dataTab.buttonGroups = dataTab.buttonGroups.filter( (bg) => bg.label !== 'データバインディング' && bg.label !== 'クエリと接続' && bg.label !== 'アウトライン' ); // 表示タブのボタングループ「ズーム」、「ウィンドウ」、「ペイン」を非表示 let viewTab = config.ribbon.find((r) => r.id === 'view'); viewTab.buttonGroups = viewTab.buttonGroups.filter( (bg) => bg.label !== 'ズーム' && bg.label !== 'ウィンドウ' && bg.label !== 'ペイン' ); // セルボタングループの「書式」ボタンを非表示 let cellButtonGroup = homeTab.buttonGroups.find((bg) => bg.label === 'セル'); if (cellButtonGroup) { cellButtonGroup.commandGroup.children = cellButtonGroup.commandGroup.children.filter( (cg) => cg.command !== 'cellsFormat' ); } // 一部ボタンを無効にする config.commandMap = { // インデント解除を無効 decreaseIndent: { enableContext: 'false', }, // インデントを無効 increaseIndent: { enableContext: 'false', }, // 方向ドロップダウンリストを無効 orientationList: { enableContext: 'false', }, }; // リボンコンテナのローカライズのカスタマイズ var resources = GC.Spread.Sheets.Designer.getResources(); resources.ribbon.home.home = 'HOME'; resources.ribbon.data.data = 'DATA'; resources.ribbon.view.view = 'VIEW'; resources.ok = '確定!'; resources.cancel = 'キャンセル!'; resources.formatDialog.title = '書式設定ダイアログ!'; resources.ribbon.home.wrapText = 'おりかえし'; resources.ribbon.home.insert = 'INSERT'; resources.ribbon.home.Delete = 'DELETE'; GC.Spread.Sheets.Designer.setResources(resources); // 不要なコンテキストメニューを削除 if (config.contextMenu) { var commandNames = GC.Spread.Sheets.Designer.CommandNames; const deleteMenu = [ commandNames.RichText, //リッチテキスト commandNames.InsertComment, // コメントの挿入 commandNames.DefineName, // 名前の定義 commandNames.CellTag, // タグ commandNames.RowTag, // 行コンテキストメニューのタグ commandNames.ContextMenuOutlineColumn, // 列コンテキストメニューのアウトライン commandNames.DesignerPasteFormulaFormatting, // 貼り付けのオプション:数式と書式 ]; for (let i = 0; i < config.contextMenu.length; i++) { var item = config.contextMenu[i]; if (deleteMenu.includes(item)) { config.contextMenu.splice(i, 1); } } } // リボン表示 designer = new GC.Spread.Sheets.Designer.Designer('ribbonHost', config); }
<!doctype html> <html style="height:100%;font-size:14px;"> <head> <meta name="spreadjs culture" content="ja-jp" /> <meta charset="utf-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <link rel="stylesheet" type="text/css" href="$DEMOROOT$/ja/purejs/node_modules/@mescius/spread-sheets/styles/gc.spread.sheets.excel2013white.css"> <link rel="stylesheet" type="text/css" href="$DEMOROOT$/ja/purejs/node_modules/@mescius/spread-sheets-designer/styles/gc.spread.sheets.designer.min.css"> <script src="$DEMOROOT$/ja/purejs/node_modules/@mescius/spread-sheets/dist/gc.spread.sheets.all.min.js" type="text/javascript"></script> <script src="$DEMOROOT$/ja/purejs/node_modules/@mescius/spread-sheets-shapes/dist/gc.spread.sheets.shapes.min.js" type="text/javascript"></script> <script src="$DEMOROOT$/ja/purejs/node_modules/@mescius/spread-sheets-charts/dist/gc.spread.sheets.charts.min.js" type="text/javascript"></script> <script src="$DEMOROOT$/ja/purejs/node_modules/@mescius/spread-sheets-print/dist/gc.spread.sheets.print.min.js" type="text/javascript"></script> <script src="$DEMOROOT$/ja/purejs/node_modules/@mescius/spread-sheets-barcode/dist/gc.spread.sheets.barcode.min.js" type="text/javascript"></script> <script src="$DEMOROOT$/ja/purejs/node_modules/@mescius/spread-sheets-pdf/dist/gc.spread.sheets.pdf.min.js" type="text/javascript"></script> <script src="$DEMOROOT$/ja/purejs/node_modules/@mescius/spread-sheets-languagepackages/dist/gc.spread.calcengine.languagepackages.min.js" type="text/javascript"></script> <script src="$DEMOROOT$/ja/purejs/node_modules/@mescius/spread-sheets-pivot-addon/dist/gc.spread.pivot.pivottables.min.js" type="text/javascript"></script> <script src="$DEMOROOT$/ja/purejs/node_modules/@mescius/spread-sheets-tablesheet/dist/gc.spread.sheets.tablesheet.min.js" type="text/javascript"></script> <script src="$DEMOROOT$/ja/purejs/node_modules/@mescius/spread-sheets-io/dist/gc.spread.sheets.io.min.js" type="text/javascript"></script> <script src="$DEMOROOT$/ja/purejs/node_modules/@mescius/spread-excelio/dist/gc.spread.excelio.min.js" type="text/javascript"></script> <script src="$DEMOROOT$/ja/purejs/node_modules/@mescius/spread-sheets-pivot-addon/dist/gc.spread.pivot.pivottables.min.js" type="text/javascript"></script> <script src="$DEMOROOT$/ja/purejs/node_modules/@mescius/spread-sheets-io/dist/gc.spread.sheets.io.min.js" type="text/javascript"></script> <script src="$DEMOROOT$/ja/purejs/node_modules/@mescius/spread-sheets-resources-ja/dist/gc.spread.sheets.resources.ja.min.js" type="text/javascript"></script> <script src="$DEMOROOT$/ja/purejs/node_modules/@mescius/spread-sheets-designer-resources-ja/dist/gc.spread.sheets.designer.resource.ja.min.js" type="text/javascript"></script> <script src="$DEMOROOT$/ja/purejs/node_modules/@mescius/spread-sheets-designer/dist/gc.spread.sheets.designer.all.min.js" type="text/javascript"></script> <script src="$DEMOROOT$/spread/source/js/license.js" type="text/javascript"></script> <script src="$DEMOROOT$/spread/source/js/designer/license.js" type="text/javascript"></script> <script src="app.js" type="text/javascript"></script> <link rel="stylesheet" type="text/css" href="styles.css"> </head> <body> <div class="sample-tutorial"> <div id="ribbonHost"></div> <div id="ss"></div> </div> </body> </html>
.sample-tutorial { position: relative; height: 97vh; overflow: hidden; } body { position: absolute; top: 0; bottom: 0; left: 0; right: 0; } #ribbonHost { height: 100%; } .description { margin: 10px; width: 40%; } table { font-family: arial, sans-serif; border-collapse: collapse; width: 100%; } td, th { border: 1px solid #dddddd; text-align: left; padding: 8px; } th { background-color: #dcdcdc; } tr:nth-child(even) { background-color: #f5f5f5; }