Workbook Recalculation Report
Pricing
$0.05 / complete workbook recalculation report
Workbook Recalculation Report
Experimental bounded LibreOffice formula recalculation and cache comparison for a small caller-owned XLSX.
Pricing
$0.05 / complete workbook recalculation report
Rating
0.0
(0)
Developer
L3Digital
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
17 days ago
Last modified
Categories
Share
What does Workbook Recalculation Report do?
Check which stored formula values change when LibreOffice recalculates your small XLSX workbook. Receive one formula and cache comparison report from a workbook you are authorized to process. The Actor records the original formulas and stored caches, explicitly asks LibreOffice to calculate all cells, and reads the separately exported XLSX caches. This experimental service is intended for callers without a spreadsheet engine installed.
Why use this workbook report?
An agent or backend can receive the original observations and engine results in one structured dataset record. The source SHA-256 and actual engine version help identify what ran. The report gives a caller explicit outcomes and missing-value diagnostics instead of treating a stored cache as evidence of freshness.
The admitted subset is deliberately small. Native Excel or LibreOffice are complete alternatives when you already operate them. This Actor makes no universal Excel compatibility or freshness guarantee.
Use from an AI agent through MCP
Add this URL to a client that supports remote HTTP MCP, then authorize with your own Apify account using the Apify MCP setup guide:
https://mcp.apify.com/?tools=l3digital/workbook-recalculation-report
This configuration selects the Actor directly. Availability still depends on
Apify account and Actor eligibility. Call l3digital/workbook-recalculation-report
with the example input below; the pricing and input restrictions on this page apply.
When using call-actor, its response contains run status and storage IDs. If the
run is still active, check that run with get-actor-run. After success, retrieve
the report with get-dataset-items using the returned dataset ID
(defaultDatasetId in the run API). These retrieval tools load with the Actor.
Retrieve the existing result instead of starting another run. Inspect the report
status and diagnostics described below before using its values.
How to submit a workbook
- Choose
recalculatein the input form. - Encode the original XLSX bytes as strict base64 and put that string in
workbookBase64. - Run the Actor and inspect the single dataset record's
statusbefore usingformulaResults.
See the input tab for the flat configuration options. The API tab provides programmatic access. No URL, source account, network acquisition or output-workbook download is involved.
The submitted base64 workbook is retained as platform input. Sheet/cell names, formulas and original/recalculated values appear in the result. Submit only data you are authorized to store and process on Apify. Native temporary-file cleanup does not delete the platform input or result.
The default input is an uncharged, engine-free illustration:
{"mode": "demo"}
A recalculation request has this shape (replace the descriptive string with real base64):
{"mode": "recalculate", "workbookBase64": "BASE64_OF_AUTHORIZED_XLSX"}
Supported workbook subset and limits
Static finite numbers, booleans and text are supported. Formula syntax covers + - * / ^, unary signs, parentheses, = <> < <= > >=, bounded A1 cell/range references, quoted or unquoted cross-sheet references, numeric/text/boolean literals, and SUM, MIN, MAX, AVERAGE, ABS, ROUND, IF. Range values are allowed in aggregate functions, not as standalone scalar results. Formula admission parses syntax; LibreOffice performs the calculation.
| Limit | Maximum |
|---|---|
| Decoded XLSX | 2,097,152 bytes (2 MiB) |
| Actual ZIP expansion | 16,777,216 bytes (16 MiB) |
| ZIP entries | 128 |
| Sheets / nonempty cells / formulas | 3 / 5,000 / 200 |
| Cell and reference grid | Rows 1–1000, columns A–CV (100 columns) |
Formula characters, including leading = | 1,000 |
| Native exported XLSX / report JSON | 4 MiB / 1 MiB |
| Bridge receipt and each monitored process log | 64 KiB |
| Monitored temporary workspace | 32 MiB, 512 files |
Date/error input cells, custom/date number formats, named/array/shared formulas, structured references, unknown functions, external dependencies, macros, embeddings and refresh content are refused. A workbook with no formulas is also refused. Any unsupported workbook is wholly refused before native loading. Formatting support is conservative; simplify the workbook to plain scalar cells if it is refused.
Native startup has a 15-second bound and the native operation has a 95-second budget. Linux process file limits and monitored output bounds supplement the total 120-second application deadline. The owner terminates and waits for engine and bridge process groups and removes their private profile and temporary files on controlled outcomes.
The headless engine has a 32 MiB hard per-file ceiling because uncompressed temporary XML can exceed the compressed 4 MiB export limit. Export monitoring still refuses files above 4 MiB; version and UNO bridge processes retain 64 KiB hard ceilings. The 32 MiB/512-file workspace thresholds are polled refusal bounds, so transient peaks may cross them before termination; they are not a hard aggregate filesystem quota.
Report output
| Field | Meaning |
|---|---|
status | demo, complete, unsupported, calculation_error or incomplete |
sourceSha256 | Hash of original decoded bytes, or null when decoding was unavailable |
engine | Actual invoked LibreOffice name/version, or null when no version was established |
formulaResults | Sheet, cell, original formula/cache, new cache-derived scalar, comparison |
diagnostics | Bounded reasons for refusal or incomplete calculation |
contractVersion | Version of this report contract |
An illustrative formula entry is:
{"sheet":"Inputs","cell":"A3","formula":"=A1+A2","originalCachedValue":999,"recalculatedValue":15,"comparison":"changed"}
complete requires a present finite scalar result for every admitted formula. Engine error cells produce calculation_error; unavailable engines, timeouts or missing output/caches produce incomplete. Empty text is a present value; null means no cache/result was observed. Booleans remain distinct from numbers.
changed and unchanged compare original and exported values. Numeric equality uses absolute and relative tolerance 1e-9; booleans and text compare by exact type and value. no_cached_value records absence of an original cache. These labels do not certify freshness or correctness. You can download the dataset as JSON or other platform-supported formats; nested formula results are best consumed as JSON.
Recover and retain this run's evidence
- Use your authorized Apify caller to start asynchronously. Save the returned run
idand a caller-generated request key in your own records before proceeding; retaindefaultKeyValueStoreIdanddefaultDatasetIdfrom the run response. - Check
GET /v2/actor-runs/RUN_IDwith that saved ID (run API). If a wait or retrieval times out, check the same run again. A failed or timed-out run can still have stored output; inspect it before deciding what to do. - Retrieve
GET /v2/datasets/DATASET_ID/items?format=json, using that run'sdefaultDatasetIdasDATASET_ID(dataset items API). The full report is the dataset item; this Actor does not write aREPORTrecord. - Export the full typed JSON, parse it and verify the input binding and decision-required evidence before acting or cleaning up. Keep
contractVersion,sourceSha256,engine,formulaResultsand diagnostics. Preserve null, empty text, booleans and numbers as distinct JSON values.unsupported,calculation_errorandincompleterequire different responses; existing formula entries alone do not establish a complete recalculation.
Do not silently POST again after a failed retrieval. If the initial start response was lost and no run ID is known, reconcile your authorized run history against your recorded request and input before considering a paid restart. A missing response does not prove no run started; this workflow promises no universal start idempotency.
A table or optional dataset field projection can support a limited notification, but it is not the full report. Retain the run/storage IDs, contractVersion, sourceSha256, engine identity and relevant diagnostics; retrieve the full typed formulaResults from this same run before deciding which cells changed.
Selective cleanup
After the run is terminal, no restart is planned and your exported evidence has been parsed and verified, you may remove authorized copies you no longer need. Use your saved exact storage IDs, never a latest-run shortcut or an assumed shared store. See Apify's record deletion and dataset deletion references for platform operations, which were not exercised in this Actor's QA: deleting INPUT does not delete the dataset. The dataset still contains derived formulas and values. Input records, dataset reports and external copies are separate. Removing one does not erase logs, exports, saved task input, source files or customer copies, or guarantee provider-wide erasure.
How much does a report cost?
The price is $0.05 per complete useful recalculation report,
charged through one accepted useful-report event. Only a complete useful
recalculation report with at least one formula can attempt that event, after its
dataset record has persisted. Demo, refusal, calculation errors, incomplete work and persistence
failures emit zero events. An accepted count other than one, or a charge
exception, fails visibly and is never retried automatically. Unpriced development
runs do not attempt a charge. The five corrected
private cases produced one accepted event for the complete case and zero for
the other four. This is a configured experimental price, not revenue or paid
settlement evidence.
Across the two private builds and seven runs, conservative workbook execution cost was $0.02762387464959423. That accounting includes the retained initial incomplete run whose profile-lock race was fixed in the corrected build. It does not establish economics for larger files, other request mixes, or sustained traffic. External demand, customer savings and sustained commercial margin remain unvalidated.
Private validation of corrected build 0.1.2 passed a native LibreOffice
25.2.3.2 proof for 11 frozen formulas and five normal platform cases. The
complete known-answer case persisted one report and one useful-report event.
Its observed run duration was 9.987 seconds, peak memory was 196.602 MiB, and
conservative platform cost was $0.0006161991178890069. This is one small,
frozen sample: it is not a maximum-workload or customer-latency benchmark, and
it does not establish general spreadsheet fidelity or demand. These are owner-QA
observations, not customer usage or settlement evidence.
Troubleshooting and support
For unsupported, inspect the diagnostic and reduce unsupported content or workbook size. For incomplete, keep the original input and engine identity when reproducing the issue. A formula error remains calculation_error even if other formula results exist. Report useful reproduction details through the Issues tab without sharing private workbook contents.
Maintainers can find the locked offline checks and the exact native build-verification procedure in VALIDATION.md. Private configuration uses 1024 MiB, a 180-second platform timeout, automatic restart disabled and standby off. The present evidence covers the stated frozen cases; it does not extend the supported subset or resource limits.
