Show navigation
Sheet Editor
The sheet editor is the grid editor of the Sheet resource — a spreadsheet-like editor for CSV, JSON, and XLSX files with inline editing, data cleaning, computed columns, statistics, and an Excel-style clipboard. It is surfaced as the Data blade of a Sheet resource in the Resource Explorer (/resource-explorer/[id]/[[blade]]).
Key concepts
- DataSource — the in-memory model of the open file: a list of
Columndefinitions plusRowobjects whosedatamaps column name → value, so a name is unique within a sheet: the column form refuses a repeat, and an import numbers a repeated header (a,a (2)) rather than filing two columns' cells under one key. Format-specific serializers (CSV, JSON, XLSX) convert between the file bytes and this one model, so every grid feature works identically for all three formats. - Columns are typed —
ColumnTypeisString,Number,Boolean,Date, orComputed. Types are inferred on import and drive cell coercion, per-column filters, statistics, and charts. Changing a column's type recasts its existing values. - Computed columns — read-only columns whose value is derived lazily from other columns through a transformation (math expressions, string operations, type conversion, date parts, regex extraction, dataset aggregations). See computed columns.
- Formatted cells — a boolean, date or number column renders through its
format, and global search matches that rendered text while sorting stays on the underlying value. See cell formatting. - Command history — every mutation is a command object (
ADataSourceCommand) pushed onto a history store, which is what powers unlimited undo/redo, including for multi-cell operations like range paste. - Cell selection — an Excel-style anchor/focus range selection (click, drag, Shift+click, Shift+Arrow) that keyboard copy/paste operates on. See clipboard.
- View state is the sheet's own — the page, search, sort, selected rows and columns, cell selection, find and replace, column filters and the outlier highlight are each keyed by the loaded resource's id, so the next sheet opened starts clean rather than inheriting them. How many rows a page holds and whether a copy carries headers are the reader's preferences and hold across sheets.
The editor is mature. Open work: roadmap. New ideas should be checked against deferred and rejected first.
Shipped log
- Editing — inline editing, bulk row and column operations, and Excel-style range copy/paste, every one of them a command on the single history stack (clipboard, copy computed values).
- Columns — one list of commands per column (chart, show or hide, edit, delete), opened from its row's overflow button, a right-click on its row or on its header in the grid; reordering by a row's handle or Alt+Up and Alt+Down, rows and columns alike, through the UI library's reorderable table, visibility, a width dragged on the header's edge and kept in the sheet's settings by the column's id, type recasting and per-type formatting (cell formatting), plus the computed and aggregation families, which a dispatch map extends one entry at a time (computed columns).
- Data quality — null/empty strategy, duplicate-row detection, trim/normalize strings, global find & replace.
- Import — CSV/TSV/JSON/XLSX, import preview, paste tabular data from Excel/Sheets.
- Export — filtered rows, column subset, JSON array, selected-rows, copy-to-clipboard (TSV).
- Filtering & sorting — column sort and multi-column sort on the underlying value, per-column filters, global search over the displayed text, frozen row-number column.
- Statistics & viz — per-column stats (including string/date: top value, null %), data summary footer row, outlier detection (>2σ), numeric/boolean charts, string top-10 and date monthly charts, computed-column stats.
Scroll to top