Render a structured document to a native Excel (.xlsx) workbook.
Use describe("xlsx.render") when your code needs the complete live JSON Schemas.
At a glance
| Property | Value |
|---|---|
| Package | @runstamp/xlsx |
| Domain / verb | xlsx / render |
| Customer jobs | create |
| Deterministic | Yes |
| Side effects | none |
Availability
| Local | SDK | CLI | MCP | Managed API |
|---|---|---|---|---|
| public ga | public ga | public ga | public ga | public ga |
Managed API route: POST /api/v2/operations/xlsx/render. Managed execution requires a free-trial workspace or an active Platform or Enterprise workspace, and an environment-bound API key.
Input and result
| Schema | Required fields | Optional fields |
|---|---|---|
| Input | sheets | accessible, meta, theme, defaults, date1904, namedRanges |
| Options | none | deterministic, deterministicSeed, timeoutMs, locale, lossPolicy, limits, render |
| Result value | bytes, mediaType, extension, byteLength, hash | none |
Every success also carries losses, diagnostics, and a hash-bound receipt.
Defaults, limits, and format constraints
Defaults
| Path | Default |
|---|---|
$.deterministic | default=true |
$.lossPolicy | default="collect" |
Formats and profiles
| Path | Constraint |
|---|---|
$.sheets[].conditionalFormatting[].ref | minLength=1 |
$.sheets[].conditionalFormatting[].rules | minItems=1 |
$.sheets[].conditionalFormatting[].rules[].oneOf[0].type | const="cellIs" |
$.sheets[].conditionalFormatting[].rules[].oneOf[0].operator | oneOf="between","equal","greaterThan","greaterThanOrEqual","lessThan","lessThanOrEqual","notBetween","notEqual" |
$.sheets[].conditionalFormatting[].rules[].oneOf[0].style.anyOf[1].font.size | exclusiveMinimum=0 |
$.sheets[].conditionalFormatting[].rules[].oneOf[0].style.anyOf[1].font.underline.anyOf[1] | oneOf="single","double","singleAccounting","doubleAccounting" |
$.sheets[].conditionalFormatting[].rules[].oneOf[0].style.anyOf[1].font.vertAlign | oneOf="superscript","subscript" |
$.sheets[].conditionalFormatting[].rules[].oneOf[0].style.anyOf[1].font.charset | minimum=0maximum=255 |
$.sheets[].conditionalFormatting[].rules[].oneOf[0].style.anyOf[1].fill.type | oneOf="solid","pattern" |
$.sheets[].conditionalFormatting[].rules[].oneOf[0].style.anyOf[1].fill.patternType | oneOf="solid","darkGray","mediumGray","lightGray","gray125","gray0625","darkHorizontal","darkVertical","darkDown","darkUp","darkGrid","darkTrellis","lightHorizontal","lightVertical","lightDown","lightUp","lightGrid","lightTrellis" |
$.sheets[].conditionalFormatting[].rules[].oneOf[0].style.anyOf[1].border.top.style | oneOf="thin","medium","thick","double","dotted","dashed","dashDot","dashDotDot","hair","mediumDashed","mediumDashDot","mediumDashDotDot","slantDashDot" |
$.sheets[].conditionalFormatting[].rules[].oneOf[0].style.anyOf[1].border.bottom.style | oneOf="thin","medium","thick","double","dotted","dashed","dashDot","dashDotDot","hair","mediumDashed","mediumDashDot","mediumDashDotDot","slantDashDot" |
$.sheets[].conditionalFormatting[].rules[].oneOf[0].style.anyOf[1].border.left.style | oneOf="thin","medium","thick","double","dotted","dashed","dashDot","dashDotDot","hair","mediumDashed","mediumDashDot","mediumDashDotDot","slantDashDot" |
$.sheets[].conditionalFormatting[].rules[].oneOf[0].style.anyOf[1].border.right.style | oneOf="thin","medium","thick","double","dotted","dashed","dashDot","dashDotDot","hair","mediumDashed","mediumDashDot","mediumDashDotDot","slantDashDot" |
$.sheets[].conditionalFormatting[].rules[].oneOf[0].style.anyOf[1].border.diagonal.style | oneOf="thin","medium","thick","double","dotted","dashed","dashDot","dashDotDot","hair","mediumDashed","mediumDashDot","mediumDashDotDot","slantDashDot" |
$.sheets[].conditionalFormatting[].rules[].oneOf[0].style.anyOf[1].border.diagonal.direction | oneOf="up","down","both" |
$.sheets[].conditionalFormatting[].rules[].oneOf[0].style.anyOf[1].alignment.horizontal | oneOf="left","center","right","fill","justify","centerContinuous","distributed","general" |
$.sheets[].conditionalFormatting[].rules[].oneOf[0].style.anyOf[1].alignment.vertical | oneOf="top","center","bottom","justify","distributed" |
$.sheets[].conditionalFormatting[].rules[].oneOf[0].style.anyOf[1].alignment.textRotation | minimum=0maximum=255 |
$.sheets[].conditionalFormatting[].rules[].oneOf[0].style.anyOf[1].alignment.indent | minimum=0maximum=250 |
$.sheets[].conditionalFormatting[].rules[].oneOf[0].style.anyOf[1].alignment.readingOrder.anyOf[0] | const=0 |
Showing 24 of 109 constraints. Use describe() or the machine-readable reference for the complete schema.
Other limits
| Path | Constraint |
|---|---|
$.defaults.font.family | minLength=1 |
$.defaults.font.size | exclusiveMinimum=0 |
$.defaults.columnWidth | minimum=0 |
$.defaults.rowHeight | minimum=0maximum=409 |
$.namedRanges[].name | minLength=1maxLength=255 |
$.namedRanges[].ref | minLength=1 |
$.sheets | minItems=1maxItems=255 |
$.sheets[].name | minLength=1maxLength=31 |
$.sheets[].columns | maxItems=16384 |
$.sheets[].columns[].width | minimum=0 |
$.sheets[].rows | maxItems=1048576 |
$.sheets[].rows[].height | minimum=0maximum=409 |
$.sheets[].rows[].cells | maxItems=16384 |
$.sheets[].rows[].cells[].value.anyOf[5] | minItems=1 |
$.sheets[].rows[].cells[].value.anyOf[5][].font.size | exclusiveMinimum=0 |
$.sheets[].rows[].cells[].value.anyOf[5][].font.charset | minimum=0maximum=255 |
$.sheets[].rows[].cells[].style.anyOf[1].font.size | exclusiveMinimum=0 |
$.sheets[].rows[].cells[].style.anyOf[1].font.charset | minimum=0maximum=255 |
$.sheets[].rows[].cells[].style.anyOf[1].alignment.textRotation | minimum=0maximum=255 |
$.sheets[].rows[].cells[].style.anyOf[1].alignment.indent | minimum=0maximum=250 |
$.sheets[].rows[].cells[].formula.anyOf[0] | minLength=1 |
$.sheets[].rows[].cells[].formula.anyOf[1].expression | minLength=1 |
$.sheets[].rows[].cells[].formula.anyOf[1].cachedValue.anyOf[5] | minItems=1 |
Showing 32 of 212 constraints. Use describe() or the machine-readable reference for the complete schema.
Invoke
const input = await fetch("https://runstamp.com/demo-evidence/operation-evidence/xlsx/xlsx.render/input.json").then((response) => response.json());
const result = await runstamp.run("xlsx.render", input);
if (!result.ok) throw new Error(`${result.error.code}: ${result.error.remediation}`);
console.log(result.value, result.losses, result.diagnostics, result.receipt);curl -fsS https://runstamp.com/demo-evidence/operation-evidence/xlsx/xlsx.render/input.json -o input.json
npx -p @runstamp/sdk runstamp ops invoke xlsx.render --input input.json{
"tool": "runstamp_invoke_operation",
"arguments": {
"operation": "xlsx.render",
"input": "<JSON from https://runstamp.com/demo-evidence/operation-evidence/xlsx/xlsx.render/input.json>",
"execution_mode": "local"
}
}Errors and losses
Declared errors (10)
common/SCHEMA_REJECTEDcommon/CONTRACT_VIOLATIONcommon/OPERATION_CANCELLEDcommon/OPERATION_TIMEOUTcommon/RESOURCE_LIMIT_EXCEEDEDcommon/INPUT_CORRUPTxlsx/TEMPLATE_PARSE_FAILEDxlsx/TEMPLATE_ASSEMBLY_FAILEDxlsx/XLSX_XML_UNSAFExlsx/LOSS_POLICY_VIOLATED
Declared losses (22)
xlsx/MACRO_STRIPPEDxlsx/EXTERNAL_CONNECTION_STRIPPEDxlsx/FORMULA_REFERENCE_BROKENxlsx/NAMED_RANGE_DEADxlsx/HYPERLINK_TARGET_INVALIDxlsx/MERGE_OVERLAPxlsx/MERGE_OUT_OF_BOUNDSxlsx/SHARED_STRING_INDEX_INVALIDxlsx/STYLE_INDEX_INVALIDxlsx/RELATIONSHIP_TARGET_MISSINGxlsx/CHART_DATA_MISSINGxlsx/TABLE_REFERENCE_INVALIDxlsx/TABLE_RELATIONSHIP_BROKENxlsx/RANGE_REFERENCE_CLIPPEDxlsx/SHEET_NAME_SUBSTITUTEDxlsx/TABLE_NAME_SUBSTITUTEDxlsx/AUTOFILTER_SUBSUMED_BY_TABLExlsx/AUTOFILTER_DROPPED_FOR_TABLExlsx/TABLE_HEADER_NORMALIZEDxlsx/REPAIR_INCOMPLETExlsx/DIMENSION_MISMATCHxlsx/UNCLASSIFIED_CONDITION
SDK AbortSignal, CLI exit 130, and MCP cancellation return the typed common/OPERATION_CANCELLED failure envelope.
Verified example and exact contract
- Fixture:
icp-workflow(xlsx-tracker-compliance-remediation.json). - Example input — SHA-256
57ed61c3dde8935152aea4a115153c6f75e47d2bbe78024ef0e3c5133563095e. - Example result — SHA-256
a39dd5eaea7e153f1e0c85b632a37a3d22244af063abc6439307ca78a420f267. - Verified result SHA-256:
1368f232f7b08bfeb7508f4a89553c4ae6c78aaad5ca5953f060a8388cfef736. - Qualification lane:
11-pdf-xlsx.
Contract fingerprints
- Descriptor:
7882bbe3c9eba9aa8c7d80939ee12f2882424b7a6356959cd7067ddd845bf1f3. - Input schema:
9522e6f9acdc7fe1e183439bf5424b1b64dcba8214fdfbc1c08232f7eec676ea. - Options schema:
4a05af0c21b5c62de7bc4564e5c98022a031cf4f7049dae4db6f31281c8b01da. - Result value schema:
62867c278e77e4ce2f21969005e458e5dfe2c2d3ddf011b75a39e846f97c7b1a.
The machine-readable operation reference publishes the complete schemas, qualification results, and evidence bindings for every operation.