How To

Work with CSV files

Open .csv/.tsv files as sortable tables, lay a Day column out as a weekly calendar with the Week view, pick the delimiter and edit cells right in the grid.

WebF1 Pad opens .csv and .tsv files as viewer tabs: instead of raw comma text you get a real row/column table. Nothing is editable until you ask for it, reading comes first.

The Week view: a Day column becomes a calendar

The headline feature. When your file has a column whose values are day names, the Week button in the toolbar lays the data out as a weekly calendar: every day of the week becomes a column, and every row lands under its day as a list of entries. A file like

Day,Time,Task
Mon,09:00,Standup
Mon,14:00,1:1
Wed,10:00,Design review

renders as a Monday | Tuesday | Wednesday | ... layout with the Monday cell listing both “09:00 - Standup” and “14:00 - 1:1”. Multiple entries per day stack vertically, and each entry shows the remaining fields labeled by their headers.

How day detection works:

  • A header named Day, Weekday or similar qualifies when its values are day names; any column whose values are (mostly) day names qualifies even with a different header.
  • Values match full names, abbreviations and prefixes of two or more letters, case-insensitive (Mon, TUESDAY, thur, fr), plus the current locale’s day names for non-English files.
  • Values that resolve to no day (Funday) are collected in an “Other” bucket with a warning listing the unrecognized values - nothing is dropped silently.
  • Days with no entries keep an empty column unless Settings > CSV > “Hide empty day columns” is on. Settings > CSV > First day of week picks a Monday-first or Sunday-first layout (Monday is the default).

The Week button is disabled with a tooltip when no day-like column is detected, so you always know why it is unavailable. Editing is a Table view capability; switch back to Table to change cells.

The Table and Raw views

  • Table - the file as a grid. Click a column header to sort (ascending, descending, original order); numeric columns right-align. Cells that span several lines in the file keep their line breaks. Sorting and filtering are view concerns: the file itself is never reordered or rewritten by them. A line-number column (#, on by default) shows each row’s physical line in the file, matching the Raw view; the numbers do not change when you filter or sort, and the Lines button in the toolbar turns the column off.
  • Raw - the exact file text, read-only.

Filter the rows

The Filter button in the toolbar opens one match box per column. Type in a column’s box - for example Jim under a Name column, or a date under a Date column - and the table shows only the rows whose cell in that column contains the text (case-insensitive). Filters in several columns combine: a row must match every one (AND). While filters are active the button reads Filter · 25/132 - the rows showing out of the total - and an info banner under the toolbar reports Showing X of Y rows with a one-click Clear filters.

Pick values from a list

For the “show Mark and Oscar” case, open the chevron at the end of a column’s row: the column’s distinct values appear as a checkbox list (sorted, with the checked count shown as a badge). Check every value you want to keep - All and None toggle the whole list - and the table shows the rows matching any checked value. A search box narrows long lists (type os to find Oscar), and a very wide column caps the list (the hint line says so; use the match text for those).

Text and checked values combine as OR within a column: typing ar while Mark and Jim are checked keeps Mark, Mary (substring) and Jim (checked). Across columns it stays AND, exactly as before. The per-column × clears both the text and the checks.

Two things worth knowing:

  • Filtering hides, never deletes. The rows are hidden from view only; the file keeps every row. Edit mode stays available while a filter is active, and an edit (say, changing Jim’s hours while filtered to Jim) saves the whole file - his row changes, every hidden row passes through untouched. If an edit makes a row no longer match the filter (renaming Jim to James), it disappears from the filtered view but is saved; Ctrl+Z undoes it.
  • Copy respects the filter. Copy CSV and Copy MD copy what you see: filtered to Jim, Copy CSV hands you just Jim’s rows (with the full header) - a quick way to split a timesheet per person. Clear the filters to copy everything again.

Filters are session-scoped (they reset when the file’s content changes) and also apply to the Week view: filter to one person, then switch to Week to see just their schedule as a calendar.

Sums

The table has a Sum footer: one row pinned under the data showing the total of every numeric column (a column is numeric when all of its non-empty values are numbers; the footer skips columns like Name or Date). Sums update live — filter to one person on a timesheet and the Hours column shows their total, and while a filter is active the cell shows both numbers, 40 / 120 (filtered / whole file), with a tooltip spelling out which is which. Clear the filters to see just the whole-file total again.

Sums are view-only: they are never copied (Copy CSV / Copy MD stay data-only) and never written to the file. Editing a cell updates the sums in the same render, and the totals come from the complete file even when a large file’s table is truncated for display.

A csv fenced code block inside a normal note renders as a table in the preview too, useful for small inline tables.

Delimiter and header

  • CSV - Auto sets the field delimiter: Auto-detect, Tab, Comma, Semicolon, Space, or any custom single character (“Other”). The choice is remembered per file. Auto-detection counts the candidate characters in the first lines, so a pipe-delimited file with a .csv extension is detected correctly - and the chip is there for the cases it is not.
  • Header - Auto decides whether the first row is a header. Detection is conservative (a row of dates or codes is data, not names); when the file has no header row, generated Column 1, Column 2, … names appear in italics so you can tell them from real file content. Force Yes or No when the automatic choice guesses wrong.

Both chips also appear in the status bar when you mark an already-open file as CSV via the language picker.

Editing the data

The Edit button (pencil) turns the table into a grid editor:

  1. Click a cell, type, and press Enter to commit and move down, or Tab to move right (it wraps to the next row at the last column, like a spreadsheet). Esc cancels.
  2. Header names are editable the same way - when the file really has a header row (generated ones are not editable, switch the Header chip to Yes first).
  3. Ctrl+Z undoes a committed cell, Ctrl+Shift+Z redoes. Every committed change is saved back to the file automatically.

The file’s physical format is preserved: byte-order mark, line endings and trailing newline survive a save, so a well-formed file changes only in the cells you actually edited. Quoting is normalized to “quotes only where required” (one, two becomes "one, two"), which every CSV consumer parses identically. If a save would visibly change the file (extra cells in ragged rows, blank lines between records), a banner tells you before the first save.

Copy the data out

The toolbar’s copy buttons hand the parsed table to the clipboard in two shapes: Copy CSV (re-serialized RFC 4180, using the tab’s delimiter) and Copy MD (a GitHub-Flavored-Markdown table you can paste straight into a note, an issue, or a chat). Copy MD is the built-in CSV-to-markdown conversion; there is no separate conversion menu. The other direction (markdown table to CSV) has no dedicated converter: paste the markdown table into a note and ask the AI chat to convert it, or paste the plain text into a CSV tab and fix up the delimiter chip.

Files that fail to parse (an unterminated quoted field, for example) stay read-only: the table shows everything up to the broken record plus the error’s line and column, and the Edit button is disabled while the file cannot be rebuilt losslessly.

Delimiter, week start and other defaults

Settings > CSV holds the defaults applied to every CSV tab: default delimiter, first day of the week, hide empty day columns, and whether unquoted fields are trimmed. Each file’s chips override them.