# WordTable

Defines Word tables and their commands. Rows, cells, layout and interaction must be assembled together.

Defines Word tables and their commands. Rows, cells, layout and interaction must be assembled together.

`@quirekit/classic-table-model` · **AGPL-3.0-only**

## Editor compatibility
Layer：**Shared document capability**
| Editor | Status | Assembly and boundaries |
| --- | --- | --- |
| Classic | Supported | [createClassicWordPreset](/en/plugins/reference/create-classic-word-preset) — Use createClassicWordPreset for Word models, layout and product integration. Controls, flags, host services and file support follow this page. Full comment, revision and content-control authoring UI additionally requires Pro. |
| Block | Requires integration | [createBlockTableExtensions](/en/plugins/reference/create-block-table-extensions) — Use createBlockTableExtensions for table nodes and the table-only profile. Mount BlockTableMenu from @quirekit/block-table/vue in BlockEditor’s tools slot for table controls. Pagination, sections and headers/footers are not included. |

“Supported” means the product assembly above exists; interaction, host services and file formats retain their own conditions. See [status and integration rules](/en/plugins/compatibility). Licensing is shown separately.

## Installation

```sh
pnpm add @quirekit/classic-table-model@alpha
```

Start a Word product with the [Word preset](/en/plugins/reference/create-classic-word-preset). This export supports independent Core or custom presets; assemble companion nodes, commands and layout, without duplicate names.

```ts
import { WordTable } from '@quirekit/classic-table-model'
```

Use compatible versions available from your distribution source. This site uses the Alpha workspace. License labels come from package metadata; see [support and licensing](/en/support).

## Integration by editor

These snippets use an existing host element named element. The host owns container sizing and persistence; call instance.destroy() on teardown. Avoid duplicating preset capabilities and supply required host ports before installation.

### Classic

Use createClassicWordPreset for Word models, layout and product integration. Controls, flags, host services and file support follow this page. Full comment, revision and content-control authoring UI additionally requires Pro.

[createClassicWordPreset](/en/plugins/reference/create-classic-word-preset)

```ts
import { createClassicEditor } from '@quirekit/classic-editor'
import '@quirekit/classic-editor/styles.css'
import { createClassicWordDefaultDocument, createClassicWordPreset } from '@quirekit/classic-docx'
import '@quirekit/classic-docx/styles.css'

const instance = createClassicEditor({
  element,
  preset: createClassicWordPreset(),
  document: createClassicWordDefaultDocument(),
})
```

### Block

Use createBlockTableExtensions for table nodes and the table-only profile. Mount BlockTableMenu from @quirekit/block-table/vue in BlockEditor’s tools slot for table controls. Pagination, sections and headers/footers are not included.

[createBlockTableExtensions](/en/plugins/reference/create-block-table-extensions)

```ts
import { createBlockEditor } from '@quirekit/block-editor'
import '@quirekit/block-editor/styles.css'
import { createBlockTableExtensions } from '@quirekit/block-table'

const instance = createBlockEditor({
  element,
  extensions: [...createBlockTableExtensions()],
  content: { type: 'doc', content: [{ type: 'paragraph' }] },
})
```

## Configuration

This entry has no independent configuration fields. Set document attributes through domain commands; presets may install other configurable children.

## Commands and runtime

These commands are supplied directly by this extension. Availability depends on the installed schema, selection and protection policy; query editor.can() first.

| Command | Parameter signature |
| --- | --- |
| `addWordTableRow` | `addWordTableRow(options: AddWordTableRowCommandOptions)` |
| `addWordTableRows` | `addWordTableRows(options: AddWordTableRowsCommandOptions)` |
| `addWordTableColumns` | `addWordTableColumns(options: AddWordTableColumnsCommandOptions)` |
| `deleteWordTableRows` | `deleteWordTableRows(options?: SelectionBackedCommandOptions<DeleteWordTableRowsCommandOptions, "from" \| "to"> \| undefined)` |
| `addWordTableColumn` | `addWordTableColumn(options: AddWordTableColumnCommandOptions)` |
| `deleteWordTableColumns` | `deleteWordTableColumns(options?: SelectionBackedCommandOptions<DeleteWordTableColumnsCommandOptions, "from" \| "to"> \| undefined)` |
| `mergeWordTableCells` | `mergeWordTableCells(options?: SelectionBackedCommandOptions<MergeWordTableCellsCommandOptions, TableRectCoordinate> \| undefined)` |
| `splitWordTableCell` | `splitWordTableCell(options?: SelectionBackedCommandOptions<SplitWordTableCellCommandOptions, "rowIndex" \| "columnIndex"> \| undefined)` |
| `setWordTableAttrs` | `setWordTableAttrs(options: SetWordTableAttrsCommandOptions)` |
| `setWordTableColumnWidth` | `setWordTableColumnWidth(options: SetWordTableColumnWidthCommandOptions)` |
| `setWordTableRowHeight` | `setWordTableRowHeight(options: SetWordTableRowHeightCommandOptions)` |
| `distributeWordTableColumns` | `distributeWordTableColumns(options?: SelectionBackedCommandOptions<DistributeWordTableColumnsCommandOptions, "from" \| "to"> \| undefined)` |
| `distributeWordTableRows` | `distributeWordTableRows(options?: SelectionBackedCommandOptions<DistributeWordTableRowsCommandOptions, "from" \| "to"> \| undefined)` |
| `setWordTableCellMargin` | `setWordTableCellMargin(options: SelectionBackedCommandOptions<SetWordTableCellMarginCommandOptions, TableRectCoordinate>)` |
| `setWordTableCellAttrs` | `setWordTableCellAttrs(options: SelectionBackedCommandOptions<SetWordTableCellAttrsCommandOptions, TableRectCoordinate>)` |
| `setWordTableRowAttrs` | `setWordTableRowAttrs(options: SetWordTableRowAttrsCommandOptions)` |
| `setWordTableCellBorders` | `setWordTableCellBorders(options: SelectionBackedCommandOptions<SetWordTableCellBordersCommandOptions, TableRectCoordinate>)` |
| `setWordTableCellBorderFormat` | `setWordTableCellBorderFormat(options: SelectionBackedCommandOptions<SetWordTableCellBorderFormatCommandOptions, TableRectCoordinate>)` |
| `clearWordTableCellFormatting` | `clearWordTableCellFormatting(options?: SelectionBackedCommandOptions<ClearWordTableCellFormattingCommandOptions, TableRectCoordinate> \| undefined)` |

These are parameter signatures. See [commands and controls](/en/build/commands) to connect UI while retaining one transaction/history authority.

For DOCX import/export and tracked changes, use the same-named extension from the commercial `@quirekit/classic-table` package; it includes everything in this one.

## Other public exports

- `WordTable` · `@quirekit/classic-table`

## Next steps

Return to [all plugins](/en/plugins), or read [configuration](/en/plugins/configuration) to distinguish options, attributes and commands.

See [extension development](/en/build/extension) for custom capabilities and [Build a product](/en/build) for complete hosting.
