5.2.0 — 2026-10-22
追加
| 領域 | 内容 |
|---|---|
| 描画 | WinForms の Direct2D 描画(Renderer = GridRenderer.Direct2D)。GPU で描画し、文字は DirectWrite で組む。スクロール時の全面再描画は GDI+ の約 3.5 倍。セル内エディタ・自動調整・はみ出し表示も同じ方式で計測する。使えない環境では GDI+ のまま(ActiveRenderer)。ネイティブ DLL(x64 / x86)をパッケージに同梱 |
| 描画 | WinForms の RenderToBitmap — 選択中の描画方式のまま、ウィンドウなしで画像に描く |
| XLSX | 共有数式(t="shared")を読み込み時に展開し、各セルが自分の数式を持つようにした(保存は通常の数式として書く) |
| 数値書式 | 経過時間 [h] [mm] [ss]、ロケールタグの通貨記号([$¥-411] など)、リテラルで区切った桁グループ(000-0000 など)、mmmmm(月の頭文字) |
改善
| 領域 | 内容 |
|---|---|
| 性能 | WPF の描画を高速化。値の変わらないセルの文字を毎フレーム組み直さないようにした(1400×900 のスクロールで、1 フレームの UI スレッドの時間が約 10 ms → 約 1.5 ms) |
| 性能 | Avalonia の描画を同じ方法で高速化(100 行 × 20 列の画面で 1 フレーム 25.7 ms → 4.9 ms) |
| 性能 | Direct2D と WPF で、毎フレーム変わる数値の描画を高速化。書式なし(General)の数値は、列幅に収まる桁数を探すたびに文字を組んでいた。数字だけの文字列は、フォントごとの文字幅の表から幅を求めるようにした(2560×1440 で見えている 1,160 セルが毎フレームすべて変わる場合、Direct2D 24.9 ms → 9.1 ms、WPF 45.0 ms → 27.4 ms) |
| 性能 | 結合セルやセル型を多く持つシートで、描画のコストがシート全体の件数に比例していた。表示している範囲の分だけになった |
| 性能 | シートが複数あり数式の無いブックで、値の書き込みを高速化(3 シート × 200 万セルで 48.6 ms → 22.4 ms) |
| 性能 | 数式の多いブックで、全体の再計算(読み込みの終了・並べ替え・元に戻す)の時間が数式の数の 2 乗で増えていたのを解消した |
| 性能 | 長い文字列のセルで、クリックした位置からキャレットを求める処理が文字数の 2 乗で遅くなっていた(32,767 文字の行では十秒以上止まることがあった) |
修正
| 領域 | 内容 |
|---|---|
| 表示 | 列幅に収まらない数値が隣のセルにはみ出していた。Excel と同じく、書式なしの数値は収まる桁まで丸め(整数部も入らなければ指数表記)、書式付きは #### を表示する |
| 表示 | 起点が画面のペインの外にある結合セルが、見えている部分で空白になっていた(上端を越えてスクロールした縦の結合、固定した列・行の境界をまたぐ結合) |
| WinForms | RenderTo / RenderFrame で同じ Graphics に何度も描くと倍率が累積し、150% では数十回で OverflowException になっていた |
| 入力規則 | 仮想化して開いたブック(XlsxReader.OpenVirtual)で、まだ表示していないシート(「選択肢」シートなど)や画面外の行を選択肢の元にするリストの入力規則が、選択肢なしになっていた。▼ を押しても一覧が開かず、どの値も規則に合わないため編集を確定できなかった |
| 仮想化 | 仮想化して開いたブックで、並べ替え・元に戻す・複数範囲のコピー・すべて置換が、まだ読み込んでいない行を空として扱い、並べ替えた値や置換した値が後で読み込まれた行に上書きされたり、元に戻すとファイルの値が消えたりしていた。起点が画面より上にある結合セルが空で描かれていた。いずれも必要な行を先に読み込む。数式・条件付き書式の集計・フィルター・行や列の挿入削除は、まだ読み込んでいない行を見ないため、編集の前に MaterializeAll() を呼ぶ(大量データ) |
| 表示 | セルに収まらない文字(隣のセルではみ出しが止まった文字、結合セルの文字)が「…」で省略されていた。Excel と同じく、配置を保ったままセルの端で切る(左揃えは先頭、右揃えは末尾、中央揃えは中央が見える)。WinForms(GDI+ / Direct2D)・WPF・Avalonia・PDF のすべて |
| 入力規則 | エラー表示をオフにした規則(ShowErrorMessage = false、xlsx の showErrorMessage なし)で、規則に合わない値が何も表示されずに拒否され、Esc でしか編集を抜けられなかった。Excel と同じく、合わない値もそのまま入力する |
| WinForms | ドロップダウン型セルとリストの入力規則の一覧が、グリッドの端で切れて一部しか見えないことがあった。WPF / Avalonia と同じくポップアップで表示し、画面の下に入らないときはセルの上に開く |
| 表示 | 結合セルの中に、結合前の各セルの罫線が格子のように出ていた(xlsx では結合範囲の各セルが罫線を持っていることが多い)。Excel と同じく、結合セルは外周の罫線だけを描く。PDF・印刷も同じ |
| XLSX | 読み込んだブックで値を編集しても、それを参照する数式(同じシート・別シートとも)が再計算されなかった。読み込みの最後に数式の依存関係を登録する(表示はファイルのキャッシュ値のまま)。仮想化して開いたブックは MaterializeAll() の後に登録する |
| XLSX | 読み込み: 組み込みの書式 ID 41〜43(桁区切り・会計)を解決する。r 属性の無い行を前の行の次として読む。ISO 8601 の日付セル(t="d")を読む。重なった結合セルがあってもブックを開ける。paperSize の無い <pageSetup> は Letter(OOXML の既定)、色の無い(自動の)フォントは黒、幅 0 の列は非表示の列、中太の破線(mediumDashed など)は太さ 2 の破線として読む |
| XLSX | 保存: 2007 より新しい関数を _xlfn. 付きで書き出す。_xHHHH_ のエスケープを読み書きし、制御文字を含むセルでも保存できる。入力規則のリストの候補に含まれる " をエスケープする。循環参照のセルは Excel と同じくキャッシュ値 0 で書き出す。値のない書式付きのセル(塗った見出し、先に書式を整えた入力欄)と、結果をキャッシュしていない数式が保存で失われていた。値のない書式付きのセルは reogrid-json にも保存する |
| 仮想化 | 仮想化して開いたブックで、既定より低い行のシートを開いた直後、画面の下が次の再描画まで空白になっていた。行の高さと非表示は開いた時点から反映する。数式の検索で、後から読み込んだ行の数式を見落としていた。ブックを閉じた直後の再描画で、まだ表示していないシートが例外になっていた |
| 数式 | 計算結果を Excel に合わせた。空セルを参照した数式の結果は 0。0^0 は #NUM!、0^-1 は #DIV/0!、double の範囲を超える結果は #NUM!。数式の最後の加減算の桁落ちは 0(=924081.39+3604900.09-759790.51-3769190.97 が 0 になる)。ROUND 系と CEILING FLOOR MROUND の丸め。数学関数の NaN・∞ はエラー値。範囲外のシリアル値を渡した日付関数は #NUM! |
| 数式 | 関数の引数と検索の規則を Excel に合わせた。VLOOKUP HLOOKUP MATCH XLOOKUP INDEX の検索。COUNTIF 系の条件は別の型の値に一致しない。COUNT は直接書いた論理値と数値の文字列も数える。AND OR XOR は範囲を引数に取れる。範囲を取る引数がエラーなら、そのエラーを返す。SEARCH はワイルドカードを使い、PROPER は Excel と同じ語の区切りで大文字にする。ワイルドカードの ~ でエスケープした文字が何にでも一致していた。LEFT RIGHT SUBSTITUTE CHAR ISEVEN ISODD の引数の扱い |
| 数式 | 自分自身のセルを読む数式(A1 に入れた =A1+1 など)を循環参照(#CIRCULAR!)として検出する。_xlfn. 付きの関数名を本来の関数として解決する。範囲を削除して壊れた名前を使う数式は、#NAME? ではなく #REF! を返す。大文字小文字だけのシート名の変更でも、参照のシート名を書き換える。行・列の削除で、詰めてきた数式の式文字列が消えることがあった。長い演算子の連鎖や、RANDBETWEEN REPT の端の引数で例外・メモリ不足になっていた |
| 数値書式 | 文字列セクション(@・4 番目のセクション)、小数点の直前のカンマ(1,000 単位の縮小)、色と条件の角括弧の順序、空の負数セクション(負の値を表示しない)を Excel と同じに扱う。小数は有効 15 桁の値で丸める。書式なしで負のゼロを -0 と表示していた。明示の General や @ の書式を持つ数値が、列幅に収まらないと #### になっていた(書式なしと同じく丸める) |
| 入力 | セル内エディタと数式バーで、50% は 0.5(% の書式付き)、2026/10/21・2026-10-21(時刻付きも可)は日付、13:45 は時刻として入力する。先頭の ' は文字列にする印として扱い、保存しない。文字列書式(@)のセルは打ったとおりの文字列で保存する。TRUE / FALSE はどの入力経路でも真偽値、NaN Infinity 1e400 は文字列になる。SetObjectValue に渡した float を書いたとおりの値で保存する(0.1f が 0.100000001490116 になっていた) |
| 編集 | ClearCell(Delete キー・内容のクリア・切り取りの元)で、セルの塗りや太字まで消えていた。Excel の「数式と値のクリア」と同じく、値と数式だけを消して書式を残す |
| 編集 | セル内エディタで、サロゲートペア(絵文字など)を 1 文字として扱う。数式の参照枠を動かしても絶対参照の $ を保つ。数式の編集中、別シートを指す参照に編集中のシートの枠が付いていた。文字を編集した後も単語単位のドラッグ選択が続いていた。ちょうど空白の手前まで収まる行で、最後の単語が次の行へ送られていた |
| 選択 | 矢印キーと Shift+矢印キーが、非表示の行・列で止まっていた |
| 行・列 | 行・列の挿入・削除で、値のない書式だけのセル、オートフィルターの列ごとの条件、条件付き書式の数式ルールの参照も一緒に動かす。すべての行(列)を削除すると 0 行のシートになって落ちていた。Excel と同じく大きさを保って空にする。負の位置・件数は何も変える前に ArgumentOutOfRangeException にする。列を挿入して 16,384 列を超えたシートで、罫線や結合セルが別の位置に描かれることがあった。列を削除して固定列だけが残ったシートで、描画が例外になっていた |
| 元に戻す | 行・列の削除を元に戻すと、オートフィルターの範囲・条件・隠した行と、削除で消えたアウトライン(グループ)も元どおりにする。シートの端にかかる貼り付けで、履歴の記録が例外になっていた |
| フィルター | オートフィルターが隠した行を、使用範囲の外にあるときやフィルターを外したときも必ず表示に戻す。条件フィルターの 100% のようなパーセントの値を数値として比べる |
| 条件付き書式 | 上位/下位・平均・カラースケール・データバー・アイコンセットは数値のセルだけを対象にする。規則を削除すると、後ろの規則が別の規則の統計で判定されていた |
| 結合 | 結合で消える数式セルを数式から外し、参照元を再計算する。シートの外にはみ出す範囲の結合と、既存の結合を切る複数範囲の結合は、何も変えずに拒否する。空の結合セルをコピーして貼り付けても結合を保つ |
| オートフィル | 値と数式が混ざった列でも、数式の参照を貼り付け先に合わせてずらす。時刻だけの書式のセルは 1 時間ずつ進める(Excel と同じ)。シートの端を越える範囲は端まで埋める。二方向以上に広がる範囲では何も書かない |
| アウトライン | 深すぎて追加を拒否したグループで、既存のグループまで失われていた。解除した後、残りのグループの段を詰め直す。シートの外にはみ出すグループは作らない |
| クリップボード | シートの外にかかる範囲のコピーと、シートの外への貼り付けで例外になっていた |
| ワークシート | 空のシート名と、大文字小文字だけ違う重複したシート名を拒否する。負の行・列番号と、負・NaN・無限大の行高・列幅は ArgumentOutOfRangeException にする(xlsx と reogrid-json の読み込みでは、不正な値を読み飛ばす) |
5.1.0 — 2026-10-16
追加
| 領域 | 内容 |
|---|---|
| 入力・保護 | データの入力規則、セルのメモ、シート保護(セル単位のロック) |
| データ | 検索/置換、複数範囲の選択 |
| テーブル | Excel の「テーブルとして書式設定」(テーブル)。組込 60 スタイル、縞(行・列)と先頭列・最終列の強調、集計行の色分け |
| スタイル | 交互行スタイル、テキストの回転・縦書き・インデントの描画、範囲へのスタイル適用 API(行と列が交差するセルは後から適用した方が勝つ。Excel と同じ) |
| 数値書式 | 和暦(元号)・分数・指数表記 |
| 数式 | 149 関数(27 追加)。SUBTOTAL AGGREGATE XLOOKUP XMATCH INDIRECT ADDRESS WORKDAY NETWORKDAYS WEEKNUM JIS ASC ほか(関数一覧) |
| 印刷 | 印刷タイトル、ヘッダー・フッター |
| 日本語フォントは使った文字だけを埋め込む(日本語を含む PDF が約 4 MB から数十 KB に)。日本語の太字・斜体を Excel と同じく合成して出力 | |
| XLSX | 列幅を、画面で測った標準フォントの数字幅で換算する XlsxColumnWidths.MaxDigitWidthMeasurer。WinForms では GdiTextMetrics.MaxDigitWidth、WPF・Avalonia では内蔵の表を画面の DPI で引く XlsxColumnWidths.ExcelMaxDigitWidth を渡すと、開いたブックの列が同じ画面の Excel と同じ幅になる |
| 描画 | EastAsianText — セルのフォントに無い日本語などの扱いを、独自の描画層でも組込の 3 つと揃えるための規則 |
| 保存 | ウィンドウ枠の固定・表示倍率・非表示シート・タブ色、ページ設定、画像を reogrid-json に保存。XLSX でオートフィルタ・シート保護・入力規則・メモ・テーブル・表示状態を往復 |
| ライセンス | 開発端末のライセンス認証(アクティベーション)を導入。新たに発行する Professional のキーは、1 本につき開発端末 1 台に割り当てる。発行済みのキーはそのまま使える。開発環境で ReoGrid を実行するにはライセンスキーによる認証が必要で、キーはカスタマーポータルからダウンロードできる |
修正
| 領域 | 内容 |
|---|---|
| XLSX | Excel で作ったファイルを開いて何も変えずに保存すると、列幅が変わっていた(既定の列が太くなる、手で決めた幅が 1px ずれる) |
| 書式 | 使用範囲の外のセルに罫線・数値書式を設定できなかった |
| 編集 | 色を塗ったセルでも、編集中はエディタが白で塗られていた |
| 表示 | 高さの低い行で、行ヘッダーの番号が隣の行と重なっていた |
| XLSX | 大きなファイル向けの遅延読み込み(OpenVirtual)で、画像・メモ・テーブル・条件付き書式・入力規則・オートフィルタ・シート保護・ページ設定・ヘッダー/フッターが読み込まれず、そのまま保存すると失われていた |
| XLSX | 開いたブックの列幅が Excel より狭かった。標準フォントが游ゴシック・MS Pゴシックなどのブックでは約 12%(設定なしで、100% の Excel と同じ幅になった)。150% などの拡大表示での約 5% は、XlsxColumnWidths.MaxDigitWidthMeasurer を設定すると解消する |
| 表示 | Arial など日本語を持たないフォントのセルで、日本語が WinForms では Excel より約 1 割大きく、WPF・Avalonia では別の書体で描かれていた。Excel と同じく MS ゴシックを、セルと同じ大きさで使う |
| 表示 | 隣のセルで止まるはみ出し表示で、Excel では収まる文字が「…」で省略されていた(止めたセルの手前まで描くようにした) |
| 編集 | セルを編集して何も変えずに確定すると、行が低くなっていた。1 行の文字を入力して確定したときも、既定の高さより低くなっていた |
| 編集 | WPF でダブルクリックして編集を始めると、クリックした位置から末尾までが選択されていた。3 つのコントロールとも、クリックした位置にキャレットを置いて編集を始めるようにした(WinForms・Avalonia はこれまで末尾から) |
5.0.0 — 2026-08-19
V5(ReoGrid One)の最初の正式版です。V4 との後方互換性はありません (V4 との違い)。
主な内容
| 領域 | 内容 |
|---|---|
| メモリ | 完全仮想化。約 16〜23 B/セル、空セルはコストを持たない |
| スタイル | セル ◁ 行 ◁ 列 ◁ シートの 4 段階継承。同じ書式は自動的に共有 |
| 数式 | 122 関数、依存再計算、クロスシート参照、定義名 |
| 数値書式 | Excel 書式コード(セクション・条件・色) |
| セル型 | 6 種(checkbox / dropdown / progress / button / hyperlink / sparkline) |
| 条件付き書式 | OOXML 準拠フルセット(iconSet 含む) |
| 表示 | 高 DPI、ウィンドウ枠の固定、ズーム、可視範囲だけを描画 |
| 編集 | セル内エディタ(日本語入力・数式の色分け対応) |
| データ | ソート(複数キー)、フィルタ(値リスト・条件)、オートフィル、アウトライン、元に戻す |
| I/O | reogrid-json・CSV・XLSX(ストリーミング)・PDF |
| 印刷 | UI 非依存の改ページエンジンを PDF / WinForms / WPF で共有 |
| プラットフォーム | WinForms / WPF / Avalonia + ヘッドレス |
パッケージ
unvell.ReoGrid.One / .One.Wpf / .One.Avalonia / .One.Core
(インストール)
今後の対応予定
現時点で未実装の機能です。実装され次第、対応するドキュメントページを追加します。
検討中
| 機能 | 備考 |
|---|---|
| チャート | フローティングオブジェクト基盤が前提 |
| 図形・テキストボックス | 画像は対応済み |
| データバインディング | ヘッドレスコアを前提に設計し直す |
| スレッド形式のコメント | 従来の「メモ」は対応済み |
| セル型の追加 | DatePicker / RadioButton / NumberInput / 画像系 |
既知の制限
| 領域 | 内容 |
|---|---|
| 数式 | 動的配列(spill)— FILTER SORT UNIQUE SEQUENCE LET LAMBDA |
| 数式 | 関数名のローカライズ、PHONETIC |
| 印刷 | 手動の改ページ、印刷範囲のうち特定ページだけの出力 |
| XLSX | 交互行スタイル、分割(非固定)ペイン |
| 元に戻す | アウトライン操作 |
| Avalonia | 印刷(PDF 出力で代替) |
各制限は該当する解説ページにも記載しています。
ライセンスについて
V4 用に発行済みのキーは V5 でもそのまま使えます。再発行は不要です (ライセンスキーの適用)。