Excel Spreadsheet To Json Conversion avatar

Excel Spreadsheet To Json Conversion

Under maintenance

Pricing

from $3.00 / 1,000 result returneds

Go to Apify Store
Excel Spreadsheet To Json Conversion

Excel Spreadsheet To Json Conversion

Under maintenance

Automation workflows need to turn recurring Excel spreadsheets into predictable JSON without silently accepting malformed dates, numbers, headers, or required fields. Basic converters produce rows but often do not enforce a data contract or clearly quarantine invalid records.

Pricing

from $3.00 / 1,000 result returneds

Rating

0.0

(0)

Developer

Jordan Nabbe

Jordan Nabbe

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

5 days ago

Last modified

Share

Excel Contract Validator to JSON

Turn recurring supplier and partner spreadsheets (.xlsx, CSV) into JSON rows you can import safely: every row is checked against a JSON Schema you supply. Press Start to try it: the prefilled input is a real .xlsx order export with European amounts and one row with an invalid date. Valid rows and rejected rows are kept apart, and each rejection says which document, sheet, row and column failed and why. It makes no web requests and never scrapes anything.

Input

  • documents (required, 1 to 25): each has id and source.
    • csv: inline CSV text in csv (comma delimiter, RFC-style quotes).
    • records / json: an array of objects (or a single object) in records / json, up to 1000 items, depth 8, 100 keys per object.
    • base64: an XLSX file in base64 plus fileName.
    • apifyKeyValueStore: keyValueStoreId and recordKey; the only storage read the Actor performs, and only when you ask for it.
  • rowSchema (required): JSON Schema for one row. Supported keywords: type, required, properties, additionalProperties (boolean), enum, const, minimum, maximum, exclusiveMinimum, exclusiveMaximum, minLength, maxLength, pattern, minItems, maxItems, format (date, date-time). Any other keyword stops the run with UNSUPPORTED_SCHEMA_KEYWORD instead of being silently ignored.
  • headerAliases: canonical property name mapped to accepted header variants (case and whitespace insensitive). Headers without an alias become camelCase keys.
  • sheetNames, headerRow, coercionMode (strict or permissive), dateOutput, emptyCellMode, includeRejectedValues, maxRows (default 100000, max 500000).

Strict coercion only converts canonical numeric strings and true/false. Permissive also trims, reads both 1,234.56 and 1.234,56 notation and currency signs, accepts yes/no, and normalises YYYY/M/D dates. A text value such as 1.234 that means 1234 in one notation and 1.234 in the other is never guessed: it is rejected unless you set numberFormat to en or eu.

Output

The default dataset receives one item per valid row (recordType: validRow) and nothing else, so every dataset item is a usable result. The OUTPUT key-value record holds outcome (status and counts), validRows, rejectedRows (document, sheet, row, column, value and reason) and manifest (per-document status, headers and counts). Row keys are sorted alphabetically for deterministic results.

Pricing

Pay per event. The main charge is per valid row; everything else listed below is free.

EventPrice (USD)Charged when
Run start (apify-actor-start)$0.005once per run; the default 512 MB memory is one event
Valid row (apify-default-dataset-item)$0.003per valid row delivered to the dataset

Not charged:

  • rejected rows with the sheet, row, column and reason (in the OUTPUT record)
  • documents that could not be opened (corrupt, encrypted, legacy .xls, unsafe)
  • the manifest with per-document status and detected headers

Examples (default 512 MB memory, one start event):

  • Weekly supplier file with 200 valid rows: $0.005 start + 200 × $0.003 = $0.605
  • Monthly export with 5,000 valid rows: $0.005 start + 5000 × $0.003 = $15.005
  • A file that cannot be opened: $0.005 start + 0 × $0.003 = $0.005

Spending limit: when you set a maximum cost per run, the Actor stops before it would exceed it, keeps every valid row it already delivered and reports limitReached in the OUTPUT record. It never delivers results beyond the limit.

The Store's Pricing tab shows the prices in force. If this section and the Pricing tab ever differ, the Pricing tab applies.

Limits

25 documents, 25 MB per compressed document, 200 MB expanded, ZIP expansion ratio 100, 5 million cells, 500000 rows per run. Documents are processed one at a time.

Failure behaviour

  • Invalid input or schema: the run fails with a non-zero exit before any processing.
  • A document that is unreadable, encrypted, legacy XLS (UNSUPPORTED_XLS), oversized, unsafe (ZIP path traversal, DTD/entity XML, zip bomb) or over maxRows is marked FAILED in the manifest and its rows are discarded; other documents continue.
  • Row errors are quarantined in rejectedRows.
  • Run outcome (OUTPUT.outcome.status): SUCCEEDED when all is clean, PARTIAL when any row or document was rejected, LIMIT_REACHED when your spending limit stopped delivery, FAILED when no valid row was produced. A FAILED run ends as a failed run after saving OUTPUT, so integrations and webhooks see the failure.

Only common OOXML workbooks are supported. Formulas are never evaluated (cached values are used), macros and external links are ignored, and formatting-based date detection covers Excel built-in and common custom date formats. Logs contain document IDs, counts and error codes, never cell values.