Spreadsheet Grid
The Spreadsheet Grid is a virtualized, Excel-like calculation environment with formula evaluation, cell references, and LaTeX-rendered results.
Cell types
Each cell can contain:
| Content | Example | Result |
|---|---|---|
| Number with unit | 10 ft | Displays 10 ft |
| Variable assignment | L = 20 ft | Defines L, displays L = 20 ft |
| Formula | w * L^2 / 8 | Evaluates and displays result with units |
| Function call | SUM($A1:$A10) | Evaluates aggregate |
| Plain text | Beam Design | Displays as text |
Cell states
| State | Appearance | Trigger |
|---|---|---|
| Viewing | Shows result (LaTeX-rendered) | Default state |
| Selected | Blue border highlight | Click the cell |
| Editing | Shows raw formula input | Press F2 or start typing |
| Referenced | Colored background | Cell appears in active formula |
Entering data
- Click a cell to select it
- Type to start editing (or press F2)
- Press Enter to commit and move down
- Press Tab to commit and move right
- Press Escape to cancel editing
When editing a formula, cells referenced by the formula are highlighted with colored backgrounds, making it easy to see which cells contribute to the result.
Cell references
Use $ markers to reference cells:
$A1 // cell A1 (absolute column)
$A$1 // cell A1 (fully absolute)
A$1 // cell A1 (absolute row)
$A1:$B10 // range from A1 to B10
See Cell References for the complete guide on absolute vs. relative behavior.
Cross-sheet references
Pull values from other sheets using the ! operator:
'Sheet 2'!$A1 // cell A1 on "Sheet 2"
'Material Data'!$B5 // cell B5 on "Material Data"
Sheet names with spaces must be quoted with single quotes.
Variables vs. cell references
EngCanvas prioritizes variables over relative cell references:
L = 20 ft // defines variable L
M = L * 5 kip // uses variable L, NOT cell L (column 12)
$L1 // explicitly references cell in column L, row 1
Any bare identifier (letters/digits without $) is treated as a variable name first. Use $ to force a cell reference.
Formulas
Formulas evaluate automatically when you press Enter:
A = b * h // area from variables
sigma = P / A // stress
Mu = 1.2 * Md + 1.6 * Ml // load combination
Results display with:
- The evaluated numerical value
- The computed unit
- LaTeX-formatted mathematical notation
Ranges and aggregates
Use ranges with aggregate functions:
SUM($A1:$A20) // sum of cells A1 through A20
AVERAGE($B1:$B10) // mean of range
MAX($C1:$C5, $D1:$D5) // maximum across two ranges
COUNTIF($A1:$A10, ">5") // conditional count
Named ranges
Give meaningful names to cell ranges for clearer formulas:
// Instead of
SUM($A1:$A20)
// Use a named range
SUM(loads)
Dependency-ordered evaluation
The grid resolves dependencies with a graph rather than by repeatedly re-scanning the sheet:
- Build a dependency graph from the cell references in each formula
- Topologically sort the cells so every dependency evaluates before its dependents
- Evaluate each cell exactly once, in that order
This means cells can reference values defined in any order — a cell near the top can use a variable assigned further down.
A reference cycle ($A1 depends on $B1, which depends back on $A1) has no valid
evaluation order. The graph detects the cycle and reports an error on the cells involved
rather than looping.
Keyboard navigation
| Key | Action |
|---|---|
| Arrow keys | Navigate between cells |
| Shift+Arrow | Extend the selection |
| Enter / Shift+Enter | Commit edit, move down / up |
| Tab / Shift+Tab | Commit edit, move right / left |
| F2 | Enter edit mode |
| Escape | Cancel edit, revert |
| Delete / Backspace | Clear selected cells |
| Shift+Click | Extend selection range |
| Ctrl+Click | Add a cell to a non-contiguous selection |
| Home / Ctrl+Home | Start of row / cell A1 |
| End / Ctrl+End | End of row / last cell |
| Page Up / Page Down | Jump one screen of rows |
| Ctrl+A | Select the whole grid |
| Ctrl+C / Ctrl+X / Ctrl+V | Copy / Cut / Paste |
| Ctrl+Z | Undo |
| Ctrl+Shift+Z | Redo |
Typing any printable character on a selected cell replaces its contents and enters edit mode.
Frozen panes
Freeze rows and columns so headers stay visible while you scroll: Sheets → Freeze Panes (and Unfreeze Panes to release). Inserting a data table freezes its top row and left column automatically.
Next steps
- Formula Syntax — complete formula reference
- Cell References — absolute and relative references
- Migrating from Excel — what's different from Excel