Skip to main content

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:

ContentExampleResult
Number with unit10 ftDisplays 10 ft
Variable assignmentL = 20 ftDefines L, displays L = 20 ft
Formulaw * L^2 / 8Evaluates and displays result with units
Function callSUM($A1:$A10)Evaluates aggregate
Plain textBeam DesignDisplays as text

Cell states

StateAppearanceTrigger
ViewingShows result (LaTeX-rendered)Default state
SelectedBlue border highlightClick the cell
EditingShows raw formula inputPress F2 or start typing
ReferencedColored backgroundCell appears in active formula

Entering data

  1. Click a cell to select it
  2. Type to start editing (or press F2)
  3. Press Enter to commit and move down
  4. Press Tab to commit and move right
  5. Press Escape to cancel editing
tip

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:

  1. Build a dependency graph from the cell references in each formula
  2. Topologically sort the cells so every dependency evaluates before its dependents
  3. 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.

Circular dependency protection

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

KeyAction
Arrow keysNavigate between cells
Shift+ArrowExtend the selection
Enter / Shift+EnterCommit edit, move down / up
Tab / Shift+TabCommit edit, move right / left
F2Enter edit mode
EscapeCancel edit, revert
Delete / BackspaceClear selected cells
Shift+ClickExtend selection range
Ctrl+ClickAdd a cell to a non-contiguous selection
Home / Ctrl+HomeStart of row / cell A1
End / Ctrl+EndEnd of row / last cell
Page Up / Page DownJump one screen of rows
Ctrl+ASelect the whole grid
Ctrl+C / Ctrl+X / Ctrl+VCopy / Cut / Paste
Ctrl+ZUndo
Ctrl+Shift+ZRedo

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