セルデータ構造

セル位置

Univer Sheets のセルデータは IWorksheetData オブジェクトの cellData フィールドに格納されており、セルの値、スタイル、タイプなどのすべてのセル情報が含まれています。

cellData の構造は以下の通りです

TypeScript
interface IWorksheetData {  cellData: {    // 最初の行    0: {      // 最初の列      0: { v: 'A1' }      // 2 番目の列      1: { v: 'B1' }    }    // 2 番目の行    1: {      // 最初の列      0: { v: 'A2' }      // 2 番目の列      1: { v: 'B2' }    }  }}

セルデータ

完全なセル情報は以下の通りです。

プロパティ説明
vセルの元の値
sセルスタイル ID またはスタイルオブジェクト
tセルタイプ
pリッチテキスト、Univer Docs でもある
f数式
si数式 ID
customカスタムフィールド

ICellData の各フィールドのタイプ情報を確認してください。

セルの元の値

cellData.v はセルの元の値を格納し、文字列または数値にすることができます。数式を持つセルの場合、v は数式の計算結果を格納します。

ここでは 2 つの異なるセル値を示します。

TypeScript
interface IWorksheetData {  cellData: {    0: {      0: { v: 'A1' }      1: { v: 1 }    }  }}

セルスタイル

cellData.s はセルのスタイル ID またはスタイルオブジェクトを格納します。

s が文字列の場合、スタイル ID を表します。Univer Sheets はスタイルの参照最適化をサポートしています。繰り返されるスタイルオブジェクトは IWorkbookData の styles フィールドに格納され、これは Map 構造で、各キーはスタイル ID、値はスタイルオブジェクトです。

透明度を伴う色値(例: rgba)の使用はできるだけ避けてください。そうしないと、編集状態を有効にしたときに、背景が下のセルの内容を透過してしまいます。

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

その後、セルスタイルに ID を格納してスタイルの再利用の目的を達成します。

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

s がオブジェクトの場合、完全なセルスタイルオブジェクト IStyleData を表します。

完全なスタイルフィールドは以下の通りです。

プロパティ説明
ffフォント
fsフォントサイズ
it斜体
bl太字
ul下線
st取り消し線
ol上線
bg背景色
bd境界線
clフォント色
va上付き文字または下付き文字
trテキスト回転
ht水平配置
vt垂直配置
tbオーバーフロー切り捨て
pdパディング
n数値フォーマット

IStyleData の各フィールドのタイプ情報を確認できます。

フォント

ff はフォント名を表す文字列です。

TypeScript
interface IStyleData {  ff: 'Arial' // フォント名は Arial}

フォントサイズ

fs は数値で、単位は pt です。

TypeScript
interface IStyleData {  fs: 12 // フォントサイズは 12 pt}

斜体

it はブール数値で、0 は斜体でない、1 は斜体を意味します。

TypeScript
interface IStyleData {  it: 1 // 斜体}

太字

bl はブール数値で、0 は太字でない、1 は太字を意味します。

TypeScript
interface IStyleData {  bl: 1 // 太字}

下線

ul は下線スタイルを表すオブジェクトです。

TypeScript
interface IStyleData {  ul: {    s: 1 // 下線を表示するかどうか    c: 0 // 色がフォント色に従うかどうか。`c` が 1(TRUE)の場合、cl は機能しません。デフォルト値は 1    cl: { // 下線の色      rgb: '#ff0000'    }    t: 0 // 下線のタイプ  }}

取り消し線

st は取り消し線スタイルを表すオブジェクトです。

TypeScript
interface IStyleData {  st: {    s: 1 // 取り消し線を表示するかどうか    c: 0 // 色がフォント色に従うかどうか。`c` が 1(TRUE)の場合、cl は機能しません。デフォルト値は 1    cl: { // 取り消し線の色      rgb: '#ff0000'    }    t: 0 // 取り消し線のタイプ  }}

上線

ol は上線スタイルを表すオブジェクトです。

TypeScript
interface IStyleData {  ol: {    s: 1 // 上線を表示するかどうか    c: 0 // 色がフォント色に従うかどうか。`c` が 1(TRUE)の場合、cl は機能しません。デフォルト値は 1    cl: { // 上線の色      rgb: '#ff0000'    }    t: 0 // 上線のタイプ  }}

背景色

bg は背景色を表すオブジェクトです。

TypeScript
interface IStyleData {  bg: {    rgb: '#ff0000' // 背景色は赤  }}

境界線

bd は境界線スタイルを表すオブジェクトです。

TypeScript
interface IStyleData {  bd: {    // 上境界線    t: {      s: 0 // 境界線スタイル      cl: { // 境界線の色        rgb: '#ff0000'      }    }    // 下境界線    b: {      s: 0 // 境界線スタイル      cl: { // 境界線の色        rgb: '#ff0000'      }    }    // 左境界線    l: {      s: 0 // 境界線スタイル      cl: { // 境界線の色        rgb: '#ff0000'      }    }    // 右境界線    r: {      s: 0 // 境界線スタイル      cl: { // 境界線の色        rgb: '#ff0000'      }    }  }}

フォント色

cl はフォント色を表すオブジェクトです。

TypeScript
interface IStyleData {  cl: {    rgb: '#ff0000' // フォント色は赤  }}

上付き文字または下付き文字

va は列挙数値で、1 は通常、2 は下付き文字、3 は上付き文字を意味します。

TypeScript
interface IStyleData {  va: 2 // 下付き文字}

テキスト回転

tr はテキスト回転を表すオブジェクトです。

TypeScript
interface IStyleData {  tr: {    a: 0 // テキスト回転角度    v: 0 // 垂直かどうか。1 は垂直、0 は水平を意味します。デフォルト値は 0。v が 1 の場合、a は無効  }}

水平配置

ht は列挙数値で、1 は左揃え、2 は中央揃え、3 は右揃えを意味します。

TypeScript
interface IStyleData {  ht: 1 // 左揃え}

垂直配置

vt は列挙数値で、1 は上揃え、2 は中央揃え、3 は下揃えを意味します。

TypeScript
interface IStyleData {  vt: 1 // 上揃え}

オーバーフロー切り捨て

tb は列挙数値で、1 はオーバーフロー、2 は切り捨て、3 は折り返しを意味します。

TypeScript
interface IStyleData {  tb: 1 // オーバーフロー}

パディング

pd はパディングを表すオブジェクトです。

TypeScript
interface IStyleData {  pd: {    t: 0 // 上パディング    b: 0 // 下パディング    l: 0 // 左パディング    r: 0 // 右パディング  }}

数値フォーマット

n はオブジェクトで、pattern フィールドは数値フォーマットを示します。数値フォーマットは文字列で、こちら を参照してください。

n が null または pattern が null の場合、一般フォーマットを示します。

TypeScript
import type { DEFAULT_TEXT_FORMAT_EXCEL } from '@univerjs/core'interface IStyleData {  n: {    pattern: DEFAULT_TEXT_FORMAT_EXCEL // テキストフォーマット  }}

0 で始まる数値や日付フォーマットに変換できる数値を入力した際に、セルがデフォルトで変換されないようにしたい

セルタイプ

cellData.t は列挙 CellValueType で、セルのタイプを表します。1 は文字列、2 は数値、3 はブール、4 は強制テキストを意味します。設定されていない場合、Univer が自動的に認識します。

セルがブールタイプの場合、cellData.v の値は 0 または 1 として格納され、0 は false、1 は true を意味します。

TypeScript
interface IWorksheetData {  cellData: {    0: {      0: {        v: 'A1'        t: 1 // 文字列      }      1: {        v: 1        t: 2 // 数値      }      2: {        v: 1 // TRUE        t: 3 // ブール      }      3: {        v: '012.0'        t: 4 // 強制テキスト      }    }  }}

disableForceStringAlert と disableForceStringMark を設定して、強制テキストの警告とマークを無効にできます。設定項目の場所は以下の通りです。

リッチテキスト

cellData.p はリッチテキストを表すオブジェクトであり、Univer Doc でもあります。IDocumentData について詳しく学んでください。

セルの p と v の両方が設定されている場合、p の内容のみが表示されます。

cellData.p.body.dataStream はリッチテキストの内容です。

数式

cellData.f は数式を表す文字列です。

TypeScript
interface IWorksheetData {  cellData: {    0: {      0: {        f: '=SUM(A1:B1)' // SUM 関数      }    }  }}

数式 ID

cellData.si は数式 ID を表す文字列です。Univer Sheets は数式の参照最適化をサポートしています。現在の数式がセル内で si と関連付けられた後、他のセルは si を通じて現在の数式を参照できます。si を持つセルの位置は参照セルの右下角にある必要があることに注意してください。そうでなければ XLSX にエクスポートする際にエラーが発生します。

実際の数式は Facade API range.getFormulas() を通じて取得できます。ルールは si に対応する数式 f を取得し、現在のセル位置から参照位置へのオフセットに基づいて実際の数式を計算することです。

TypeScript
interface IWorksheetData {  cellData: {    0: {      0: {        f: '=SUM(A1:B1)' // 合計数式        si: 'random_formula_id_1' // 現在の数式の ID      }      1: {        si: 'random_formula_id_1' // 計算時にこの ID に対応する数式を取得      }    }  }}

カスタムフィールド

cellData.custom はカスタムフィールドを表すオブジェクトです。JSON フォーマットに準拠する任意のデータを入れて、追加情報のカスタム保存を行うことができます。

custom データを更新すると、元の custom データが上書きされます。データを更新する際に元の custom データを保持する必要がある場合は、事前に custom データを取得し、新しいデータにマージしてから更新してください。

custom フィールドは一部の特殊なシナリオにのみ適しており、このフィールドに格納されたデータは任意のユーザー操作によって上書きまたは削除される可能性があります。注意して使用してください。

TypeScript
interface IWorksheetData {  cellData: {    0: {      0: {        custom: {          key: 'value'        }      }    }  }}

このガイドはいかがですか?

© 2026 DreamNum Co., Ltd.