DANI
← All posts

Shipping a converter nobody asked for

The problem

A client sent a 40-sheet workbook and needed it as clean JSON by Friday. Manual copy-paste was going to take two days; a script took an evening.

Every tool is a deadline wearing a trench coat.

Core loop:

for (const sheet of workbook) {
  emit(parse(sheet));
}

The interesting part was not the parsing — it was deciding what not to support. Merged cells: yes. Formulas: evaluated, not preserved. Charts: ignored entirely.

What it taught me

Scope is a feature. The converter does one transformation well and refuses everything else, which is why it still works three years later.

Edited via the live editor to verify the save path.