Print & page setup
File ▸ Print settings… opens a per-sheet page-setup form (orientation, scale, margins, print area, gridlines, header/footer text) that applies as one undoable command and survives a reload; File ▸ Print (Cmd+P) hands off to the browser's own native print dialog, styled from those settings.
What it does
File ▸ Print settings… opens a form for how the active sheet prints:
- Orientation — Portrait or Landscape.
- Scale — Normal (100%), Fit to width, or a Custom percentage.
- Margins — Normal, Narrow, or Custom (four independent side values).
- Print area — the whole sheet, or a specific range ("Use selection" adopts whatever's currently selected on the grid).
- Gridlines — on or off for the printed page.
- Header / Footer — three slots each (left/center/right), with
{page},{pages},{date}, and{sheet}placeholders that substitute at print time.
Save applies every field as one undoable command. Page setup is per sheet — switching tabs and reopening the dialog shows that sheet's own settings, and it survives a reload (it's part of the document, not session state).
File ▸ Print, or Cmd+P / Ctrl+P, hands off directly to the browser's own native print dialog — styled by the page-setup settings above (orientation and margins via the printed page's own layout, print area by restricting what renders, scale via the same percentage, gridlines by including/omitting cell borders). The keyboard shortcut is intercepted so the browser never falls back to printing the raw, unstyled application chrome.
Try it
Open File ▸ Print settings…, switch to Landscape, and Save. Then press Cmd+P (or File ▸ Print) to see the browser's own print preview pick it up.
Verified behavior
Matches Google Sheets: Google Sheets' File ▸ Print (Ctrl+P/Cmd+P — the browser's own default print shortcut is intercepted, not left to print the raw unstyled page) opens a combined preview-plus-settings surface: paper size, orientation, scale (fit-to-width/height/page or a custom percentage), margins (Normal/Narrow/Custom), a print-scope selector (current sheet / workbook / selected cells), gridlines/notes checkboxes, and headers-and-footers with fixed left/center/right slots and insertable tokens (page number, page count, date, sheet name). Page setup is scoped PER SHEET — reopening after switching tabs shows that sheet's own settings. Live oracle verification was attempted this cycle across three separate authenticated-profile strategies and all three failed on the Sign-in wall before reaching the reference workbook (see the oracle brief's "Session method (transparency)" section for the full account — the same class of browser-tooling failure a couple of other recent features in this codebase document for their own oracle sessions) — Print is nonetheless a long-stable, extremely well-established feature across every major spreadsheet app, so this slice is built from general knowledge rather than left unshipped; every behavioral claim not independently re-verified is called out as a Studio decision in the oracle brief and this manifest's "How it works".
Opening File ▸ Print settings shows the dialog seeded with defaults
Given
When I click menu item file.pageSetup
Then
[data-testid="page-setup-dialog"]is visible[data-testid="page-setup-orientation"]is visible with value "portrait"[data-testid="page-setup-margins-mode"]is visible with value "normal"[data-testid="page-setup-print-area-label"]is visible containing "Whole sheet"
Saving a changed field persists it — reopening the dialog shows the new value
Given
When I click menu item file.pageSetup, then choose landscape in page-setup-orientation, then click page-setup-save, then click menu item file.pageSetup
Then
[data-testid="page-setup-orientation"]is visible with value "landscape"
Cancel discards an edited field — reopening still shows the old value
Given
When I click menu item file.pageSetup, then choose landscape in page-setup-orientation, then click page-setup-cancel, then click menu item file.pageSetup
Then
[data-testid="page-setup-orientation"]is visible with value "portrait"
Selecting Custom scale reveals a percent field, which round-trips through Save
Given
When I click menu item file.pageSetup, then choose custom in page-setup-scale-mode, then see [data-testid="page-setup-scale-percent"] on screen, then fill page-setup-scale-percent with 75, then click page-setup-save, then click menu item file.pageSetup
Then
[data-testid="page-setup-scale-mode"]is visible with value "custom"[data-testid="page-setup-scale-percent"]is visible with value "75"
"Use selection" adopts the current grid selection as the print area
Given
When I select B2:C4, then click menu item file.pageSetup, then click page-setup-print-area-use-selection
Then
[data-testid="page-setup-print-area-label"]is visible containing "B2:C4"
A saved print area survives closing and reopening the dialog
Given
When I select B2:C4, then click menu item file.pageSetup, then click page-setup-print-area-use-selection, then click page-setup-save, then click menu item file.pageSetup
Then
[data-testid="page-setup-print-area-label"]is visible containing "B2:C4"
"Whole sheet" clears a previously-set print area
Given
When I select B2:C4, then click menu item file.pageSetup, then click page-setup-print-area-use-selection, then click page-setup-print-area-clear, then click page-setup-save, then click menu item file.pageSetup
Then
[data-testid="page-setup-print-area-label"]is visible containing "Whole sheet"
Page setup is scoped PER SHEET — a second sheet starts at defaults
Given
When I click menu item file.pageSetup, then choose landscape in page-setup-orientation, then click page-setup-save, then add a sheet (switching to it), then click menu item file.pageSetup
Then
[data-testid="page-setup-orientation"]is visible with value "portrait"
Switching back to the first sheet shows ITS page setup, untouched by the second sheet
Given
When I click menu item file.pageSetup, then choose landscape in page-setup-orientation, then click page-setup-save, then add a sheet (switching to it), then switch to sheet Sheet1, then click menu item file.pageSetup
Then
[data-testid="page-setup-orientation"]is visible with value "landscape"
Switching sheets WHILE the dialog stays open resyncs it — Save cannot land on the wrong sheet
Given
When I add a sheet (switching to it), then switch to sheet Sheet1, then click menu item file.pageSetup, then choose landscape in page-setup-orientation, then switch to sheet Sheet2
Then
[data-testid="page-setup-dialog"]is visible[data-testid="page-setup-orientation"]is visible with value "portrait"
Saving after a mid-dialog sheet switch writes to the NOW-active sheet, not the one shown when editing started — and never leaks the discarded edit anywhere
Given
When I add a sheet (switching to it), then switch to sheet Sheet1, then click menu item file.pageSetup, then choose landscape in page-setup-orientation, then switch to sheet Sheet2, then click page-setup-save, then click menu item file.pageSetup
Then
[data-testid="page-setup-orientation"]is visible with value "portrait"
The discarded mid-switch edit never lands on the ORIGINAL sheet either
Given
When I add a sheet (switching to it), then switch to sheet Sheet1, then click menu item file.pageSetup, then choose landscape in page-setup-orientation, then switch to sheet Sheet2, then click page-setup-save, then switch to sheet Sheet1, then click menu item file.pageSetup
Then
[data-testid="page-setup-orientation"]is visible with value "portrait"
Saving a page-setup change is undoable
Given
When I click menu item file.pageSetup, then choose landscape in page-setup-orientation, then click page-setup-save, then click A1, then undo, then click menu item file.pageSetup
Then
[data-testid="page-setup-orientation"]is visible with value "portrait"
A page setup survives a reload — it is document state
Given
When I click menu item file.pageSetup, then choose landscape in page-setup-orientation, then click page-setup-save, then wait 1200ms, then reload the page, then click menu item file.pageSetup
Then
[data-testid="page-setup-orientation"]is visible with value "landscape"
Insert a pivot table from a range (first vertical slice)
Selecting a range and choosing Insert ▸ Pivot table opens a "Create pivot table" dialog; confirming it groups the range's first column and sums its second into a new sheet — the row field's own header in A1, "SUM of <value field>" in B1, one row per distinct row value, and a Grand Total row at the bottom — as one undoable insert. Editing a source cell inside the range updates the pivot's output immediately, with no manual refresh control.
Drag to reorder rows & columns
Grabbing an already-selected column or row header and dragging it (alone, or as part of a multi-selected contiguous band) relocates it to a new position — siblings shift to fill the gap and make room, and every formula reference into the moved band, or to a shifted sibling, follows the move — matching Google Sheets.