Structure des données d'une cellule
Position d'une cellule
Dans Univer Sheets, les données des cellules sont stockées dans le champ cellData de l'objet IWorksheetData. Ce champ contient toutes les informations sur les cellules, comme leur valeur, leur style et leur type.
La structure de cellData est la suivante :
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' } } }}Données d'une cellule
Voici l'ensemble des informations d'une cellule.
| Propriété | Description |
|---|---|
| v | Valeur d'origine de la cellule |
| s | Identifiant de style ou objet de style de la cellule |
| t | Type de la cellule |
| p | Texte enrichi, également un 📝 document Univer Docs |
| f | Formule |
| si | Identifiant de formule |
| custom | Champ personnalisé |
Consultez les informations de type de chaque champ de ICellData.
Valeur d'origine d'une cellule
cellData.v stocke la valeur d'origine de la cellule, qui peut être une chaîne ou un nombre. Pour les cellules contenant une formule, v stocke le résultat du calcul de la formule.
Voici deux exemples de valeurs de cellule différentes.
interface IWorksheetData { cellData: { 0: { 0: { v: 'A1' } 1: { v: 1 } } }}Style d'une cellule
cellData.s stocke l'identifiant de style ou l'objet de style de la cellule.
Si s est une chaîne, elle représente un identifiant de style. Univer Sheets permet d'optimiser les références de styles. Les objets de style répétés sont stockés dans le champ styles de IWorkbookData. Ce champ est une structure Map dont chaque clé correspond à un identifiant de style et chaque valeur à l'objet de style associé.
Évitez d'utiliser des couleurs avec transparence, comme rgba. Sinon, lorsque le mode d'édition est activé, le contenu de la cellule sous-jacente apparaîtra à travers l'arrière-plan.
interface IWorkbookData { styles: { random_style_id_1: { fs: 12 bg: { rgb: '#ff0000' } } }}Stockez ensuite l'identifiant dans le style de la cellule afin de réutiliser ce style.
interface IWorksheetData { cellData: { 0: { 0: { v: 'A1' s: 'random_style_id_1' } 1: { v: 'B1' s: 'random_style_id_1' } } }}Si s est un objet, il représente un objet de style de cellule complet IStyleData.
Voici l'ensemble des champs de style.
| Propriété | Description |
|---|---|
| ff | Police |
| fs | Taille de police |
| it | Italique |
| bl | Gras |
| ul | Soulignement |
| st | Barré |
| ol | Trait supérieur |
| bg | Couleur d'arrière-plan |
| bd | Bordure |
| cl | Couleur de police |
| va | Exposant ou indice |
| tr | Rotation du texte |
| ht | Alignement horizontal |
| vt | Alignement vertical |
| tb | Gestion du dépassement du texte |
| pd | Marges internes |
| n | Format de nombre |
Vous pouvez consulter les informations de type de chaque champ de IStyleData.
Police
ff est une chaîne qui représente le nom de la police.
interface IStyleData { ff: 'Arial' // Font name is Arial}Taille de police
fs est un nombre exprimé en pt.
interface IStyleData { fs: 12 // Font size is 12 pt}Italique
it est un nombre booléen : 0 signifie que le texte n'est pas en italique et 1 qu'il l'est.
interface IStyleData { it: 1 // Italic}Gras
bl est un nombre booléen : 0 signifie que le texte n'est pas en gras et 1 qu'il l'est.
interface IStyleData { bl: 1 // Bold}Soulignement
ul est un objet qui représente le style de soulignement.
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 }}Barré
st est un objet qui représente le style barré.
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 }}Trait supérieur
ol est un objet qui représente le style du trait supérieur.
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 }}Couleur d'arrière-plan
bg est un objet qui représente la couleur d'arrière-plan.
interface IStyleData { bg: { rgb: '#ff0000' // Background color is red }}Bordure
bd est un objet qui représente le style de bordure.
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' } } }}Couleur de police
cl est un objet qui représente la couleur de police.
interface IStyleData { cl: { rgb: '#ff0000' // Font color is red }}Exposant ou indice
va est un nombre d'énumération : 1 correspond au texte normal, 2 à l'indice et 3 à l'exposant.
interface IStyleData { va: 2 // Subscript}Rotation du texte
tr est un objet qui représente la rotation du texte.
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 }}Alignement horizontal
ht est un nombre d'énumération : 1 correspond à l'alignement à gauche, 2 à l'alignement centré et 3 à l'alignement à droite.
interface IStyleData { ht: 1 // Left alignment}Alignement vertical
vt est un nombre d'énumération : 1 correspond à l'alignement en haut, 2 à l'alignement centré et 3 à l'alignement en bas.
interface IStyleData { vt: 1 // Top alignment}Gestion du dépassement du texte
tb est un nombre d'énumération : 1 autorise le dépassement, 2 tronque le texte et 3 active le retour à la ligne.
interface IStyleData { tb: 1 // Overflow}Marges internes
pd est un objet qui représente les marges internes.
interface IStyleData { pd: { t: 0 // Top padding b: 0 // Bottom paddingAdd commentMore actions l: 0 // Left padding r: 0 // Right padding }}Format de nombre
n est un objet dont le champ pattern indique le format de nombre. Le format de nombre est une chaîne. Pour en savoir plus, consultez cette page。
Si n est null ou si pattern est null, le format général est utilisé.
import type { DEFAULT_TEXT_FORMAT_EXCEL } from '@univerjs/core'interface IStyleData { n: { pattern: DEFAULT_TEXT_FORMAT_EXCEL // text format }}Type de cellule
cellData.t est une énumération CellValueType qui représente le type de la cellule. 1 correspond à une chaîne, 2 à un nombre, 3 à un booléen et 4 à du texte forcé. Si ce champ n'est pas défini, Univer reconnaît automatiquement le type.
Si la cellule est de type booléen, la valeur de cellData.v est stockée sous la forme 0 ou 1 : 0 signifie faux et 1 vrai.
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 } } }}Vous pouvez activer ou désactiver l'alerte et le marqueur de texte forcé à l'aide de disableForceStringAlert et de disableForceStringMark. Consultez l'emplacement de cette configuration :
Texte enrichi
cellData.p est un objet qui représente du texte enrichi et constitue également un document Univer Docs. En savoir plus sur IDocumentData.
Lorsque p et v sont tous deux définis pour une cellule, seul le contenu de p est affiché.
cellData.p.body.dataStream contient le texte enrichi.
Formule
cellData.f est une chaîne qui représente une formule.
interface IWorksheetData { cellData: { 0: { 0: { f: '=SUM(A1:B1)' // function SUM } } }}Identifiant de formule
cellData.si est une chaîne qui représente l'identifiant de la formule. Univer Sheets permet d'optimiser les références de formules. Après avoir associé la formule actuelle à si dans une cellule, d'autres cellules peuvent y faire référence à l'aide de si. Notez que la cellule qui contient si doit se trouver en bas à droite de la cellule de référence. Sinon, une erreur se produit lors de l'exportation au format XLSX.
La formule réelle peut être obtenue avec l'API Facade range.getFormulas(). Le principe consiste à obtenir la formule f associée à si, puis à calculer la formule réelle en fonction du décalage entre la position de la cellule actuelle et celle de la cellule de référence.
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 } } }}Champ personnalisé
cellData.custom est un objet qui représente un champ personnalisé. Vous pouvez y placer toute donnée conforme au format JSON afin de stocker des informations supplémentaires.
La mise à jour des données custom remplace les données custom existantes. Si vous devez conserver les données custom existantes lors d'une mise à jour, récupérez au préalable les données custom et fusionnez-les avec les nouvelles données avant d'effectuer la mise à jour.
Le champ custom ne convient qu'à certains cas particuliers. Les données qu'il contient peuvent être remplacées ou supprimées par n'importe quelle opération utilisateur. Utilisez-le avec précaution.
interface IWorksheetData { cellData: { 0: { 0: { custom: { key: 'value' } } } }}Que pensez-vous de ce guide ?