
Excel Reports That Finance Teams Rely On Month After Month
What makes an Excel report dependable for finance: reconciliations, rounding, controls, evidence, invoices, budgets, timesheets and currencies.
Everything you need to level up your coding skills.

What makes an Excel report dependable for finance: reconciliations, rounding, controls, evidence, invoices, budgets, timesheets and currencies.

How a CSV file hurts a team: formula injection, hostile uploads, leaked personal data, hidden payloads and risky loaders, with a fix and a check for each.

Convert YAML to JSON with PyYAML and json, and handle the cases that break it: dates, sets, integer keys, NaN, anchors, several documents and complex keys.

Replace a page of upload rules with a ready template: built-in formats, dropdowns, an example row, a stable link and a note on what the file is for.

Excel stops at 1,048,576 rows and drops the rest if you save. Four ways to work with a bigger CSV: aggregate it, split it, use the Data Model or sample.

A tested guide to JSON files too big to load: memory and string limits, array to JSON Lines, DuckDB, streaming, splitting, compression and databases.

Why cat breaks XML, and three ways that work: XInclude with xmllint, XSLT with document(), and lxml, with the xml:base attribute side effect of XInclude.

Excel keeps 15 significant digits, so a 19 digit ID loses its last four. Why it happens, how to import the column as text, and how to check a file for damage.

Reject Excel files that do not match the template in a way senders can act on: staged checks, stable codes, specific messages, quarantine and a retry path.

Excel offers five CSV-like save formats. Here is what each writes, why plain CSV Comma Delimited loses characters, and which one to pick for each reader.

grep counts lines, not elements. Count XML elements correctly with xmllint, xmlstarlet and a streaming parser, and see why grep gave 20000 for 49819 lines.

yq converts YAML to JSON and back in one command. The same file gave different JSON in yq and PyYAML, and a big integer made yq fail. Flags and traps.
We send one email when a new article is published. No spam.