Cell Merge
Examples of merging cells with same values vertically.
Merge Entire Table
Specify mergeSameValues: true to merge cells with same values in all columns.
const output = await xlmake()
.sheet("Sales")
.table({
preset: "basic",
mergeSameValues: true,
columns: [
{ key: "category", label: "Category" },
{ key: "name", label: "Name" },
{ key: "price", label: "Price" },
],
data: [
{ category: "Food", name: "Apple", price: 100 },
{ category: "Food", name: "Orange", price: 80 },
{ category: "Electronics", name: "TV", price: 50000 },
{ category: "Electronics", name: "Fridge", price: 80000 },
],
})
.getNode();
Result:
| Category | Name | Price |
| Food | Apple | 100 |
| ↑ | Orange | 80 | ← "Food" merged
| Electronics | TV | 50000 |
| ↑ | Fridge | 80000 | ← "Electronics" merged
Merge by Column
To merge only specific columns, specify mergeSameValues in the column definition.
const output = await xlmake()
.sheet("Sales")
.table({
preset: "basic",
columns: [
{ key: "category", label: "Category", mergeSameValues: true }, // Merge this column only
{ key: "name", label: "Name" }, // No merge
{ key: "price", label: "Price" }, // No merge
],
data: [
{ category: "Food", name: "Apple", price: 100 },
{ category: "Food", name: "Orange", price: 80 },
{ category: "Electronics", name: "TV", price: 50000 },
{ category: "Electronics", name: "Fridge", price: 80000 },
],
})
.getNode();
Merge Multiple Columns
You can merge multiple columns independently.
const output = await xlmake()
.sheet("Sales")
.table({
preset: "basic",
columns: [
{ key: "region", label: "Region", mergeSameValues: true },
{ key: "category", label: "Category", mergeSameValues: true },
{ key: "name", label: "Name" },
{ key: "price", label: "Price" },
],
data: [
{ region: "Tokyo", category: "Food", name: "Apple", price: 100 },
{ region: "Tokyo", category: "Food", name: "Orange", price: 80 },
{ region: "Tokyo", category: "Electronics", name: "TV", price: 50000 },
{ region: "Osaka", category: "Food", name: "Banana", price: 120 },
{ region: "Osaka", category: "Food", name: "Grape", price: 300 },
],
})
.getNode();
Merged Cell Alignment
Cells merged with mergeSameValues are automatically top-aligned.
This places text at the top of the merged range for better readability.
// Merged cells are automatically top-aligned (vertical: "top")
.table({
mergeSameValues: true,
columns: [
{ key: "category", label: "Category" }, // Auto top-aligned when merged
{ key: "name", label: "Name" },
],
data: [...],
})
Related
- .table() API - mergeSameValues details
- Style API - align details