{"slug":"xlsx","domain":"documents","title":"Excel workbooks","summary":"Read and edit an Excel workbook the way Excel does: values and formulas, rows, columns and sheets inserted and deleted with every reference following, formats, names, pivots, and every formula recalculated on save.","help":"xlsx FILE COMMAND [ARGS] [+ COMMAND [ARGS]]...\n\nRead and edit a spreadsheet the way Excel does. Cells are named as Excel names\nthem: B9, B9:D20, Costs!B9, 'Rent Builder'!AF12, whole columns B:D, rows 3:5.\nAn address without a sheet means --sheet, or the first sheet.\n\nREAD (prints, changes nothing; also reads .xls .xlsb .ods)\n  sheets [--names]                every sheet: name, used range, formulas, state;\n                                  --names prints the names alone, one per line\n  structure                       each sheet's heading rows, row-label column and\n                                  columns: what --keep-structure holds still\n  get RANGE [--as csv|tsv|json|formulas]   cells (json carries value + formula);\n                                  a sheet's name alone is its used range\n  find TEXT                       cells whose value or formula contains TEXT\n  errors                          cells holding #DIV/0!, #N/A, #REF!, …\n  deps CELL                       what CELL's formula reads\n  trace CELL                      the formulas that read CELL\n  calc 'EXPR' [--iterate]         work out a formula against the book, unsaved\n  names                           defined names and what they refer to\n  pivots                          pivot tables: where, source, fields\n\nWRITE (edits FILE in place, recalculates, saves once per chain)\n  set CELL VALUE [CELL VALUE]...  =FORMULA, number, 7.5%, TRUE, 'text, text\n  clear RANGE                     empty the cells, keep their formats\n  fill RANGE VALUE                one formula across a range, as drag-fill does\n  copy RANGE TO_CELL              values, formulas (translated) and formats\n  insert-rows SHEET ROW [N]       N rows before ROW; every reference follows\n  delete-rows SHEET ROW[:ROW]     references into them become #REF!\n  insert-cols SHEET COL [N]       N columns before COL (a letter)\n  delete-cols SHEET COL[:COL]\n  add-sheet NAME [--after SHEET]  rename-sheet OLD NEW   delete-sheet NAME\n  copy-sheet SHEET NEW\n  name NAME =REFERENCE            unname NAME\n  fmt RANGE SPEC...               numfmt='\"$\"#,##0' bold italic underline\n                                  color=RRGGBB fill=RRGGBB|none border=thin|none\n                                  align=left|center|right wrap size=11\n  width SHEET COL[:COL] WIDTH     height SHEET ROW[:ROW] HEIGHT\n  recalc                          recalculate only\n  new [SHEET]                     make FILE a new empty workbook\n\nOPTIONS  -o OUT  write to OUT instead of FILE   --sheet S  home sheet\n         --no-recalc  save without recalculating (cached values go stale)\n         --keep-structure  change data only: cells, and rows added or deleted.\n                  Headings (column labels), existing rows' labels, columns,\n                  sheets and names are refused, and the chain saves nothing.\n                  `structure` shows what is held; when it guessed wrong:\n         --header-rows 'SHEET'!1:8   --label-cols 'SHEET'!A   ('SHEET'!- = none)\n\nEvery save recalculates. A formula this engine cannot work out keeps the value\nthe file had, is listed, and Excel recalculates it on open — never a silent 0.\n","example_command":"xlsx /tmp/draft.xlsx set \"'Rent Builder'!H12\" 2450","example_output":"'Rent Builder'!H12 = 2450\nrecalculated 33367 formulas (iterating, as the file asks)\nsaved /tmp/draft.xlsx\"","cost_class":"cached-read","tier":"free","price_per_1k_calls":0,"price_is_from":false,"status":"available","commands":["xlsx"],"default_enabled":true,"first_seen":"2026-10-07T18:44:09.422803Z","enabled":false}
