A .xlsx or .csv with one row per student or team member — a Name column plus a class or group column if you want it printed. Parsed in your browser; nothing uploads.
2
Check the roster count
The tool shows how many rows it found. Sheets generate in roster order, so sort the spreadsheet the way you want the stack to print.
3
Generate the sheets
One landscape PDF per person: their name and class at the top, a numbered 1–31 day grid below, and a P / A / L marking key in the footer. Print and mark by hand.
A worked example: a 25-student class, month by month
Your roster is class-7b.xlsx: 25 rows with columns Name and Class. One run produces 25 landscape sheets — each with the student's name and “Class: 7B” at the top and a numbered 1–31 grid below — zipped in roster order, ready to print as September's stack.
When October starts, drop the same file and run it again. New month, same thirty seconds — and the roster stays the single source of truth for who is on the list.
Constraints & edge cases
How do months with fewer than 31 days work?
+
The grid always draws 31 numbered day cells, so one sheet works for any month. In a 30-day month, the last cell just goes unused. This version does not take a month input or print month names — write the month in the header line or on the printed sheet.
Can it shade weekends or skip holidays?
+
No — cells are plain-numbered with no weekend shading or holiday toggle in this version. That is a deliberate trade: a neutral grid stays correct for any month and any schedule, including weekend classes. Cross out non-days by hand after printing.
Do the sheets come out in roster order?
+
Yes. Sheets generate in the spreadsheet's row order and the zip lists them the same way, so a roster sorted alphabetically prints as an alphabetical stack. Sort the file before dropping it — the tool does not re-sort.
What about big classes — does anything overflow?
+
Each person gets their own one-page sheet, so class size only changes how many pages you get, never the layout. A 25-student roster is 25 PDFs in a zip; the grid itself never squeezes.
Is my class size within the free tier?
+
Each run covers the first 20 rows free, unlimited runs, no signup. A 25-student class needs one Pro run ($12/mo, unlimited rows) — or two free batches.
How to make attendance sheets from a roster, by hand
The manual work here is duplication with small variations — one sheet per class, per month, or per group — which is exactly the kind of task where copy-paste errors hide well.
Copy the sheet, edit the headerA minute per sheet
1Build one attendance sheet with the class or group name and the date range in header cells.
2Right-click the sheet tab, choose Move or Copy with Create a copy ticked, then edit the header on the copy.
3Repeat per class or month.
Where it breaks. Because every copy starts identical, a duplicated header is nearly invisible — two sheets labelled March and a missing April is the classic outcome, and it is usually found by whoever has to use the sheets rather than whoever made them.
PivotTable → Show Report Filter PagesFive minutes if your roster already has a class column
1Build a PivotTable from the roster with the class column in Filters and the student names in Rows.
2Use PivotTable Analyze → Options → Show Report Filter Pages to get one sheet per class automatically.
Where it breaks. Fast and reliable for the splitting part, but what it produces is a PivotTable listing — not an attendance sheet with date columns to tick. You still have to lay out the actual sheet on top of each one.
One long sheet with page breaks and repeating headersTwenty minutes to set up, prints in one go
1Keep every group in one sheet, sorted by the class or group column.
2Use Page Layout → Print Titles → Rows to repeat at top so the header row prints on every page.
3Insert a manual page break between groups so each starts on a fresh page, then print or export the whole thing at once.
Where it breaks. Genuinely the fastest route if the output is paper, and it avoids the duplication errors entirely. It falls down when the output is files: you get one document, not one per group. Manual page breaks are also positional rather than data-aware, so the first time a class gains two students every break after it shifts and the pagination silently rots.
Windows and Mac
All three routes work the same way on Windows and Mac. Show Report Filter Pages sits in the same Options menu on both, and Print Titles is on the Page Layout tab on both.
Fine for a handful of groups, and the print-breaks route is genuinely good if paper is the deliverable. The failure mode at scale is not effort so much as silence: duplicated headers and rotted page breaks both produce output that looks finished and is wrong, and both are found by whoever uses the sheets rather than whoever made them.