Structure your spreadsheet for great results
4 min
One entity per sheet, headers in row 1, consistent column types, no merged cells. Five minutes of cleanup = a much better app.
The generators read your spreadsheet structurally — sheet names become routes, column headers become field names, cell types become column types. The cleaner the structure, the better the generated app.
WHAT TO DO
• One entity per sheet/tab. Sheet name "Customers" becomes Prisma model `Customer` and route `/customers`. Don't pile multiple entities into one sheet. • Row 1 = column headers. Plain English is fine — "Email" becomes `email`, "Total amount" becomes `totalAmount`. Avoid blank rows above the headers. • Row 2+ = data. The first ~50 rows are read as seed data + as type-detection samples. Mostly-numeric columns become Int/Float; mostly-date columns become DateTime; mixed-string columns become String. • One header per column. No merged cells, no double-row headers. The generators read row 1 strictly. • Consistent types within a column. A column of numbers + the occasional "N/A" string forces String type — convert N/A to empty cells. • Use Excel's data validation. Dropdown lists become Prisma enums + Zod enum validators. Number-range validation becomes Zod `min`/`max`. Text-length limits become `min`/`max` length. • Use formulas. Cell formulas are translated to TypeScript functions; the column becomes derived (computed at read time, not stored).
WHAT TO AVOID
• Merged cells (read as the top-left value; the merged region's other cells become blanks). • Multiple tables on one sheet (the generator picks the largest connected block; orphan rows are dropped). • Image-based data (charts of data are fine, but pictures of data are not OCR'd). • Pivot tables — they're computed views, not source data. The underlying data sheet becomes the entity. • Hidden sheets — they're skipped entirely.
FIVE MINUTES OF CLEANUP HEURISTIC
Open the workbook. Each sheet should answer yes to: "Does row 1 have column names?", "Is row 2 a real data row?", "Does every cell in column N have the same type?". If all three are yes, the generator's output will be clean. If any is no, two minutes of cleanup buys you a much better app.
Live recipes need the desktop
This article is a static preview. The in-app Help sidecar inside Avery NXR can fire each step against your live project — install the desktop to use it interactively.