# NuiTable NuiTable can render table-like structured content on the buffer. **Examples** ```lua local NuiTable = require("nui.table") local tbl = NuiTable({ bufnr = bufnr, columns = { { align = "center", header = "Name", columns = { { accessor_key = "firstName", header = "First" }, { id = "lastName", accessor_fn = function(row) return row.lastName end, header = "Last", }, }, }, { align = "right", accessor_key = "age", cell = function(cell) return Text(tostring(cell.get_value()), "DiagnosticInfo") end, header = "Age", }, }, data = { { firstName = "John", lastName = "Doe", age = 42 }, { firstName = "Jane", lastName = "Doe", age = 27 }, }, }) tbl:render() ``` ## Options ### `bufnr` **Type:** `number` Id of the buffer where the table will be rendered. --- ### `ns_id` **Type:** `number` or `string` Namespace id (`number`) or name (`string`). --- ### `columns` **Type:** `NuiTable.ColumnDef[]` List of `NuiTable.ColumnDef` objects. --- ### `data` **Type:** `any[]` List of data items. ## Methods ### `tbl:get_cell` _Signature:_ `tbl:get_cell(position?: {integer, integer}) -> NuiTable.Cell | nil` **Parameters** | Name | Type | Description | | ---------- | ---------------------- | ------------------------------------- | | `position` | `{ integer, integer }` | `(row, col)` tuple relative to cursor | Returns the `NuiTable.Cell` if found. ### `tbl:refresh_cell` _Signature:_ `tbl:refresh_cell(cell: NuiTable.Cell) -> nil` Refreshes the `cell` on buffer. **Parameters** | Name | Type | Description | | ------ | --------------- | ----------- | | `cell` | `NuiTable.Cell` | cell | ### `tbl:render` _Signature:_ `tbl:render(linenr_start?: integer) -> nil` Renders the table on buffer. | Name | Type | Description | | -------------- | ----------------- | ----------------------------- | | `linenr_start` | `integer` / `nil` | start line number (1-indexed) | ## Wiki Page You can find additional documentation/examples/guides/tips-n-tricks in [nui.table wiki page](https://github.com/MunifTanjim/nui.nvim/wiki/nui.table).