{
  "$schema": "https://ai.syncfusion.com/schema/registry-item.json",
  "name": "spreadsheet-editor-freeze-pane",
  "framework": "angular",
  "type": "registry:component",
  "component": "Spreadsheet",
  "variant": "freeze-pane",
  "dependencies": [
    "@syncfusion/ej2-angular-spreadsheet"
  ],
  "description": "Spreadsheet sample demonstrating frozen rows and columns while scrolling worksheet data.",
  "meta": {
    "essentialStudioRelease": "2026 Volume 2 (v34.1.29)",
    "license": "commercial-or-community",
    "licenseNote": "The Syncfusion package is licensed. The composition in this file is source you own and edit. See https://ai.syncfusion.com/licensing.md",
    "requiresLicenseKey": true,
    "requiresServerEndpoint": true,
    "platformIndex": "https://ai.syncfusion.com/angular/llms.txt",
    "skillPack": "syncfusion/angular-ui-components-skills",
    "docs": "https://ai.syncfusion.com/gallery/angular/spreadsheet-editor-freeze-pane.md"
  },
  "files": [
    {
      "target": "src/components/spreadsheet-editor-freeze-pane/freeze-pane.component.ts",
      "content": "import { Component, ViewEncapsulation, Inject, ViewChild } from '@angular/core';\nimport { freezePaneData } from '../data';\nimport { SpreadsheetComponent, SpreadsheetModule } from '@syncfusion/ej2-angular-spreadsheet';\n/**\n * Freeze pane Spreadsheet Controller\n */\n@Component({\n    selector: 'control-content',\n    templateUrl: 'freeze-pane.html',\n    encapsulation: ViewEncapsulation.None,\n    standalone: true,\n    imports: [ SpreadsheetModule]\n})\n\nexport class FreezePaneComponent {\n    @ViewChild('default')\n    public spreadsheetObj!: SpreadsheetComponent;\n    public data: Object[] = freezePaneData();\n    public styles = { fontSize: \"12pt\", fontWeight: \"bold\", textAlign: \"center\", verticalAlign: \"middle\" }\n    public openUrl = 'https://document.syncfusion.com/web-services/spreadsheet-editor/api/spreadsheet/open';\n    public saveUrl = 'https://document.syncfusion.com/web-services/spreadsheet-editor/api/spreadsheet/save';\n    public freezePane: number = 2;\n    created() {\n        this.spreadsheetObj.wrap(\"C2:P2\");\n        this.spreadsheetObj.merge('A1:B1');\n        this.spreadsheetObj.merge('C1:P1');\n        this.spreadsheetObj.cellFormat({ backgroundColor: '#4e4ee6', color: '#FFFFF4', fontSize: '12pt', fontWeight: 'bold', textAlign: 'center', verticalAlign: 'middle' }, 'A1:P2');\n        this.spreadsheetObj.cellFormat({ backgroundColor: '#4e4ee6', color: '#FFFFF4' }, 'A3:B26');\n        this.spreadsheetObj.numberFormat('$#,##0.00', 'C2:P26');\n        this.spreadsheetObj.numberFormat('$#,##0.00', 'O27:P27');\n    }\n}"
    },
    {
      "target": "src/components/spreadsheet-editor-freeze-pane/freeze-pane.html",
      "content": "<div class=\"control-section\">\n    <ejs-spreadsheet #default [openUrl]=\"openUrl\" [saveUrl]=\"saveUrl\" (created)=\"created()\">\n        <e-sheets>\n            <e-sheet name=\"Gross Salary\" [frozenRows]=\"freezePane\" [frozenColumns]=\"freezePane\" selectedRange=\"C1\">\n                <e-ranges>\n                    <e-range [dataSource]=\"data\" startCell=\"A2\"></e-range>\n                </e-ranges>\n                <e-rows>\n                    <e-row>\n                        <e-cells>\n                            <e-cell value=\"Period\" [style]=\"styles\"></e-cell>\n                            <e-cell [index]=2 value=\"Total Gross Salary\" [style]=\"styles\"></e-cell>\n                        </e-cells>\n                    </e-row>\n                    <e-row [index]=26>\n                        <e-cells>\n                            <e-cell [index]=13 value=\"Total Amount\" [style]=\"styles\"></e-cell>\n                            <e-cell formula=\"=SUM(O4:O26)\" [style]=\"styles\"></e-cell>\n                            <e-cell formula=\"=SUM(P4:P26)\" [style]=\"styles\"></e-cell>\n                        </e-cells>\n                    </e-row>\n                </e-rows>\n                <e-columns>\n                    <e-column [width]=80></e-column>\n                    <e-column [width]=100></e-column>\n                    <e-column [width]=100></e-column>\n                    <e-column [width]=100></e-column>\n                    <e-column [width]=100></e-column>\n                    <e-column [width]=100></e-column>\n                    <e-column [width]=100></e-column>\n                    <e-column [width]=100></e-column>\n                    <e-column [width]=100></e-column>\n                    <e-column [width]=100></e-column>\n                    <e-column [width]=100></e-column>\n                    <e-column [width]=100></e-column>\n                    <e-column [width]=100></e-column>\n                    <e-column [width]=80></e-column>\n                    <e-column [width]=100></e-column>\n                    <e-column [width]=100></e-column>\n                    <e-column [width]=100></e-column>\n                </e-columns>\n            </e-sheet>\n        </e-sheets>\n    </ejs-spreadsheet>\n</div>"
    }
  ]
}