本文データ構造

IDocumentBody

IDocumentBody は Univer Docs ドキュメントの本文フローを保存します。

実際のテキストは dataStream に保存され、スタイルや構造情報は別の配列に保存されます。それらはテキストのインデックスによって関連付けられます。

プロパティ

プロパティ型説明
dataStreamstring本文のプレーンテキストストリーム。段落、セクション、テーブル、カスタムブロックは特殊文字で表現されます。
textRuns?ITextRun[]インラインスタイル範囲。
paragraphs?IParagraph[]段落メタデータと段落スタイル。
sectionBreaks?ISectionBreak[]セクション区切りのメタデータ。
customBlocks?ICustomBlock[]プラグイン定義のブロックプレースホルダー。
tables?ICustomTable[]本文内のテーブルマーカー。テーブル定義は IDocumentData.tableSource に保存されます。
columnGroups?ICustomColumnGroup[]カラムグループマーカー。
blockRanges?IDocumentBlockRange[]callout、quote、code block などの構造化ブロック範囲。
customRanges?ICustomRange[]ハイパーリンク、フィールド、ブックマーク、コメント、mention、プラグイン定義範囲。
customDecorations?ICustomDecoration[]コメントハイライトなどの装飾範囲。
payloads?Record<string, string>コピー/ペースト時の一時データ。永続化されません。

dataStream

dataStream は本文テキストのソースです。通常、段落は \r\n で終わります。

TypeScript
const body: IDocumentBody = {  dataStream: 'Title\r\nHello Univer\r\n',  paragraphs: [    { startIndex: 5, paragraphId: 'p-title' },    { startIndex: 19, paragraphId: 'p-body' },  ],}

特殊文字

一部のドキュメント要素は dataStream 内の制御文字で表現され、レンダラーによって対応する要素に変換されます。

文字意味
\r\n段落区切り
\nセクション区切り
\fページ区切り
\vカラム区切り
\tタブ
\0ドキュメント終端
\bカスタムブロックプレースホルダー

テーブルやカスタム範囲も内部で制御文字を使用します。テーブル、リンク、コメント、ブロック機能を扱う場合は、制御文字を直接書くのではなく Facade API またはコマンドを使用してください。

IDocumentData との関係

IDocumentBody は本文フローのみを保存します。外部リソースは IDocumentData に保存されます。

  • tableSource はテーブル定義を保存します。
  • drawings は画像や描画オブジェクトを保存します。
  • headers と footers はそれぞれ独自の IDocumentBody を持ちます。
  • lists は段落の箇条書きが参照するリスト定義を保存します。
  • resources はプラグイン定義データを保存します。

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

© 2026 DreamNum Co., Ltd.