Skip to content
Open beta — everything’s free right now, and your rate is locked when it ends.

Pasting into the grid: what lands, what refuses

Multi-cell paste from a spreadsheet, the coercion rules per field type, and how the batch writes behave — all-or-nothing batches, honest progress, and one undo step for the whole paste.

Updated August 2026

Copy a block of cells in Excel or Sheets, click a cell in Tabla, press Cmd+V. The clipboard's rows and columns land as a block starting at that cell — and everything Tabla can't honestly interpret is left alone rather than guessed at. This page is the exact rules.

Copy works the other way too: a selected range copies out as plain tab-separated text, so a Tabla grid pastes cleanly back into a spreadsheet.

Where it lands

The pasted block starts at the selection's top-left corner. Columns are clipped to the ones that exist to its right — a paste never widens a table. Rows aren't: ten clipboard rows onto the last three rows of the table fill those three and add seven, so the block lands whole. One paste adds up to 5,000 rows; a bigger one is refused before anything is written, and import is the door for a file that size — it creates the fields as well.

What each field type accepts

The principle everywhere: a value that doesn't parse for its field's type leaves the cell untouched. No partial dates, no half-written rows.

  • Text, long text, email, phone, URL — take the text as-is.
  • Number and currency — the number is read out of the text: pasting EGP 1,600.00 into a currency cell stores 1600. Text with no number in it doesn't land.
  • Select — a pasted name that is already a choice lands as that choice, and one that isn't becomes a new choice on the field, minted before the row is written. With allow multiple on, a comma-separated list pastes, and the pasted choices are added to what the cell already holds.
  • Date — a date-only field wants 2026-08-12. A date-and-time field takes a timestamp: one carrying a timezone (a trailing Z or +02:00) is kept as that instant; a bare wall-clock time like 2026-08-12 14:30 — the kind Excel produces — is read in the database's timezone, not silently as UTC.
  • Checkboxtrue, yes, 1, y, on check it; false, no, 0, n, off uncheck it. Anything else is ignored.
  • Duration1:30 in the field's own format. Ninety minutes, not the number 130.
  • Member — the exact name or email of someone who is already a member. Unknown people don't paste.
  • Rating — a number, clamped to the field's maximum.

Pasting an empty cell clears the target — copy a blank, paste a blank.

Text pastes into a link cell and comes back as real chips. Each pasted value is matched against the linked table's display field — the field whose value names a record over there — trimmed and ignoring case, so cairo finds Cairo and stray spaces around a value don't matter. A value that matches nothing creates a record in the linked table under that name, and a value that names two records links the first of them.

On a link with allow many on, a comma or semicolon followed by a space separates values: Cairo, Giza pastes as two chips, 1,234 as one. On a single link the whole cell is one value, commas and all.

One cell or a whole column behaves the same way — paste a column of customer names down an empty link field and they land as chips, row for row. It round-trips, too: copying a link cell gives you its chip labels as plain text, and pasting that text back links it again by the rules above.

If the names are already sitting in a text column of the same table, you don't need a paste at all — linked records turns that column into a filled link in one pass.

What never takes a text paste

  • Attachment cells. Text never pastes into them. Copying an attachment cell inside Tabla and pasting onto another attachment cell duplicates the files — and if the target already has files, Tabla asks whether to Add or Replace before touching anything.
  • Computed columns (formula, lookup, rollup) and buttons ignore paste entirely — no request, no error, nothing to un-paint.

How the write actually happens

A paste is sent as batch writes of up to 50 records, one batch after another, and each batch is all-or-nothing on the server — the same rule the API's own batch writes follow. A paste of 50 rows or fewer that fails therefore leaves nothing behind: no half-written block to hunt for.

A bigger paste narrates its progress in the status strip — Saving 51–100 of 342… — and if a batch is refused mid-run, the run stops there. Batches already written stay written, nothing from the failed batch lands, and the message says exactly how far it got. Cells that were painted but not saved snap back to their real values in the same moment as the error.

However far it got, the whole paste is one undo step: Cmd+Z takes all of it back at once, not row by row (undo and redo).

One honesty note for automations: an action touching 50 or more records fires no per-record webhooks — a bulk flood of record.updated deliveries helps nobody. Smaller pastes fire normally.

Tabla is the database we build these on.

A no-code database with real Postgres underneath: every feature on every plan, a million records per database, and your whole database back out in one file, any day.

More guides