Comments

Legacy single-author cell notes with author + rich text + author color

Spreadsheet supports Excel's legacy comments model — single-author notes with rich text + author metadata, anchored to a single cell. These map to OOXML comments.xml on round-trip.

Excel 2016+ threaded comments (with replies and resolved state, stored in commentsThreaded.xml) are not yet supported.

Authoring a comment

A comment lives on CellData.note as plain text, or as a richer pointer via commentThreadId (reserved for the future threaded model). For the legacy single-author case, note is the field:

const cellData: CellData = {
  ue: { sv: "Q3 revenue" },
  fv: "Q3 revenue",
  note: "Includes the Atlas-2 contract — see slack #revenue for context.",
};

The renderer paints a small triangle marker in the cell's corner. Hovering shows the note.

Round-trip

  • XLSX: parsed from xl/comments<N>.xml, emitted on the way out. Author + creation timestamp preserved.

  • ODS: parsed from office:annotation children of the cell node.

Threading

Excel 2016 introduced threaded comments stored in xl/threadedComments/threadedComment<N>.xml — different file, different schema. These carry replies, resolved state, person IDs, and @mentions in the thread body.

Threading is currently a Tier-1 round-trip gap. Files that use threaded comments will:

  • Import: the legacy comment shim (comments.xml) is still read; threaded replies + resolved state are dropped.

  • Export: written as a flat legacy comment.

Track it on docs/getting-started/excel-google-sheet-compatibility.md under "Comments (threaded with replies)".

Mentions in comments

For @user mentions inside notes / comments, see Mentions. Mentions work on the live cell editor; persistence into the threaded-comments OOXML store is part of the same gap above.

Last updated