# Estructura de datos de celda

- Human documentation: [https://docs.univer.ai/es-ES/guides/sheets/model/cell-data](https://docs.univer.ai/es-ES/guides/sheets/model/cell-data)

- Agent Markdown: [https://docs.univer.ai/es-ES/guides/sheets/model/cell-data.md](https://docs.univer.ai/es-ES/guides/sheets/model/cell-data.md)

- Requested language: `es-ES`

- Content language: `es-ES`

- Documentation version: `1.2.0`

- Source: [sheets/model/cell-data.es-ES.mdx](https://github.com/dream-num/documentation/blob/dev/content/guides/sheets/model/cell-data.es-ES.mdx)

---

## Posición de celda

Los datos de celda en Univer Sheets se almacenan en el campo [cellData](https://docs.univer.ai/es-ES/reference/types/worksheet-data.md#celldata) del objeto [IWorksheetData](https://docs.univer.ai/es-ES/reference/types/worksheet-data.md), que contiene todas las celdas. información como valor de celda, estilo, tipo, etc.

La estructura de cellData es la siguiente

```typescript
interface IWorksheetData {
  cellData: {
    // first row
    0: {
      // first column
      0: { v: 'A1' }
      // second column
      1: { v: 'B1' }
    }
    // second row
    1: {
      // first column
      0: { v: 'A2' }
      // second column
      1: { v: 'B2' }
    }
  }
}
```

## Datos de celda

La información completa de la celda es la siguiente.

| Propiedad | Descripción                               |
| --------- | ----------------------------------------- |
| v         | Valor original de la celda                |
| s         | Id. de estilo de celda u objeto de estilo |
| t         | Tipo de celda                             |
| p         | Texto enriquecido, también 📝 Univer Docs |
| f         | Formula                                   |
| si        | Id. de fórmula                            |
| custom    | Campo personalizado                       |

Consulte la información de tipo de cada campo de [ICellData](https://docs.univer.ai/es-ES/reference/types/cell-data.md).

### Valor original de la celda

`cellData.v` almacena el valor original de la celda, que puede ser una cadena o un número. Para celdas con fórmulas, `v` almacena el resultado del cálculo de la fórmula.

Aquí mostramos dos valores de celda diferentes.

```typescript
interface IWorksheetData {
  cellData: {
    0: {
      0: { v: 'A1' }
      1: { v: 1 }
    }
  }
}
```

### Estilo de celda

`cellData.s` almacena la identificación de estilo o el objeto de estilo de la celda.

Si `s` es una cadena, representa una identificación de estilo. Univer Sheets admite la optimización de referencias para estilos. Los objetos de estilo repetidos se almacenan en el campo [estilos](https://docs.univer.ai/es-ES/reference/types/workbook-data.md#styles) de IWorkbookData, que es una estructura de mapa, cada clave es la identificación del estilo y el valor es el objeto de estilo.

> [!WARNING]
> Evite usar valores de color con transparencia (como rgba), de lo contrario, el fondo mostrará el contenido de la celda subyacente cuando se active el estado de edición.

```typescript
interface IWorkbookData {
  styles: {
    random_style_id_1: {
      fs: 12
      bg: {
        rgb: '#ff0000'
      }
    }
  }
}
```

Luego almacene la identificación en el estilo de celda para lograr el propósito del estilo. reutilizar.

```typescript
interface IWorksheetData {
  cellData: {
    0: {
      0: {
        v: 'A1'
        s: 'random_style_id_1'
      }
      1: {
        v: 'B1'
        s: 'random_style_id_1'
      }
    }
  }
}
```

Si `s` es un objeto, representa un objeto de estilo de celda completo [IStyleData](https://docs.univer.ai/es-ES/reference/types/style-data.md).

El campo de estilo completo es el siguiente.

| Propiedad | Descripción             |
| --------- | ----------------------- |
| ff        | Font                    |
| fs        | Tamaño de fuente        |
| it        | Italic                  |
| bl        | Bold                    |
| ul        | Underline               |
| st        | Strikethrough           |
| ol        | Overline                |
| bg        | Fondo color             |
| bd        | Border                  |
| cl        | Color de fuente         |
| va        | Superíndice o subíndice |
| tr        | Rotación de texto       |
| ht        | Alineación horizontal   |
| vt        | Alineación vertical     |
| tb        | Truncar desbordamiento  |
| pd        | Padding                 |
| n         | Formato de números      |

Puede consultar la información de tipo de cada campo de [IStyleData](https://docs.univer.ai/es-ES/reference/types/style-data.md).

#### Fuente

`ff` es una cadena que representa el nombre de la fuente.

```typescript
interface IStyleData {
  ff: 'Arial' // Font name is Arial
}
```

#### Tamaño de fuente

`fs` es un número, la unidad es **pt**.

```typescript
interface IStyleData {
  fs: 12 // Font size is 12 pt
}
```

#### Cursiva

`it` es un número booleano, `0` significa no cursiva, `1` significa cursiva.

```typescript
interface IStyleData {
  it: 1 // Italic
}
```

#### Negrita

`bl` es un número booleano, `0` significa no negrita, `1` significa negrita.

```typescript
interface IStyleData {
  bl: 1 // Bold
}
```

#### Subrayado

`ul` es un objeto, representa el estilo subrayado.

```typescript
interface IStyleData {
  ul: {
    s: 1 // Whether to show underline
    c: 0 // Whether the color follows the font color. When `c` is 1 (TRUE), cl does not work. The default value is 1
    cl: { // Underline color
      rgb: '#ff0000'
    }
    t: 0 // Underline type
  }
}
```

#### Tachado

`st` es un objeto, representa el estilo tachado.

```typescript
interface IStyleData {
  st: {
    s: 1 // Whether to show strikethrough
    c: 0 // Whether the color follows the font color. When `c` is 1 (TRUE), cl does not work. The default value is 1
    cl: { // Strikethrough color
      rgb: '#ff0000'
    }
    t: 0 // Strikethrough type
  }
}
```

#### Sobrelínea

`ol` es un objeto, representa estilo de sobrelínea.

```typescript
interface IStyleData {
  ol: {
    s: 1 // Whether to show overline
    c: 0 // Whether the color follows the font color. When `c` is 1 (TRUE), cl does not work. The default value is 1
    cl: { // Overline color
      rgb: '#ff0000'
    }
    t: 0 // Overline type
  }
}
```

#### Color de fondo

`bg` es un objeto, representa el color de fondo.

```typescript
interface IStyleData {
  bg: {
    rgb: '#ff0000' // Background color is red
  }
}
```

#### Borde

`bd` es un objeto, representa el estilo de borde.

```typescript
interface IStyleData {
  bd: {
    // Top border
    t: {
      s: 0 // Border style
      cl: { // Border color
        rgb: '#ff0000'
      }
    }
    // Bottom border
    b: {
      s: 0 // Border style
      cl: { // Border color
        rgb: '#ff0000'
      }
    }
    // Left border
    l: {
      s: 0 // Border style
      cl: { // Border color
        rgb: '#ff0000'
      }
    }
    // Right border
    r: {
      s: 0 // Border style
      cl: { // Border color
        rgb: '#ff0000'
      }
    }
  }
}
```

#### Color de fuente

`cl` es un objeto, representa el color de fuente.

```typescript
interface IStyleData {
  cl: {
    rgb: '#ff0000' // Font color is red
  }
}
```

#### Superíndice o Subíndice

`va` es un número de enumeración, `1` significa normal, `2` significa subíndice, `3` significa superíndice.

```typescript
interface IStyleData {
  va: 2 // Subscript
}
```

#### Rotación de texto

`tr` es un objeto, representa texto rotación.

```typescript
interface IStyleData {
  tr: {
    a: 0 // Text rotation angle
    v: 0 // Whether it is vertical. 1 means vertical, 0 means horizontal. The default value is 0. When v is 1, a is invalid
  }
}
```

#### Alineación horizontal

`ht` es un número de enumeración, `1` significa alineación a la izquierda, `2` significa centro, `3` significa alineación a la derecha.

```typescript
interface IStyleData {
  ht: 1 // Left alignment
}
```

#### Vertical Alineación

`vt` es un número de enumeración, `1` significa alineación superior, `2` significa centro, `3` significa alineación inferior.

```typescript
interface IStyleData {
  vt: 1 // Top alignment
}
```

#### Truncar desbordamiento

`tb` es un número de enumeración, `1` significa desbordamiento, `2` significa truncar, `3` significa ajuste.

```typescript
interface IStyleData {
  tb: 1 // Overflow
}
```

#### Relleno

`pd` es un objeto, representa padding.

```typescript
interface IStyleData {
  pd: {
    t: 0 // Top padding
    b: 0 // Bottom paddingAdd commentMore actions
    l: 0 // Left padding
    r: 0 // Right padding
  }
}
```

#### Formato de número

`n` es un objeto. El campo `pattern` indica el formato del número. El formato del número es una cadena, consulte [aquí](https://support.microsoft.com/en-us/office/number-format-codes-5026bbd6-04bc-48cd-bf33-80f18b4eae68)。

`n` es `null` o `pattern` es `null`, indica el formato general.

```typescript
import type { DEFAULT_TEXT_FORMAT_EXCEL } from '@univerjs/core'

interface IStyleData {
  n: {
    pattern: DEFAULT_TEXT_FORMAT_EXCEL // text format
  }
}
```

[No quiero que la celda se convierta por predeterminado al ingresar un número que comienza con 0 o un número que se puede convertir a un formato de fecha](https://docs.univer.ai/es-ES/guides/sheets/features/core/numfmt.md#usage)

### Tipo de celda

`cellData.t` es una enumeración [CellValueType](https://docs.univer.ai/es-ES/reference/enums/cell-value-type.md), representa el tipo de celda. `1` significa cadena, `2` significa número, `3` significa booleano, `4` significa texto forzado. Univer lo reconocerá automáticamente si no está configurado.

Si la celda es de tipo booleano, el valor de `cellData.v` se almacena como `0` o `1`, `0` significa falso, `1` significa verdadero.

```typescript
interface IWorksheetData {
  cellData: {
    0: {
      0: {
        v: 'A1'
        t: 1 // String
      }
      1: {
        v: 1
        t: 2 // Number
      }
      2: {
        v: 1 // TRUE
        t: 3 // Boolean
      }
      3: {
        v: '012.0'
        t: 4 // Force text
      }
    }
  }
}
```

Tú Puede controlar si se habilita la alerta de texto forzado y la marca configurando `disableForceStringAlert` y `disableForceStringMark`. Vea la ubicación de configuración:

* [Modo preestablecido](https://docs.univer.ai/es-ES/guides/sheets/features/core.md#univerjspreset-sheets-core)
* [Modo complemento](https://docs.univer.ai/es-ES/guides/sheets/features/core.md#univerjssheets-ui)

### Texto enriquecido

`cellData.p` es un objeto que representa texto enriquecido y también es un Univer Doc. Obtenga más información sobre [IDocumentData](https://docs.univer.ai/es-ES/reference/types/document-data.md).

> [!NOTE]
> Cuando se configuran las celdas `p` y `v`, solo se mostrará el contenido de `p`.

`cellData.p.body.dataStream` es el contenido enriquecido texto.

### Fórmula

`cellData.f` es una cadena que representa una fórmula.

```typescript
interface IWorksheetData {
  cellData: {
    0: {
      0: {
        f: '=SUM(A1:B1)' // function SUM
      }
    }
  }
}
```

### ID de fórmula

`cellData.si` es una cadena que representa el ID de fórmula. Univer Sheets admite la optimización de referencias para fórmulas. Después de que la fórmula actual esté asociada con `si` en la celda, otras celdas pueden hacer referencia a la fórmula actual a través de `si`. Tenga en cuenta que la posición de la celda con `si` debe estar en la esquina inferior derecha de la celda de referencia; de lo contrario, se producirá un error al exportar a XLSX.

La fórmula real se puede obtener a través de la API de Facade `range.getFormulas()`. La regla es obtener la fórmula `f` correspondiente a `si` y luego calcular la fórmula real en función del desplazamiento desde la posición actual de la celda hasta la posición de referencia.

```typescript
interface IWorksheetData {
  cellData: {
    0: {
      0: {
        f: '=SUM(A1:B1)' // Sum formula
        si: 'random_formula_id_1' // ID of the current formula
      }
      1: {
        si: 'random_formula_id_1' // Take the formula corresponding to this ID during calculation
      }
    }
  }
}
```

### Campo personalizado

`cellData.custom` es un objeto que representa un campo personalizado. Puede colocar en él cualquier dato que cumpla con el formato JSON para personalizar el almacenamiento de información adicional.

La actualización de los datos `custom` sobrescribirá los datos `custom` originales. Si necesita conservar los datos `custom` originales al actualizar los datos, obtenga los datos `custom` con anticipación y combínelos en datos nuevos antes de actualizar.

> [!WARNING]
> El campo `custom` solo es adecuado para algunos escenarios especiales, y los datos almacenados en este campo pueden sobrescribirse o eliminarse mediante cualquier operación del usuario. Úselo con precaución.

```typescript
interface IWorksheetData {
  cellData: {
    0: {
      0: {
        custom: {
          key: 'value'
        }
      }
    }
  }
}
```
