It is just a ZIP of XML
An .xlsx file is a ZIP archive containing XML. That is why this one runs at the edge with no container, no native binary, and a response in well under a second for a typical file.
curl https://api.justapi.tech/v1/xlsx/generate \
-H "Authorization: Bearer ak_live_..." \
-d '{"sheets":[{"name":"Report","columns":[{"header":"ID","key":"id"}],"rows":[{"id":"1"}]}]}'
Things that go wrong elsewhere
Types. A number written as a string gets the "number stored as text" warning and breaks every formula downstream. We infer and declare types properly.
Formula injection. A cell beginning with =, +, - or @ can execute a command when the
file is opened. If your rows come from user input, this is a real vulnerability. We neutralize it
by default.
Control characters. A single null byte in your data produces a file Excel refuses to open with an unhelpful error. We strip characters that are illegal in XML 1.0.
Memory. Building the whole document in memory before writing it works fine until someone asks for 200,000 rows. We stream.
Already using another provider?
We accept the legacy payload shape — an array with name, cols and rows — without modification.
Point your existing call at this URL, change the auth header, and you are done.