v1.1.0
xlsx I/O の再現性とロード性能の向上、および .NET 版と同等のアウトライン読み書きを目的としたメンテナンスリリースです。公開 API に破壊的変更はありません。
✨ ハイライト
- ▸ 大きなファイルの xlsx インポートが約 40% 高速化。 1945×503・約 44 万セルのシートのロードが 6.2 秒から 3.7 秒に短縮。
- ▸ チャンク非同期ロード(
LoadXlsxOptions.chunked)に対応。大きなファイルでも UI が固まらず、初回描画は数秒のフリーズではなく約 40 ms。デフォルトは従来どおり同期。 - ▸ xlsx アウトラインのラウンドトリップ。 アウトラインレベル・非表示・折りたたみ状態・サマリー方向(上下/左右)の読み書きが、.NET 版と同等に。
- ▸ ReoGrid JSON ファイル形式。 セル・スタイル・数値書式・リッチテキスト・結合・罫線・サイズ/表示状態・固定・条件付き書式・アウトライン・フィルター・セルタイプ・保護・交互行を、すべて無損失でシリアライズ。
- ▸ アウトラインサマリー方向。
setRowSummaryBelow/setColumnSummaryRightでトグルボタンをグループの先頭側に切り替え。Excel と同様、アウトラインパネルの最内側に「すべて展開」用のスロットを確保。
+ 追加
- ▸
LoadXlsxOptions.chunked—false(デフォルト・同期)、true(既定バッチサイズでチャンク)、または{ batchSize }でバッチサイズを指定。await ws.loadFromFile(file, { chunked: true })。 - ▸
Worksheet.loadCellsAsync(cells, { batchSize })— バッチ間で yield しながら段階的に描画するチャンク非同期版。デフォルトバッチサイズは 5000 セル。 - ▸ ReoGrid JSON 形式の読み書き API(writer + reader)。
- ▸ 行・列アウトラインの xlsx 読み書きに対応:レベル、非表示、折りたたみ、サマリー方向。
- ▸
WorksheetにsetRowSummaryBelow(value)/setColumnSummaryRight(value)を追加(undo/redo 対応)。 - ▸ 「すべて展開」アウトラインレベルボタン(アウトラインパネルの最内側スロット)。
- ▸
autoFitColumns、autoFitRows、RowHandle/ColumnHandleのautoFit({ mode })にAutoFitMode('fit'|'expandOnly'|'shrinkOnly')を追加。デフォルトの'fit'は従来動作を維持。 - ▸ 条件付き書式
cellIsルールでvalueをvalue1のエイリアスとして受け付けるように。between/notBetweenでは引き続きvalue2が必要。両方指定された場合はvalue1が優先。 - ▸ xlsx インポートで、セル塗りつぶしのテーマカラーと tint を解決。
- ▸ xlsx インポートで、
<fgColor>に加え<bgColor>で表現された dxf 塗りつぶしも読み取り可能に。Excel が書き出した条件付き書式の塗りつぶしが正しく反映されます。 - ▸ Code Runner(コード実行)デモページを追加。
~ 変更
- ▸ xlsx インポート時、アウトラインと条件付き書式を非同期セル読み込みより前に適用。初回描画から正しい折りたたみ状態で表示され、展開後にスナップする挙動を解消。
- ▸ Canvas のフォント文字列に常に汎用
sans-serifフォールバックを付与。指定フォントが未インストール(Office 未導入端末で「Aptos Narrow」を参照する xlsx など)でも、italic/boldプレフィックスが失われなくなりました。
🐛 修正
- ▸ 非表示の行・列に含まれるセルの罫線を描画しないように修正。アウトライングループで A〜J 列を折りたたんだ際に、A 列の左罫線が行ヘッダー境界に縦線として残る不具合を解消。.NET 版と同等の挙動に。
- ▸ xlsx インポート:プレーン共有文字列に対して cellXf/font で指定された太字が正しく描画されるように。従来はすべてのプレーン共有文字列がリッチテキスト扱いとなり、セルレベルのスタイルが無視されていました。
- ▸ 数値書式の条件セクション(
[=0]、[<>N]、[<N]、[<=N]、[>N]、[>=N])を値の型と独立して評価するように修正。[=0]"-";m/d/yyのような書式コードで常に先頭セクションが選ばれる不具合を解消。 - ▸ Excel シリアル日付エポックの 1 日ずれを修正。シリアル 45658 が期待どおり 2025-01-01 に解決されます。
- ▸ xlsx インポート時に、テーマカラー・tint・
<bgColor>で表現された dxf 塗りつぶし(Excel 出力ファイルでは一般的)を解決するように。 - ▸ プレーンテキスト描画経路で複数単語のフォントファミリー(例:「Aptos Narrow」)が二重引用符で囲まれなくなりました。これにより Canvas 2D が
italic/boldプレフィックスを無言で破棄する不具合を解消。 - ▸ 非表示列の列ヘッダーラベルをスキップするように修正。アウトライングループの折りたたみ時に、次の表示列上にヘッダー文字が二重描画されなくなりました。
- ▸ 折りたたまれた親により非表示となったグループのアウトライントグルとブラケット線をスキップ。内側のトグルが外側のトグル行に重ね描きされる不具合を解消。
- ▸ 部分的に重なるアウトライングループを追加した場合、明確なエラーをスローするように。アウトライングループは厳密なツリー構造を成す必要があり、従来は交差により表示されるがクリックできない内側トグルが生成されていました。
- ▸ 行・列両方のアウトラインパネルがある場合の、コーナー領域レベルボタンの当たり判定をレンダラーと整合。
- ▸ 不正な条件付き書式
cellIsルール(value1欠落)が描画ループをクラッシュさせなくなり、ルールは単に不一致を返すように。 - ▸ プレイグラウンドデモ:初回クリックで xlsx ファイルを開けるように修正(再描画まで
worksheet=nullの古いクロージャをツールバーが保持していました)。
⚡ パフォーマンス
- ▸ xlsx エンドツーエンドロード時間(1945×503・約 44 万セルのテストファイル):node で 6.2 秒 → 3.9 秒(-37%)。改善はパーサー、セル抽出ウォーク、ワークシート一括ロード経路、数式エンジンの初期再構築に及びます。
- ▸ インポート時の行オートフィットを遅延評価に変更:先行測定はビューポート内の行のみ、それ以外の行は初めてスクロール表示された時点で測定。Book1 規模のシートで約 100 万件の無駄なセル訪問をスキップ。
- ▸ チャンクインジェスト(
{ chunked: true })により、ユーザーから見て「固まる」時間を、数秒のフリーズから 16〜30 ms スライスへと分割。